阻止AI代理通过自身内存被武器化(OWASP)
OWASP发布了Agent Memory Guard,这是一个开源运行时防御层,可防止AI代理内存中毒攻击。它介于代理和内存存储之间,通过一系列检测器和YAML策略监控读写操作。基准测试显示召回率92.5%,精确率100%,零误报,中位延迟59微秒。
2026年6月1日,OWASP发布了Agent Memory Guard,这是一个开源运行时防御层,旨在防止AI代理内存中毒攻击。AI代理在会话之间保持记忆,包括对话历史、向量存储、草稿板和RAG索引。攻击者可以在这些存储中植入恶意文本,从而覆盖代理指令、提取用户数据或操纵未来的工具调用,且效果会跨会话持续。
Agent Memory Guard作为代理与其内存存储之间的中间层,通过一系列检测器和YAML策略监控每一次读写操作。它包含五种核心检测类别:SHA-256基线识别不可变键的篡改;内置检测器查找提示注入标记、秘密和PII泄露、受保护键修改以及大小异常。YAML策略将每个发现映射为允许、编辑、隔离或阻止等操作。每个决策都会生成结构化的SecurityEvent,并且时间点快照允许操作者将内存回滚到已知良好状态。该工具还提供了LangChain的集成聊天历史类和用于筛选模型输入、输出及工具输出的中间件包。
基准测试在五个检测器上运行了55个测试用例,包括40个攻击载荷(覆盖四类)和15个良性样本。召回率达到92.5%,精确率100%,误报率为零,中位延迟仅59微秒。提示注入和受保护键篡改的检出率均为100%,敏感数据泄露为83%,大小异常为80%。混淆矩阵显示37个真阳性、3个假阴性、零假阳性。
项目创建者Vaishnavi Gudur向Help Net Security透露,敏感数据类别的两个漏报是由于API令牌长度略超出固定长度正则表达式模式:一个GitHub个人访问令牌在ghp_前缀后有37个字符(检测器预期36个),一个Google API密钥在AIza前缀后有38个字符(预期35个)。泄露检测器使用固定长度量词,这是为了优先保证精确率并减少随机字母数字字符串的误报,但代价是在提供商扩展令牌格式时失效。第三个漏报是一个嵌套JSON结构序列化为58,913字节,刚好低于64KB阈值。Gudur表示,更高召回率的正则表达式变体和自适应阈值校准计划在v0.3.0中推出。
由于代码开源且YAML策略可见,攻击者可以读取规则。但受保护键检查基于键路径,了解规则也无法绕过;SHA-256完整性会对任何篡改产生确定性不匹配。敏感数据匹配更易暴露,因为base64编码、字符拆分或同形字可以绕过缺乏归一化的检测器。计划中的自适应规避测试将增加基于已知规则的规避感知载荷集。防御方面,v0.4.0将添加基于语义特征的ML异常检测,v0.3.0将添加自定义检测器的插件接口,这些可避开公开YAML。
Gudur表示,GitHub Copilot用于测试设置、CI/CD配置和pyproject.toml文件等样板代码,以及正则表达式草稿和README部分。检测器管道架构、策略引擎分离、MemoryStore协议、快照和回滚机制以及源类来源系统均针对OWASP ASI06威胁模型进行人工设计。40个基准测试载荷也由人工整理。她强调,智力贡献在于识别攻击面、设计防御并针对精心策划的对抗语料库进行验证,而使用Copilot编写样板是标准实践。
OWASP Agent Memory Guard已在GitHub上免费提供。