Page 93 - 《软件学报》2026年第7期
P. 93

2778                                                       软件学报  2026  年第  37  卷第  7  期


                 通过多种手段渗透开源生态, 实施恶意操控, 严重威胁供应链的整体安全性. 为系统化揭示攻击者在开源生态中的
                 渗透路径与攻击手法, 本文将重点探讨其如何利用利益相关者进行社会工程攻击、对源代码实施恶意篡改, 以及
                 通过发布恶意组件或冒充知名项目等手段, 在开源生态中展开多层次的渗透与攻击活动.
                  4.1.1    开源生态中的社会工程学攻击
                    开源软件开发依赖大量分布式且多为志愿者的贡献者, 这种开放且协作密集但缺乏统一治理的生态环境, 成
                 为供应链攻击者实施社会工程学攻击的重要切入点. 攻击者通过操控项目中的核心维护者、外部贡献者以及企业
                 内部人员, 利用人员管理和信任体系中的弱点, 达到隐蔽、持久且影响深远的攻击目的. 针对这一现象, 本文将从
                 职业疲劳与项目治理能力下降、社会操控与诱导攻击、贡献者伪装与账户接管这                            3  个方面进行深入探讨.
                    ● 职业疲劳与项目治理能力下降. 开源软件维护者多数为兼职志愿者, 他们基于兴趣或技术理想参与社区建
                 设, 但长期的无偿投入和不断增加的维护压力导致“职业倦怠”现象普遍存在. SonarSource 2023                     年的调研显示, 约
                 58%  的开源维护者感受到职业倦怠, 已有 22%          实际退出, 36%   正在考虑退出     [81] , 这直接影响了代码审查、安全加
                 固及社区治理的质量       [82] , 为攻击者利用治理薄弱环节提供了机会. 在此背景下, 攻击者常借项目维护不足、代码
                 审计薄弱之机, 将恶意代码注入源代码库或通过包管理平台传播被污染版本. 典型案例为 2018 年的                            npm  库  event-
                 stream  投毒事件. 该库作为   Node.js 重要的流处理组件, 被逾      1 600 个项目依赖. 攻击者利用原维护者长期缺席, 通
                 过假借协助维护取得信任, 进而接管发布权限, 并引入含有条件后门的依赖包                         flatmap-stream, 该后门专门窃取加
                 密货币钱包私钥信息. 该恶意依赖在社区中隐蔽传播数月, 最终波及数百万下游用户                          [63] .
                    此外, 商业机构与开源社区之间的不对等关系进一步加剧了治理风险. 企业大规模使用开源软件获取收益, 而
                 维护者却难以获得相应支持, 导致社区对核心项目的维护动力下降. 以                      2021  年“Log4Shell”漏洞为例, 维护团队在
                 短时间内承受巨大修复压力, 多位维护者公开表达对企业“长期受益却未提供实质支持”的不满, 认为自己被迫充
                 当“无偿安全外包团队”       [83] . 这种结构性失衡加剧了核心项目弃管风险, 暴露出开源生态在人力资源和信任机制上
                 的系统性脆弱, 为攻击者实施社会工程攻击和权限劫持提供了可乘之机.
                    ● 社会操控与诱导攻击. 攻击者大量利用社会工程方法, 借助操纵人心和引导行为的方式渗透软件开发与运
                 维流程, 实现非技术路径下的攻击. 他们通过社交网络和社区舆论等外部渠道, 针对开发者或组织内部成员在资源
                 分配不均、工作压力大等方面的情绪波动进行影响, 甚至通过利益诱导和意识形态操控, 使相关人员无意中放松
                 安全审查或执行潜在风险操作. 同时, 攻击者也可能基于政治立场或经济压力对关键维护者施加长期影响, 诱使其
                 主动植入破坏性代码, 形成内部自毁式的供应链风险. 以                 2022  年备受关注的    Colors.js 和  Faker.js 事件为例, 维护
                 者  MarakSquires 因不满大型企业长期免费使用其成果, 在两个高依赖度的                npm  包中注入包含死循环和乱码输出
                 的恶意版本    (如  colors@1.4.44-liberty-2  和  faker@6.6.6), 导致数千个依赖项目运行异常和构建失败. 同年, node-ipc
                 维护者基于政治抗议发布含文件擦除操作的恶意版本, 严重危及用户文件系统安全. 这些案例表明, 攻击者不仅是
                 外部黑客, 受操控的内部开发者或被劫持的可信角色同样构成重大威胁                        [84,85] . 这种社会操控的攻击方式揭示了攻
                 击者如何通过发布恶意更新、篡改依赖和操纵构建流程等灰色手段, 在供应链生态中隐蔽干预系统运行, 即使不
                 直接修改核心业务代码, 也能对系统行为产生实质性影响.
                    ● 贡献者伪装与账户接管攻击. 在开源协作环境中, 攻击者主要通过两种途径非法获取项目权限: 一是利用凭
                 据泄露、访问令牌滥用或身份验证缺陷直接劫持合法开发者账户; 二是长期伪装为可信贡献者, 逐步渗透项目治
                 理流程, 实现权限攫取与代码投毒. 后者依赖社区治理中的结构性弱点, 如身份审核松散、权限演化不透明以及维
                 护者资源不足导致的信任放任. 随着大型项目贡献者数量增加和审查压力加大, 攻击者通过伪造身份和操控社交
                 互动获得信任的成功率显著提升, 凸显了加强身份验证和审查自动化的必要性.
                    2024 年披露的   XZ Utils 后门事件  (CVE-2024-3094) 即为此类基于社会工程渗透策略的典型案例              [73] . 攻击者
                 利用  GitHub  账号  JiaT75, 于  2021  潜入项目, 初期以积极贡献者身份赢得社区和维护者           Lasse Collin  的信任. 在项
                 目维护资源有限且       Collin  疏于管理的背景下, JiaT75  主动承担管理与发布工作, 2022         年获授权提交与发布权限.
                 随后, 他潜伏近两年, 直到      2024  年初在  xz-utils 5.6.0  和  5.6.1  版本中隐蔽植入后门. 该后门通过伪装为测试数据文
                 件  (bad-3-corrupt_lzma2.xz 与  good-large_compressed.lzma), 并借助构建脚本中的宏展开机制, 在特定条件下导致
   88   89   90   91   92   93   94   95   96   97   98