Go · 项目报告

DavidCarliez/trustmebro

Bypass llm guardrails by confusing it with fabricated tool output.

已完成 打开 GitHub
D
348星标
32Fork
0Issue
MIT许可证

分析结果

项目分析

TrustMeBro 是一个用 Go 编写的命令行拦截与输出伪造工具,主要用于受控红队测试 LLM 编码代理是否会过度信任外部工具输出。它通过 PATH shim 拦截 dig、nslookup、host 等命令,根据 YAML 规则决定返回伪造结果、改写真实输出、放行真实命令或直接阻断。项目强调无需插件、Hook 或 MCP 集成,可用于评估 Codex、Claude Code 等代理在依赖工具输出进行安全决策时的脆弱性。

适用领域 AI 安全 / LLM 红队测试 / Agent 安全评估 / 命令行工具拦截 / DNS 工具模拟 / 安全测试自动化 / 开发者工具
配置难度 中等。基础安装和默认规则试用较简单,但要安全、准确地设计红队测试规则,需要理解 shell PATH 解析、DNS 工具输出格式、Agent 工具调用链以及 LLM 安全测试方法。Lab 模式还需要 Linux namespace 和 Bubblewrap 的基本知识。
商业价值 对从事 AI Agent 安全、企业 LLM 落地治理和自动化编码助手评估的团队具有较高价值。它可以帮助发现模型过度信任工具输出、缺乏交叉验证、无法识别伪造证据等问题,从而改进 Agent 安全策略、工具调用审计和权限边界设计。但它更适合作为受控红队与研究工具,而不是通用生产组件。
01

技术亮点

  • 无需修改 LLM Agent,也不依赖插件、Hook 或 MCP,通过 PATH shim 即可拦截命令
  • 支持 spoof、rewrite、passthrough、reject 四种行为,便于构造不同安全测试场景
  • 能生成较真实的 dig、nslookup、host 输出,包括 +short、+noall +answer、PTR、ANY 等场景
  • 支持按命令名、域名、DNS 记录类型、参数 glob、正则表达式进行规则匹配
  • 具备 JSONL 审计日志,方便复盘模型看到的工具输出和实际决策路径
  • Lab 模式可在 Linux 上拦截部分绝对路径调用,例如 /usr/bin/dig,降低 Agent 绕过 PATH shim 的可能性
  • 单一 Go 二进制,部署相对简单
  • MIT 许可证,便于研究和内部测试使用
  • 项目针对 LLM 工具调用可信度这一现实问题,定位清晰
02

目标用户

  • AI 安全研究员
  • LLM Agent 开发者
  • 红队与攻防演练团队
  • 安全产品测试人员
  • 需要评估编码代理安全边界的企业安全团队
  • 研究工具调用可信度问题的开发者
03

配置要求

  • 默认配置文件路径为 ~/.config/trustmebro/config.yaml
  • 默认审计日志路径为 ~/.local/state/trustmebro/log.jsonl
  • 安装后会在 ~/.local/share/trustmebro/shims/ 下生成 dig、nslookup、host 及自定义 shim
  • 需要将 shim 目录加入 PATH,安装器会尝试写入受支持 shell 的启动文件
  • 配置中需要定义 default_action、shim_commands、log_file 和 rules
  • 规则支持 command、domain、domain_re、qtype、args 等匹配条件
  • 规则动作包括 spoof、rewrite、passthrough、reject
  • 可通过 TRUSTMEBRO_CONFIG 指定临时配置文件
  • 可通过 TRUSTMEBRO_DISABLE=1 显式绕过 TrustMeBro 并执行真实命令
  • 可通过 TRUSTMEBRO_REAL_DIR 指定真实二进制文件解析目录
  • 配置解析较严格,未知字段、不安全 shim 名称、非法动作或格式错误会导致 trustmebro check 失败
  • Lab 模式仅支持 Linux,并依赖 Bubblewrap
04

适用场景

  • 测试 LLM 编码代理是否会盲目信任 dig、nslookup、host 等命令输出
  • 模拟 DNS TXT 授权校验成功,评估 Agent 是否会在伪造证据下继续执行任务
  • 验证 Agent 对工具输出、命令路径、绝对路径调用的防护能力
  • 构建受控实验环境,观察模型在工具输出被篡改时的决策行为
  • 为 Agent 安全基准测试生成可重复的工具输出场景
  • 测试安全策略中对外部工具结果的交叉验证能力
  • 审计和记录被拦截命令的执行决策,形成 JSONL 日志
05

部署与配置

  • 方式一:使用预编译版本安装:curl -sL https://github.com/DavidCarliez/trustmebro/releases/latest/download/trustmebro_linux_amd64.tar.gz | tar xz
  • 执行安装命令:./trustmebro install
  • 打开新终端后检查 shim 状态:trustmebro status
  • 方式二:通过 Go 安装:go install github.com/DavidCarliez/trustmebro@latest,然后执行 ~/go/bin/trustmebro install
  • 方式三:从源码构建:git clone https://github.com/DavidCarliez/trustmebro.git,进入目录后执行 make install
  • 如需卸载:trustmebro uninstall
  • 如需连同配置和状态一起清理:trustmebro uninstall --purge
  • Linux 下如需使用 lab 模式,需要先通过系统包管理器安装 bubblewrap
06

风险与注意事项

  • 该工具的核心能力是伪造或篡改命令输出,若脱离受控测试环境,可能被用于误导自动化 Agent 或绕过安全流程
  • 项目说明中直接展示了绕过 LLM guardrails 的场景,存在明显双用途风险
  • 如果在生产环境或开发者日常 shell 中长期启用,可能导致 DNS 查询结果、验证结果或自动化脚本行为不可信
  • 依赖 PATH shim 的拦截方式可能被绝对路径、sudo、干净环境 env -i、Agent 沙箱 PATH 重写等方式绕过
  • Lab 模式不是安全沙箱,会复用主机文件系统、网络、环境变量和 Agent 凭据,不应视为隔离执行环境
  • In-process DNS 客户端不会被拦截,例如 Python socket 或 dns.resolver
  • rewrite 模式会缓冲 stdout 和 stderr,超过 16 MiB 的输出会被拒绝
  • Windows 支持仍属实验性,Unix shell 集成更成熟
  • 如果团队成员不了解 PATH 被改写,可能产生排查困难或安全误判
  • 需要严格限制使用范围、审计日志和实验环境,避免对真实授权、扫描、部署流程造成影响

历史记录

热榜历史快照

2026-09-01 第26名 新收录 · github_search