受信任的钩子仍然可以运行代理的代码

Reddit r/AI_Agents 新闻

摘要

一篇文章表明,信任 Git 的 pre-commit 钩子文件,并不意味着它启动的代码也值得信任——钩子可以调用 package.json 中的 npm 脚本,而这些脚本可能已被智能体修改,从而使代码能够在智能体环境之外执行。该演示使用普通的 Git for Windows,未直接测试任何智能体沙箱。

在 DEV 上题为“你的代码仓库不是可信上下文”的讨论中,Carlos(Bloqarl)问道,如何让智能体提交代码,同时不赋予它对共享 Git 配置的写入权限。这场讨论揭示了另一个问题:选择一个可信的钩子文件,并不意味着它启动的代码也可信。pre-commit 钩子可以位于检出目录之外,却仍然运行 npm test。该命令从检出目录中的 package.json 获取测试脚本,而智能体可能已经修改了脚本和测试。因此,将提交操作移到智能体环境之外,也可能会将这些改动的执行移到该环境之外。我们发布的文章使用原版 Git for Windows 2.52.0 和 2.56.0 报告了这一问题。测试脚本代替了智能体;我们没有测试任何编程智能体沙箱。讨论还纠正了此前的一项说法,即使用 main 分支的钩子就能解决这个问题。我不会把对钩子文件的成功检查视为对它所调用的一切内容的检查。当你审查智能体的代码差异时,你会沿着提交钩子追踪到软件包脚本和可执行配置,还是只检查钩子本身?利益披露:我在 Mnemoverse 工作。本文由 AI 根据我们公开发布的文章和相关讨论改编,并非一项新实验。
查看原文

相似文章