一种名为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 份正常业务提交无一条误标记。
研究团队已开源完整概念验证代码,含拆分载荷的拉取请求样本与数字解码工具,供安全防护人员研究防御对策。









发表评论
您还未登录,请先登录。
登录