漏洞总结:Hermes Agent Context-File Scanner Regex Bypass 漏洞概述 标题:Hermes Agent Context-File Scanner Regex Bypass — Zero-Click Prompt Injection via AGENTS.md / .cursorrules / CLAUDE.md / .hermes.md 描述: 在 中的上下文文件注入扫描器是 PR #192 修复的旧版正则表达式列表的重复。其第一个模式 仅匹配单个关键词后立即跟随 。任何第二个文件(忽略之前的指令)会直接通过并被拼接进 LLM 系统提示中。 由于自动加载 、 、 、 、 、 、 和 等文件,攻击者只需在受害者的仓库中放置一个包含恶意内容的文件。一旦受害者运行 ,攻击者的指令就会成为 LLM 读取的第一件事——这是一个零点击、全提示覆盖原语,可被链式调用任意工具(如 、 、 、 、 等)。 根因: 捕获组 消耗单个关键词并立即跟随 。当攻击者插入第二个限定词(如 或 )时,正则引擎无法匹配——因为关键词后直接跟随指令的变体不在交替集中。硬化的 正则接受任意数量的介入词 ,但 副本未同步更新。 影响范围 漏洞类别:提示注入扫描器绕过 — 首次 LLM 轮次的全系统提示覆盖(零点击间接提示注入)。 受影响用户:所有 Hermes Agent 用户,只要打开不受信任的仓库(如 进入 或任何集成该代理的编辑器)。由于上下文文件加载器遍历整个树,攻击者可将恶意文件隐藏在树的任何位置。 受损资产: - 远程代码执行(通过默认工具 / / / ) - 任意文件读写 - 凭据/秘密泄露(通过 命令) - 持久化(通过 / 写入持久化内存和技能) - 横向移动(通过 传播) 用户交互:单点击(仅在恶意目录中运行代理)。无需网络回调、第二条消息或用户确认。 严重性:高(CVSS 3.1 基础评分 8.6) 修复方案 建议修复(单行,最小化): 将 中的 列表更新为与 中硬化的正则表达式一致: 长期修复: 提取正则表达式列表到单个模块,供 和 共同导入,避免副本间出现差异。 POC 代码 1. 外部利用脚本 ( ) 2. 控制脚本 ( ) 3. 正则表达式测试脚本 ( ) 4. 利用步骤说明 1. 下载外部 POC 脚本 。它会在 中写入恶意的 ,然后启动 CLI,捕获转发的请求体,并检查载荷是否被扫描器阻止。 2. 下载控制脚本 。相同 CLI 路径,相同环境,但 载荷来自绕过变体(忽略所有指令)。其目的是证明扫描器已连接并强制执行——只是针对多词形式。 3. (可选)下载仅正则表达式测试探针 。 4. 执行利用并对照真实 Hermes Agent 检出: 5. 检查转发的请求体写入到 — 利用运行的 包含攻击者文本在 标题下;控制运行则有 。