被污染的日志能驱动 AI 误判:Ghostjacking 让云安全平台变成投毒载体

2026/08/10 sec AI Agent 安全 · 间接提示注入 · 日志投毒 · AIOps · 云安全 5355 字 · 约 16 分钟 阅读 ...
解析 Ghostjacking 如何将 Cloudflare、Datadog 与 Sentry 的日志、告警和事件转化为 Agent 间接提示注入入口,并给出 AIOps 与安全运营团队的防护清单。

事件说明: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-influenced
  • source=telemetry-untrusted
  • integrity=unverified
  • actionable=false

标签的目标不是让模型“更听话”,而是供策略层判断:从不可信遥测中提取出的建议,是否允许触发写操作、Shell、依赖安装、凭证读取或网络连接。

同时,应尽量保留结构化字段,将事件内容与指令字段分离。对于 User-AgentReferer、异常消息、日志 message、请求参数和工单正文等攻击者可能控制的字段,应进行输出编码、长度限制和明确展示,而不是拼接到操作提示中。

2. 分离只读调查与写入处置会话

调查 Agent 的默认工具集应只读:查询日志、聚合事件、生成摘要、提出假设。它不应同时拥有下列能力:

  • 修改 DNS、CDN、WAF 或网络策略。
  • 修改 IAM、角色绑定或访问令牌。
  • 执行任意 Shell 命令。
  • 安装软件包或修改 CI/CD 配置。
  • 读取广泛的环境变量、密钥目录或云元数据。

如果调查结论需要变更生产环境,应创建一条新的、可审计的处置工作流,由新的任务身份、窄权限 Token 和独立策略决定是否批准。

只读调查 Agent
  → 输出:带证据与来源标记的建议
  → 策略校验与人工审批
  → 新建写入任务
  → 使用任务专属短时凭证执行有限动作

核心原则是:“查看被拦截事件”这项任务,本身不应携带“修改 DNS”的授权。

3. 将高影响工具改成任务专属的窄接口

避免向 Agent 暴露 execute_shellrun_any_commandcloud_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 也最多生成一条待核验的建议,而不能把攻击者的叙事直接变成对基础设施的操作。

参考资料

来源字段: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 执行不当操作|日志、告警和工单必须作为不可信输入治理;调查与处置权限应分离,高影响工具调用需要独立任务授权与审批。

文档信息