Page 94 - 《软件学报》2026年第7期
P. 94
胡帅 等: 产业研发视角下的开源软件供应链攻击问题研究 2779
构建产物与源码不一致. 更为隐秘的是, 后门利用 GNU libc 的 IFUNC 机制在运行时 hook 关键函数 RSA_public_
decrypt, 允许攻击者绕过 OpenSSH 的公钥验证, 实现远程身份验证绕过, 只要系统同时存在 liblzma 与 OpenSSH.
后门发布时机亦颇具策略性, 攻击者选择在 Ubuntu 等主流 Linux 发行版测试冻结前夕推动版本合并, 试图规
避严格审查. 该后门最终不是因为代码审计工具而被发现, 而是因为 PostgreSQL 核心开发者 Andres Freund 在调
试 Linux 发行版 sshd 启动延迟时注意到 liblzma 异常 CPU 使用率, 进一步反编译分析揭露了源码与构建产物不符
及隐藏钩子函数. 此事件经 oss-security 邮件列表 (https://www.openwall.com/lists/oss-security/2024/03/29/4) 曝光后,
引发广泛关注并促使各大 Linux 发行版迅速下架受影响版本.
此事件揭示出, 传统依赖信任与人工审查的开源项目治理机制难以有效应对社会工程主导的深度渗透型攻击.
攻击者通过伪装贡献、操控信任路径, 完成对构建链的长期劫持, 其策略性与隐蔽性远超传统技术型入侵, 凸显了
加强开源社区关键人物身份管理、混淆代码评审与构建产物测试验证等机制在当前开源安全治理中的重要地位.
4.1.2 发布或冒充流行开源项目
在软件供应链的上游环节, 攻击者日益利用开发者对主流开源平台 (如 GitHub) 及其生态机制所建立的高度
信任, 突破传统依赖关系注入路径, 通过伪造仓库、克隆热门项目或发布带毒版本, 实现对下游用户的直接渗透与
攻击. 这些策略的核心在于构建高度可信的伪装环境, 以规避安全防护机制和用户警觉, 进而实现恶意代码在供应
链中的隐秘传播与持久存在.
2024 年, Gelb [86] 的研究揭示了一种基于平台搜索机制操控的新型攻击技术. 攻击者通过自动化脚本大规模生
成名称相似且界面结构高度一致的 GitHub 仓库, 辅以多种搜索引擎优化策略, 如在项目元数据中嵌入热门关键词、
伪造 Star 与 Fork 数量, 从而人为提升这些仓库在搜索结果中的曝光度和排名. 这类仓库通常伪装成活跃且可信的
开源项目, 诱使开发者访问和使用. 恶意代码多被隐藏在构建脚本或工程配置文件 (如 Visual Studio 项目文件) 中,
一旦被目标系统构建或运行, 即可能执行如加密货币钱包窃取等破坏性操作.
除搜索劫持策略外, 攻击者还大量滥用 GitHub 的 Fork 机制实施项目伪装与代码注入. Cao 等人 [87] 对 35 个与
加密货币相关的主项目及其 68 879 个 Fork 实例进行了系统分析, 发现其中 26 个 Fork 仓库含有恶意代码或可执
行文件, 攻击目标覆盖 Linux 容器、物联网设备和服务器等多种典型部署环境. 攻击者通常通过复制知名项目, 继
承其结构与命名规范, 在此基础上隐蔽植入恶意逻辑. 由于 Fork 仓库在名称和结构上与原项目高度相似, 开发者
极易误判其合法性, 导致中毒版本被无意中引入软件构建流程.
此外, 部分攻击者甚至在无依赖链污染的情况下, 构造名称、描述及元数据高度近似的独立软件包或代码仓
库, 利用第三方镜像站点、开源推荐平台及开发者论坛等渠道进行推广, 诱导用户手动下载安装. 这种结合命名相
似性误导与项目伪装的组合式攻击, 技术门槛相对较低, 社会工程效果显著, 已成为近年来开源软件供应链攻击的
高发手段, 对主流开发生态系统构成了持续且严重的威胁.
4.1.3 开源代码中的投毒与后门威胁
在开源软件生态中, 攻击者一旦获取项目的访问或提交权限, 即可能在源代码层面实施投毒和后门注入行为,
将恶意逻辑深度嵌入版本控制体系与构建流程中, 从而实现后门植入. 这类供应链攻击不同于基于漏洞利用的即
发型入侵, 其攻击链条呈现高度隐蔽性、条件触发性与信任链传染性. 攻击者通常将恶意逻辑伪装为正常功能改
动, 以规避人工审查与静态分析检测, 并借助自动化构建与依赖继承机制, 在下游项目构建或运行阶段悄然触发,
实现跨项目、跨版本的隐形传播. 表 4 中系统性地总结了源码层面投毒与后门注入的典型案例, 并对比分析了主
要的实现方式与攻击路径. 投毒和后门注入的实现路径多样, 既包括在核心业务逻辑中嵌入经过语义伪装的恶意
语句, 也可能通过构建脚本、依赖配置、测试逻辑或格式化配置等低关注度模块引入恶意组件, 以增强攻击链的
隐蔽性与传播性. 部分攻击者利用编程语言的宏特性、动态解析能力或结构混淆手段对恶意逻辑进行掩饰, 例如
将 payload 编码为 Base64 字符串隐藏于资源文件或注释中, 并在运行时通过特定触发条件动态解码执行.
典型案例包括 XZ Utils 后门事件 (CVE-2024-3094) [73] , 攻击者在长达数年的渗透后获得核心提交权限, 并在
liblzma 压缩库中植入条件触发的命令执行逻辑, 使得特定 SSH 连接能够绕过认证远程控制 Linux 服务器. 由于
XZUtils 是 OpenSSH 等系统核心组件的底层依赖, 一旦全面释放, 将对全球 Linux 生态造成灾难性冲击. 2021 年

