tamperproof
一个Claude Code插件,旨在防止AI Agent修改受保护的测试文件,通过白名单机制限制shell命令对特定路径的写入操作
时间轴 (近 90 天)
Mattbusel/tamperproof 是一个 Claude Code 插件,用于阻止 agent 修改自身的测试文件
tamperproof v0.1.1 把原本的写入类命令黑名单替换成了白名单
该守卫的核心逻辑是对每个 token 调用 existsSync(resolve(cwd, piece)) 来检查字面 token 是否对应真实存在的文件
实测中命令 sed -i s/5/-1/ test/calc.test.mjs 返回 exit 2 被拦截,而使用 glob 通配符、花括号展开或 $PWD 变量的等价变体均返回 exit 0 绕过守卫
该守卫在裁决层默认拒绝,但在选择器层默认放行,而选择器是攻击者命令字符串能驱动的那层
守卫的 writesOut 判断使用 />/.test(seg),导致 grep 模式中的箭头 => 被误判为重定向,cat ... > /dev/null 也被误拦截
应对将被写入的对象本身提问,而非对命名它的字符串提问,以修复此类绕过漏洞
把 glob 形状的 token 当作命中处理能堵上漏洞,但也会误伤从 shell 中新写入的合法测试文件,这是真实存在的张力
tamperproof 的二十个测试用例全部命名了路径,用例数量不等于覆盖率声明
全部知识事实 (9)
Mattbusel/tamperproof 是一个 Claude Code 插件,用于阻止 agent 修改自身的测试文件
50%待验证tamperproof v0.1.1 把原本的写入类命令黑名单替换成了白名单
50%待验证该守卫的核心逻辑是对每个 token 调用 existsSync(resolve(cwd, piece)) 来检查字面 token 是否对应真实存在的文件
50%待验证实测中命令 sed -i s/5/-1/ test/calc.test.mjs 返回 exit 2 被拦截,而使用 glob 通配符、花括号展开或 $PWD 变量的等价变体均返回 exit 0 绕过守卫
50%待验证该守卫在裁决层默认拒绝,但在选择器层默认放行,而选择器是攻击者命令字符串能驱动的那层
50%待验证守卫的 writesOut 判断使用 />/.test(seg),导致 grep 模式中的箭头 => 被误判为重定向,cat ... > /dev/null 也被误拦截
50%待验证应对将被写入的对象本身提问,而非对命名它的字符串提问,以修复此类绕过漏洞
50%待验证把 glob 形状的 token 当作命中处理能堵上漏洞,但也会误伤从 shell 中新写入的合法测试文件,这是真实存在的张力
50%待验证tamperproof 的二十个测试用例全部命名了路径,用例数量不等于覆盖率声明
50%