safe-exec

🛡️ LLM命令执行的防注入护盾

专为LLM Agent设计的Shell命令安全包装器,通过密码学随机UUID边界机制防御提示词注入攻击,确保外部不可信数据被安全隔离解析。

收藏
13.6k
安装
3.4k
版本
v0.3.4
CLS 安全性认证2026-05-07
点击查看完整报告 >

使用说明

核心用法

Safe Exec 是一个轻量级的 Bash 脚本工具,用于包装可能产生不可信输出的 Shell 命令。用户只需在原有命令前添加 safe-exec 前缀即可启用防护,例如 safe-exec curl -s "https://api.example.com/data"。工具会自动生成随机 UUID 作为安全边界标记,将命令输出包裹在 <<<STDOUT:UUID>>>><<<END_STDOUT:UUID>>>> 等标记之间,并在输出前插入安全规则说明,指导 LLM 正确识别可信与不可信内容。

显著优点

专精的防护机制:针对 LLM Agent 场景中最危险的提示词注入攻击设计,UUID 的 2^122 种可能使攻击者无法伪造边界标记,从根本上阻断注入路径。

零侵入集成:无需修改现有命令或脚本,仅需添加前缀即可启用;输出格式清晰,便于 LLM 解析和遵循安全规则。

极简依赖:仅依赖系统标准工具(bash、uuidgen/cat/printf),无第三方库,兼容性强,易于部署到各类 Unix-like 环境。

透明可审计:代码仅约 60 行,逻辑完全公开,安全研究人员和开发者可快速验证其安全性。

潜在缺点与局限性

认知门槛:用户和 LLM 都需要理解 UUID 边界机制才能发挥防护效果,若 Agent 的 system prompt 未明确说明规则,防护可能失效。

仅保护解析阶段:工具不阻止命令本身的执行风险(如 rm -rf /),仅确保输出被正确标记为不可信数据,命令注入仍需通过其他手段防范。

无内置持久化:每次执行生成新 UUID,虽增强安全性,但也意味着无法建立跨会话的持久化信任边界。

Bash 环境依赖:Windows 原生环境需借助 WSL 或 Git Bash 等工具才能使用。

适合的目标群体

  • LLM Agent 开发者:构建自主执行 Shell 命令的 AI 系统时,作为标准安全基础设施集成
  • DevOps/SRE 工程师:在自动化脚本中安全地调用外部 API 或查询云服务 CLI
  • 安全研究人员:研究 LLM 提示词注入防御机制的参考实现
  • AI 应用团队:需要处理用户生成内容或第三方数据的 RAG、代码分析等场景

使用风险

性能开销:UUID 生成和边界包装引入微小延迟,高频调用场景需评估影响;流式大输出时边界标记增加约 200 字节开销。

误用风险:用户可能错误地将 safe-exec 用于完全可信的本地命令,造成不必要的处理;或在需要时忘记使用,留下防护缺口。

依赖可用性:若目标系统缺少 uuidgen/proc/sys/kernel/random/uuid 不可访问,会回退到 Python uuid4,极端受限环境可能失败。

Agent 兼容性:部分 LLM 可能对大量边界标记产生困惑,需在 system prompt 中明确训练模型识别和遵守这些标记。

安全解读

核心用法

safe-exec 是一个 shell 命令包装器,通过密码学随机 UUID 边界标记来隔离不可信命令输出,防止提示词注入攻击对 LLM Agent 的操控。

典型使用场景:

  • 外部 API 调用(curl、wget、httpie)
  • 读取用户生成或不可信文件
  • CLI 工具查询外部服务(gh、glab、aws)
  • 任何可能返回注入内容的命令

使用方式:

safe-exec curl -s "https://api.example.com/data"
safe-exec python3 fetch_external.py
safe-exec gh issue view 123 --repo owner/repo

工作原理:
1. 生成随机 UUID(2¹²² 种可能,不可预测)

2. 输出安全序言,明确告知模型边界规则

3. 使用 <<<STDOUT:uuid>>><<<END_STDOUT:uuid>>> 包裹命令输出

4. 报告退出码

显著优点

  • 安全机制可靠:UUID 不可猜测,攻击者无法伪造闭合标记
  • 零依赖设计:仅使用系统标准工具(uuidgen、python3、cat、printf),无供应链攻击风险
  • 透明度高:安全序言优先展示,模型先读规则再读数据
  • 轻量易集成:单文件脚本,复制到 PATH 即可使用
  • 来源可信:GitHub 公开仓库,T2 级来源可信度,代码可审计

潜在局限

  • 不防恶意命令本身:skill 执行用户传入的命令,若用户主动输入 rm -rf / 等危险指令仍会执行(这是用户控制行为,非 skill 缺陷)
  • 无交互式支持:复杂管道、重定向、交互式命令的配合需额外测试
  • 许可证未明确:当前未指定开源许可证,合规性待完善
  • 仅限输出隔离:仅保护 LLM 不被输出内容欺骗,不解决命令执行本身的安全问题

适合人群

  • 开发 LLM Agent 的工程师,需要安全执行外部命令
  • 使用 AI 编程助手的开发者,经常让 AI 调用 curl、API 等
  • 需要读取不可信日志、用户生成文件的场景
  • 关注提示词注入防护的安全意识用户

常规风险

  • 误用风险:用户可能误以为此工具能阻止危险命令执行,实际上它只隔离输出内容
  • 边界失效:极少数情况下,若命令输出恰好包含真实 UUID 格式字符串,可能干扰解析(概率极低:1/2¹²²)
  • 兼容性:部分旧系统可能缺少 uuidgen,需回退到 Python 实现
  • 社会工程:攻击者可能诱导用户不使用 safe-exec 而直接执行命令

safe-exec 内容

scripts文件夹
手动下载zip · 2.7 kB
safe-exec.shtext/x-shellscript
请选择文件