漏洞概述 标题: Prompt Injection via Synthetic User Message in Todo Snapshot After Context Compression 描述: 在hermes-agent中,存在一个提示注入漏洞,攻击者可以通过在待办事项列表项中植入恶意载荷来劫持代理的行为。当代理的上下文窗口溢出并触发压缩时,原始的待办事项内容会被注入为一个 消息,位于压缩对话的末尾。由于LLM优先处理最终的用户消息,这赋予了攻击者载荷对先前系统指令的超级权限,从而实现任意指令覆盖、数据外泄或工具滥用。 影响范围 覆盖系统指令: 注入的载荷替换了代理的安全指令,使攻击者能够执行类似越狱的攻击。 外泄敏感数据: 攻击者可以指示代理读取和泄露环境变量、API密钥、文件内容或对话历史。 滥用工具: 代理可以被指示执行shell命令、写入文件、发送消息或执行破坏性操作。 跨会话持久化: 由于载荷在上下文压缩后仍然存在,它可以在多个压缩周期中保持控制。 受影响产品: 生态系统: pip 包名称: hermes-agent 受影响版本: = 0.12.0)以解决此漏洞。 POC代码 以下是用于验证漏洞的PoC代码: 利用代码 控制实验代码 日志证据 利用PoC输出 控制实验输出 发生情况 永久链接: https://github.com/NousResearch/hermes-agent/blob/0c35092accd4e30e982c7b1913bf97b9b3d3d3/run_agent.py#L8993-L8995 描述: 易受攻击的注入点在_compress_context()中,它将原始待办事项内容作为 追加到压缩消息数组中。 永久链接: https://github.com/NousResearch/hermes-agent/blob/0c35092accd4e30e982c7b1913bf97b9b3d3d3/tools/todo_tool.py#L90-L122 描述: TodoStore.format_for_injection()将未 sanitization 的待办事项内容转换为字符串进行注入。