做了一个给 AI 智能体做实时安全拦截的开源工具,欢迎来喷

4 月 6 日
 one121121
起因是我在用 Claude Code 的时候,突然意识到这东西有完整权限在我电脑上跑,我完全不知道它下一步会干什么。

现在 Claude Code 、Cursor 这类智能体工具越来越能干,能直接操作文件、跑脚本、调接口。但出事了怎么办?强制删除系统文件跑了,密钥泄了,一步步看起来没问题的操作组合成了数据外泄链路……

然后就做了这个: https://github.com/chenglin1112/AgentTrust

简单说就是在智能体和工具之间加一层保护,每个操作执行前先过安全检查,拦得住就拦,拦不确定就让语言模型来判断,判断有风险就锁住,顺带告诉你怎么改。

比较有意思的功能是攻击链检测——单独看「读取配置文件」没问题,单独看「发请求到外部地址」也没问题,但两步连起来再加个编码操作就是数据外泄,会被识别并拦截。

现在已经支持协议原生接入,Claude Code 和 Cursor 配置很简单。

还很早期,测试集是合成数据,生产环境没验证过。但如果你在跑智能体,可以试试,欢迎来找茬。

Python 3.9 以上,Apache 2.0 协议。
1663 次点击
所在节点    程序员
11 条回复
beyondstars
4 月 6 日
我记得这类 agent 软件支持设置为每一步操作都经过 approve 的吧
libii
4 月 6 日
思路跟我开发的 github.com/kocort/kocort 很类似哦,策略工具可以直接改用一个本地模型做拦截
one121121
4 月 6 日
@beyondstars 对,他们确实有逐步审批模式,但有两个场景它处理不了:一是自动化流水线里没有人在盯着批准;二是单步看起来完全正常、人也会批准,但跨多步组合起来是攻击链。AgentTrust 主要解决的是这两块,尤其是第二个——语义层面的多步风险识别,纯审批模式识别不出来。
one121121
4 月 6 日
@libii 去看了一下,确实有不少相似的地方!我这边目前侧重的是规则引擎 + 语言模型兜底的混合判断,以及跨会话的攻击链检测。你用本地模型做拦截这个思路很有意思,延迟和隐私方面会有优势。有机会可以交流一下。
blueskeay
4 月 6 日
语言模型兜底的情况下有对缓存做什么处理吗
比如上次请求体是 100K ,这次是 110K 只有 10K 的新 token ,这个情况能处理吗
one121121
4 月 6 日
@blueskeay 目前没有专门针对这个场景做缓存优化,AgentTrust 本身是无状态的拦截层,每次请求独立处理。
你说的这个场景如果接入了 Anthropic 或 OpenAI 的提示词缓存,缓存命中的部分理论上不重复计费,但 AgentTrust 这层目前没有感知缓存状态的机制,也没有做增量 token 的差分识别。
这其实是个值得做的方向 感谢提出这个问题!!!
one121121
4 月 6 日
@blueskeay 刚针对这个场景做了更新,现在支持增量感知——会对比前后两次请求体,只对新增的 token 部分做安全评估,避免重复分析整个上下文。欢迎试试看,有问题随时反馈。
vt2rexm
4 月 6 日
大意是用 AI 去审核 AI 吗?
对于有着能够篡改/攻破 claude code 能力的威胁模型来说大概率也是能够篡改/攻破你的这个产品的。
one121121
4 月 6 日
@vt2rexm 这个问题问到点上了。用语言模型兜底确实存在被对抗样本绕过的风险,这不是能完全否认的。
但当前架构的设计思路是分层防御:规则引擎是第一道关,不依赖语言模型,纯模式匹配,攻击者没办法用提示词注入绕过它;语言模型只在规则判断不确定的模糊地带才介入,不是唯一防线。
你说的场景也正是这个方向下一步需要研究的核心问题之一。目前没有完美答案,这也是为什么我把它定位成研究框架而不是生产级安全产品。如果你对这块有想法欢迎开 issue 讨论。
jones2000
4 月 7 日
这种只能从系统底层去 hook 截获, 上层的拦截没什么用。
比如配置好哪些系统的 API 允许调用, 或 API 里面的接口里面的参数在允许阈值内可以调用。直接 hook 系统 API , 如 fopen, fwrite 等等。
如果是往外发送的数据, 本机网络层截获数据,脱敏以后再发送。
找一个开源的杀毒软件,改改应该就可以。
one121121
4 月 7 日
@jones2000 我的项目的价值是在不需要 root 权限、不修改系统的前提下,在语义层面理解操作意图,两者是不同层次的防御,可以互补,不是非此即彼。你说的系统层 hook 方向确实更底层更彻底,这是防御纵深里的另一层。但是我的项目的定位不是替代它,而是在应用语义层做补充——系统调用层看不出「读取 .env 然后编码发送」是一条攻击链,但语义层可以。两层结合才是完整的防御体系。你提的网络层脱敏思路也很有意思,后续可以考虑作为一个集成方向。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1203737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX