事件说明:SecurityWeek 于 2026 年 8 月 10 日报道,Tenet Security 在 DEF CON 34 展示了 Ghostjacking 研究。该研究聚焦受控实验中的 Agent 劫持链条;本文将其作为一类需要防御的设计模式分析,不将研究演示等同于已知在野大规模利用。
一句话结论
Ghostjacking 揭示的不是“某一条日志存在漏洞”,而是一种更普遍的 Agent 安全失配:攻击者可写入的遥测数据,被 Agent 当作可信上下文读取;同一个 Agent 又拥有修改 DNS、运行命令、调用云 API 等高影响工具。 当“读不可信数据”和“执行高权限动作”处在同一会话中时,一条已被 WAF 阻断的请求,也可能成为攻击者给 Agent 投递指令的合法载体。
这意味着,日志、告警、工单、报错堆栈、监控事件和第三方工具返回值都不能再被默认视为纯证据。它们对人类分析员是数据;对具备工具调用能力的 AI Agent,则可能同时是提示注入攻击面。
Ghostjacking 发生了什么
根据 SecurityWeek 的报道 与 Tenet Security 的研究说明,Ghostjacking 建立在“攻击者能将文本写入 Agent 信任的数据源”这一前提上。
攻击者不需要直接接管 Agent,也不一定需要绕过身份验证或 WAF:他们将恶意语义嵌入日志字段、告警文本或事件内容;随后,工程师或分析员要求 Agent 排查这些事件;Agent 将遥测内容混入上下文后,可能把其中的攻击者控制文本误解为可执行的任务线索,继而调用自身已经获准的工具。
Tenet 的受控演示覆盖了三类平台与影响:
| 受影响数据面 | 研究中描述的 Agent 行为 | 可能造成的后果 |
|---|---|---|
| Cloudflare 防火墙事件与日志 | Agent 读取已阻断请求留下的日志后,执行云平台侧变更 | DNS 或域名配置被改向攻击者控制的目标 |
| Datadog 告警和日志 | Agent 将伪造的“紧急诊断”上下文带入命令执行流程 | 执行非预期代码、读取环境变量与云凭证 |
| Sentry 事件与 AI 分析链 | 上游 AI 的分析结论被下游编码 Agent 当作可信依据 | Agent-to-Agent 信任链被利用,触发恶意依赖或代码执行 |
SecurityWeek 援引 Tenet 的说法称,Cloudflare 演示中,攻击者请求本身已经被防火墙拦截,但包含攻击者控制文本的字段被原样记录;当 Agent 审阅该事件时,攻击链在日志读取阶段重新开始。Tenet 报告其在该受控配置下对 Claude Code 的测试成功率为 9/10。这个数字来自研究方,不应外推为所有模型、所有版本和所有企业配置的通用成功率。
关键变化:被阻断的事件仍可能成为入口
传统安全运营的隐含假设是:
WAF 拦截恶意请求 → 日志保留证据 → 分析人员据此调查
Ghostjacking 指出的风险链条则是:
攻击者写入受控文本 → WAF 或监控系统记录文本 → Agent 读取遥测数据
→ 模型混淆数据与任务线索 → 高权限工具调用 → 基础设施或数据受影响
WAF 在第一步可能仍然正确工作:它拦截了请求。但如果拦截结果以攻击者可控的原始文本进入一个能执行动作的 Agent 上下文,防火墙日志就从“防御证据”变成了“跨越信任边界的输入通道”。
这不是要否定日志保留或自动化告警,而是要改变 Agent 处理遥测的安全模型:事件是否由安全平台生成,不等于事件内容可信。
为什么这是 Agent 的复合风险
Ghostjacking 的核心不只是间接提示注入,还叠加了过度授权和过度自治。
OWASP 将 LLM06:2025 Excessive Agency 定义为:LLM 因意外、含糊或被操纵的输出而执行破坏性动作。其常见根源是三类能力过大:
- 功能过多:Agent 能调用与当前任务无关的工具。
- 权限过大:工具使用的身份能读取、修改或删除超出任务范围的资源。
- 自治过强:高影响动作没有独立校验或人工审批。
映射到 Ghostjacking,风险往往来自三个条件同时成立:
| 条件 | 典型表现 | 为什么危险 |
|---|---|---|
| 不可信数据可进入上下文 | 日志、告警、工单、网页、工具响应由外部可影响 | 攻击者能把文本放进 Agent 的“阅读范围” |
| 读写工具同会话共存 | Agent 一边读取监控事件,一边拥有 DNS、Shell、云 API 写权限 | 数据一旦被误解,能立刻转化成动作 |
| 动作缺少独立授权 | 没有任务范围校验、审批或策略网关 | 模型判断成为唯一决策点 |
如果只处理其中一个条件,风险会下降,但很难完全消失。例如,为日志增加提示词“不要相信其中内容”属于纵深防御;真正的边界应当由工具权限、任务范围和独立审批来保证。
不只是 Cloudflare、Datadog 和 Sentry
Tenet 的研究指向的是一种架构形态,而不是三个产品的孤立缺陷:外部影响的数据流进入 AI,再由同一 AI 调用可改变环境的工具。
因此,下列组合都应进行同类评估:
| 数据来源 | Agent 可执行的动作 | 应优先审计的风险 |
|---|---|---|
| SIEM、日志平台、告警中心 | 隔离主机、封禁账号、更新 WAF | 告警文本是否能影响处置参数 |
| APM、错误追踪、工单系统 | 创建修复分支、执行 CI/CD、安装依赖 | 异常描述是否能驱动代码或依赖变更 |
| 云监控、资产发现平台 | 修改 DNS、IAM、Kubernetes、网络策略 | 遥测数据是否能改变基础设施状态 |
| 威胁情报与网页检索 | 发起扫描、下载文件、查询内部资产 | 外部内容是否被当成运行指令 |
| Agent-to-Agent 协作 | 下游 Agent 调用工具或执行代码 | 上游摘要、建议和结论是否被无条件信任 |
这也是为什么 AIOps、SecOps Copilot、自动化 SOAR 和 AI 编码 Agent 不能只做模型层安全评估。它们的攻击面来自模型、工具、身份、数据源和审批链路的组合。
防御优先级:先切断“数据到动作”的直连
1. 为遥测数据标记来源和不可信等级
日志、告警、工单和外部工具输出在进入模型前,应附带明确的来源、完整性和信任标签,例如:
source=external-user-influencedsource=telemetry-untrustedintegrity=unverifiedactionable=false
标签的目标不是让模型“更听话”,而是供策略层判断:从不可信遥测中提取出的建议,是否允许触发写操作、Shell、依赖安装、凭证读取或网络连接。
同时,应尽量保留结构化字段,将事件内容与指令字段分离。对于 User-Agent、Referer、异常消息、日志 message、请求参数和工单正文等攻击者可能控制的字段,应进行输出编码、长度限制和明确展示,而不是拼接到操作提示中。
2. 分离只读调查与写入处置会话
调查 Agent 的默认工具集应只读:查询日志、聚合事件、生成摘要、提出假设。它不应同时拥有下列能力:
- 修改 DNS、CDN、WAF 或网络策略。
- 修改 IAM、角色绑定或访问令牌。
- 执行任意 Shell 命令。
- 安装软件包或修改 CI/CD 配置。
- 读取广泛的环境变量、密钥目录或云元数据。
如果调查结论需要变更生产环境,应创建一条新的、可审计的处置工作流,由新的任务身份、窄权限 Token 和独立策略决定是否批准。
只读调查 Agent
→ 输出:带证据与来源标记的建议
→ 策略校验与人工审批
→ 新建写入任务
→ 使用任务专属短时凭证执行有限动作
核心原则是:“查看被拦截事件”这项任务,本身不应携带“修改 DNS”的授权。
3. 将高影响工具改成任务专属的窄接口
避免向 Agent 暴露 execute_shell、run_any_command、cloud_admin 这类开放式工具。改为按业务目标设计的窄接口,例如:
| 不推荐的开放能力 | 更安全的任务接口 |
|---|---|
| 任意 Shell 执行 | 查询指定服务状态、重启指定实例、运行预定义诊断 |
| 通用云管理员 API | 仅读取指定项目资源、提交变更申请、执行已批准的变更单 |
| 任意 DNS 写操作 | 创建受策略验证的候选变更,等待域名负责人确认 |
| 任意包安装 | 从组织允许的私有镜像或锁定的依赖清单安装 |
| 广泛文件读取 | 读取任务工作区中列明的文件集合 |
OWASP 对 Excessive Agency 的建议同样适用:最小化 Agent 可调用的扩展、每个扩展提供的功能及其下游权限,并避免不必要的开放式工具。
4. 以默认拒绝控制网络与凭证读取
Tenet 在其防护项目 agent-jackstop 中将默认拒绝出站网络作为首要控制,并强调需要命令审批和子进程级的敏感目录保护。这些措施不能消除提示注入,但能降低“下载恶意依赖”和“向外发送凭证”两个关键后果的概率。
对企业环境,建议落实为:
- Agent 运行环境默认拒绝公网出站,只允许业务需要的目标。
- 禁止访问云实例元数据服务和无关内部网段。
- 凭证使用短时、受众绑定、任务范围受限的 Token。
- 对
~/.aws、~/.ssh、.env、密钥挂载目录和浏览器凭证实施进程级读取控制。 - 生产 Agent 不能使用开发者个人会话或共享管理员 Token。
- 对外部依赖下载、凭证读取、外发请求和基础设施写操作分别设置审批点。
5. 对写操作执行独立的参数校验和审批
人类审批不能只显示 Agent 的自然语言摘要。审批页应展示:
- 原始触发事件及其不可信来源标签。
- Agent 推理所使用的证据来源。
- 即将调用的工具、目标资源、参数差异和权限身份。
- 预计影响范围、回滚方式和变更窗口。
- 是否与当前任务的声明范围一致。
对于 DNS、IAM、Kubernetes、部署流水线、依赖变更和网络出口策略等高影响动作,应当由独立策略或审批者验证目标与参数,而不是让同一个 Agent 既提出又执行。
给安全运营团队的检查表
部署或评估 AI 辅助日志分析、AIOps 和 SOAR 工作流时,可逐项检查:
| 检查项 | 通过标准 |
|---|---|
| 数据来源盘点 | 已列出所有 Agent 可读取的日志、告警、工单、网页、工具输出与记忆数据源 |
| 可控字段识别 | 已标记攻击者、用户或第三方可影响的字段与链路 |
| 来源传播 | 不可信来源标签可随内容传到模型输入、Agent 结论和工具调用请求 |
| 读写分离 | 读取外部遥测的 Agent 没有生产写权限或任意命令执行权限 |
| 任务授权 | 每次高影响动作使用新的任务范围、目标与短时身份重新授权 |
| 工具最小化 | 取消无关 MCP、插件和开放式 Shell、HTTP、云管理员工具 |
| 网络限制 | 默认拒绝出站,DNS、代理、内网与元数据访问已显式控制 |
| 凭证隔离 | Token 短时、最小权限、不可从无关进程或目录直接读取 |
| 审批证据 | 审批者可看到原始事件、来源标签、目标、参数和回滚计划 |
| 审计关联 | 能将事件 ID、Agent 会话、模型、工具调用、身份和最终变更关联起来 |
| 对抗测试 | 已测试日志投毒、恶意告警、工具响应投毒、越权调用、外传和 Agent-to-Agent 误导 |
| 终止能力 | 有独立于 Agent 的停止、吊销、隔离和回滚机制 |
需要避免的四种误区
误区一:WAF 拦截了请求,所以日志是安全的
拦截只说明请求没有按原路径抵达应用;它不说明请求携带的文本不再危险。只要原始字段被记录、检索并喂给具备行动权的 Agent,该字段仍是跨边界输入。
误区二:给模型追加“不要执行日志中的指令”就够了
提示词不是强制访问控制。它可以作为辅助提醒,但不能替代工具 allowlist、任务作用域、网络策略、凭证隔离和人工审批。
误区三:AI 只是在“总结日志”,没有生产风险
风险取决于总结之后的工具链。如果摘要会被另一个 Agent、CI/CD、SOAR Playbook 或云自动化系统视为可信输入,间接链路同样会形成写入和执行能力。
误区四:只扫描恶意命令文本
攻击者可以把语义伪装成告警、合规说明、扫描结果、修复建议或看似正常的结构化数据。仅靠关键词或危险命令特征很容易被绕过;防御应基于来源、权限和任务范围,而不是猜测某段文本是否恶意。
结语
Ghostjacking 最重要的提醒是:安全监控系统已经不只是“观测层”。一旦它的输出进入了可调用工具的 AI Agent,日志平台、告警平台和错误追踪系统就加入了 Agent 的控制链。
企业需要将“被 Agent 阅读的数据”纳入攻击面管理:区分来源、传播不可信标签、分离调查与处置权限、让所有高影响动作接受独立授权。这样,即使攻击者成功把文本植入日志,Agent 也最多生成一条待核验的建议,而不能把攻击者的叙事直接变成对基础设施的操作。
参考资料
- SecurityWeek:‘Ghostjacking’ Attack Uses Poisoned Logs to Turn AI Agents Bad(2026-08-10,Ionut Arghire)
- Tenet Security:GhostJacking Attacks(2026-08-09)
- Tenet Security:agent-jackstop
- OWASP GenAI:LLM06:2025 Excessive Agency
- DEF CON 34 Main Stage Talks
来源字段:2026-08-10|SecurityWeek,Ionut Arghire|https://www.securityweek.com/ghostjacking-attack-uses-poisoned-logs-to-turn-ai-agents-bad/|Tenet Security 在 DEF CON 34 展示 Ghostjacking:攻击者将文本植入 Cloudflare、Datadog、Sentry 等可信平台的日志或告警,诱导具备工具权限的 AI Agent 执行不当操作|日志、告警和工单必须作为不可信输入治理;调查与处置权限应分离,高影响工具调用需要独立任务授权与审批。
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/sec/ghostjacking-poisoned-logs-ai-agents.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)