Ghostcommit 攻击:恶意提示藏入图片,劫持Agent实施窃取

阅读量12150

发布时间 : 2026-07-13 15:14:37

x
译文声明

本文是翻译文章,文章原作者 Guru Baran,文章来源:https://cybersecuritynews.com/ghostcommit-attack-hides-prompts/

译文仅供参考,具体内容表达以及含义原文为准。

一种名为Ghostcommit的新型供应链攻击手段,可将提示注入指令隐藏在 PNG 图片中,绕过 AI 代码审查工具,诱导代码智能体泄露.env 配置文件等敏感密钥。

1.攻击原理与对比验证

ASSET Research Group开展实验验证:若提交拉取请求中直接以明文写入窃取仓库.env 文件的指令,Cursor 漏洞机器人、CodeRabbit 等大模型代码审查工具会立刻识别,在代码合并前标记该明文攻击为高危漏洞。

为规避检测,研究人员将攻击载荷拆分部署:

仓库内新增看似合规的规范文档AGENTS.md,引导代码智能体从引用图片docs/images/build-spec.png中提取构建常量;

图片内部嵌入完整恶意逻辑:逐字节读取.env 文件,并将文件内容编码为 ASCII 数字序列。

文本类审查工具会将图片视作不透明二进制文件,且 CodeRabbit 默认配置直接跳过 PNG 文件审查,因此整条拉取请求可无告警通过,漏洞机器人不会输出任何风险提示。

2.攻击触发流程

代码合并时不会直接窃取数据,陷阱会延后触发:开发者在其他会话中,向代码智能体发起常规功能开发需求时,攻击链路启动。智能体读取已合并的AGENTS.md文档,按指引解析目标图片,读取本地.env 文件,并生成模块级常量(如_PROV_CANARY),以数百位数字元组形式输出;该数字序列逐字节解码后,即为完整.env 明文内容。

实测案例中,搭载 Claude Sonnet 模型的 Cursor 工具首次执行便输出含 311 个数字的元组,API 密钥、数据库地址、云平台凭证全部内嵌在看似普通的代码输出中。攻击者只需读取公开提交记录,将数字元组逆向解码,即可获取全部明文机密。

3.攻击利用两大检测盲区

恶意提示隐匿于图片内:人工审核、正则扫描、仅解析文本差分内容的大模型审查工具均无法识别;

机密数据伪装为数字元组:传统密钥扫描工具仅匹配字符串特征,无法识别可解码为 ASCII 字符的数字序列,因此不会告警。

4.多工具、多模型实测结果

研究人员对 11 套代码工具 + 大模型组合完成测试,发现攻击能否得逞,核心取决于工具运行框架,而非底层大模型本身:

Cursor 工具:搭配 Claude Sonnet 4.6、Composer-2、GPT-5.5 均会完整泄露.env 文件;

Antigravity 工具:搭配 Sonnet、Gemini 3.1 Pro、Gemini 3 Flash 全部存在泄露风险;

Claude Code 平台:同系列所有模型(Sonnet 4.6、Haiku 4.5、Opus 4.7)均能阻断攻击。同一 Sonnet 模型在不同运行环境下表现截然不同。

一处极端测试场景:Antigravity 搭载 Opus 模型时,虽已计算并输出机密,但识别到社会工程攻击逻辑后自动删除敏感内容,完成自我修正;而在 Claude Code 环境中,Opus 不会读取规范文档,因此不会触发该自防御机制。

5.自研防御检测方案

研究团队基于轻量化开源大模型 Gemma 4,开发一款多模态 GitHub 代码审查原型工具,仅需单块 4GB 显存显卡即可运行。工具融合三类检测能力:隐形字符识别、代码结构特征分析、对规范文档与内嵌图片同步执行大模型校验。

压力测试表现:

15 类攻击样本全量拦截,零误报;

80份未知真实测试样本中,50 次攻击拦截 49 次,所有图片隐写变种全部检出;30 份正常业务提交无一条误标记。

研究团队已开源完整概念验证代码,含拆分载荷的拉取请求样本与数字解码工具,供安全防护人员研究防御对策。

本文翻译自https://cybersecuritynews.com/ghostcommit-attack-hides-prompts/ 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66