Page 95 - 《软件学报》2026年第7期
P. 95
2780 软件学报 2026 年第 37 卷第 7 期
PHP 源代码仓库后门事件中, 攻击者通过入侵 Git 服务器, 在 PHP8.1-dev 分支嵌入可由特定 HTTP 请求头触发的
远程执行逻辑, 为后续恶意植入提供隐蔽入口 [64] . 此外还有 Lodash 的原型污染事件, 攻击者可以利用语言的先天
性漏洞, 埋入恶意代码从而达到攻击目的 [88] . 这些攻击得以长期潜伏, 主要依赖 3 类隐匿机制协同作用: 其一, 利
用逻辑重构与语义伪装, 如细微调整条件表达式、函数重载、变量命名混淆等方式降低改动可感知性; 其二, 恶意
逻辑仅在特定环境条件下触发, 诸如特定操作系统版本、调试器状态、网络配置或构建参数, 从而规避 CI/CD 流
水线中的沙箱测试与静态分析; 其三, 利用项目审查机制的缺陷, 策略性地将恶意改动隐藏于大规模格式化提交、
样式调整或文档更新中, 并借助信任关系及审查疲劳推进合并.
表 4 源代码层面后门注入的典型机制与案例
技术机制 实现方式 典型案例 主要影响
恶意提交/内部投毒 正常开发提交中混入伪装后门逻辑 PHP Git仓库后门 [64] 任意代码执行, 远程植入
构建工具篡改 通过IDE注入隐性逻辑 XcodeGhost [60] App后门注入, 广泛传播
构建工具链注入 利用 IDE 构建流程注入后门 JAR Octopus Scanner [89] 注入NetBeans项目构建流程, 开发者构建即感染
条件逻辑炸弹 环境感知触发恶意行为 XZ Utils [73] 静默触发、系统控制
脚本注入 构建/上传脚本窃取敏感信息 Codecov [71] CI 环境变量泄露
编码与混淆 使用 Base64、宏、资源文件隐藏代码 ctx 恶意包 [90] 静态检测规避
信任链嵌套 依赖项内置远控逻辑, 滥用SBOM信任 Ethcode 事件 [91] 安全清单绕过, 远程控制
系统庞大的组件生态中可能含有尚未修复的缺陷, 但缺乏可触发其漏洞的源代码 (漏洞不可达), 因此攻击者
可以通过编写触发其漏洞的代码从而达到攻击的目的. npm 生态中, 过期的维护者域名、长期无人维护的包以及
安装脚本滥用, 都可能成为恶意代码注入的切入点 [92] ; Maven 生态的长期积累则导致已知漏洞在多个版本间持续
存在并被广泛调用, 其中约 1/4 的漏洞函数可直接被下游项目访问, 为攻击者在构建阶段发起精准渗透提供条件.
以 Java 生态为例, 后端项目通过 Maven 将 Java 源码与 SpringBoot 等第三方依赖编译成 jar 或 war 包. 研究表明,
在超过 44 450 个包含 CVE 信息的库中, 25.7% 的漏洞函数可被至少一个下游项目访问 [93] ; 另外针对 300 万个 Maven
包的分析显示, 高危漏洞数量逐年增加, 其中某些漏洞 (如 CVE-2020-36518 和 CVE-2022-24823) 可能影响超过
37 万个版本包, 最常见的漏洞类型为“非信任数据的反序列化”, 占比 37% [94] .
威胁已延伸至开源社区代码托管平台, 实现对供应链“源头路径”的深度嵌套操控. 2017 年, Mortenson [95] 通过
一个 GitHub 仓库展示了如何将恶意代码偷偷加入 GitHub 的 Pull Request (PR) 中, 揭示了软件供应链攻击的一种
潜在途径. Goyal 等人 [96] 研究了如何在 GitHub 上识别不寻常的提交. 他们指出透明环境和社交编码平台 (如
GitHub) 虽然有助于开发者及时了解项目变更, 但过多的通知消息可能导致信息过载使开发者难以区分重要变更.
为此他们开发了一种异常检测机制, 通过统计模型识别与同一仓库中其他提交或同一开发者提交相比异常的提
交. Benedetti 等人 [97] 针对 GitHub Actions 工作流的安全性进行了自动评估研究, 分析了 GitHub 工作流在软件供应
链中的安全风险, 并开发了工具 GHAST 来检测工作流中的安全漏洞和配置错误, 通过对 50 个开源项目进行实验,
发现了大量安全问题, 强调了进一步研究和改进 GitHub 工作流安全性的必要性.
综上, 开源生态中的投毒与后门威胁正从单点攻击演化为以“构建-触发-传导”为核心的链式攻击模式. 攻击者
通过逻辑混淆、环境触发、审查绕过及工具链嵌套等多维策略, 构建兼具隐蔽性、持久性与传播性的攻击通路.
应对此类威胁, 需在开源治理、自动化审查、构建安全和版本发布管理等环节, 建立跨阶段、跨链路的信任验证
与溯源体系, 从根源阻断隐蔽渗透, 提升供应链安全韧性.
4.1.4 大语言模型数据投毒
数据投毒是一类针对 AI 供应链源头的数据完整性破坏攻击, 其核心思路是在模型训练阶段向数据集中注入
经过精心构造的恶意样本, 以诱导模型在推理阶段表现出错误预测或触发隐蔽的后门行为 [98–100] . 不同于直接入侵
模型或推理系统的即发型攻击, 数据投毒在训练阶段完成隐蔽植入, 具备高度持久性与跨阶段传播性. 在大规模预
训练背景下, 基础模型普遍依赖海量、公开的互联网数据进行构建, 攻击者可通过污染上游公共数据源、向开源

