
软件供应链仍然是关键的攻击向量,经常受到复杂对手的攻击。最近对广泛使用的软件包的攻击,再次提醒人们这些持续存在的威胁。在此次事件中,一个流行命名空间中的几个软件包(总计每周下载量巨大)被武器化以分发恶意代码。攻击者通过 GitHub 提交注入代码的方式,表明他们对现代开发管道以及对广泛使用的开源组件的固有信任有着清晰的理解。
发生了什么
一次重大的供应链攻击袭击了一个包生态系统。恶意代码被注入到几个广泛使用的 npm 包中,影响了每周数百万次下载的项目。此次攻击是通过 GitHub 提交执行的,这是软件开发生命周期中的一个关键点,表明项目持续集成 (CI) 管道中存在漏洞。注入的代码旨在从受感染的开发人员机器中窃取凭据,并将其泄露到攻击者控制的远程服务器。
此次攻击利用了“导入时负载交付”机制,这意味着恶意代码将在受感染的包导入项目后立即执行。这种技术绕过了许多传统的静态分析工具和运行时检查,使得检测变得具有挑战性。此次事件表明,一个复杂的威胁行为者正在利用 CI 感知策略,很可能利用项目 CI 管道中公开披露的漏洞来访问负责发布的机器人账户。
为什么这种模式会重复出现
npm 供应链攻击的反复发生源于几个系统性因素。现代软件开发的巨大相互关联性,严重依赖于开源包,造成了广阔的攻击面。开发人员通常会集成数百甚至数千个第三方依赖项,其中许多由志愿者或小型团队维护,其安全态势各不相同。
除了直接的包攻击之外,CI/CD 管道本身也已成为主要目标。攻击者认识到,攻击构建系统或发布自动化会让他们获得一个强大的有利位置,可以将恶意代码注入合法的软件中。对自动化流程的固有信任,加上快速的开发节奏,往往没有足够的时间对每个依赖项和管道的每个阶段进行彻底的安全审查。
对上游依赖项和自动化 CI/CD 流程的隐式信任造成了关键的盲点,而复杂的攻击者正在持续利用这些盲点。
此外,大量的软件包和更新使得手动安全审查不切实际。这种对自动化的依赖,虽然对于速度至关重要,但如果安全没有深入嵌入到每个阶段,就会引入故障点。像此次事件这样的攻击表明,仅仅扫描已知漏洞已不足够;主动的、多层次的防御势在必行。
攻击者的逐步攻击手册
此次事件清晰地说明了现代 npm 供应链攻击手册。首先,攻击者识别并利用了项目 CI 管道中的漏洞。这可能涉及利用公开披露的弱点来破坏用于包发布的机器人账户的凭据。这次初始入侵至关重要,因为它授予攻击者操纵官方发布过程的能力。
获得访问权限后,攻击者通过 GitHub 提交将恶意代码注入到合法的包源代码中。这种隐蔽的方法使得恶意负载能够直接集成到代码库中,使其看起来像是项目的一个合法部分。该代码设计用于“导入时负载交付”,确保在包集成和使用时执行。
最后阶段涉及凭据泄露。恶意负载在开发人员机器上执行后,将窃取敏感信息并将其传输到攻击者控制的服务器。从初始入侵到数据泄露的整个序列,展示了对开发工作流的复杂理解和对供应链渗透的有针对性的方法。
防御者错过了什么
在此次攻击中,几个防御层可能都失败了。CI 管道的初始漏洞表明构建和发布环境缺乏强大的安全控制。这可能包括机器人账户访问控制不足、CI 工具中未打补丁的漏洞或薄弱的秘密管理实践。
其次,通过 GitHub 提交注入恶意代码表明,代码审查流程(如果存在)未能检测到细微的更改,或者完全被绕过。自动化静态分析工具可能未配置为检测此导入时负载的特定模式,或者恶意代码已充分混淆以逃避检测。在检测到之前包被下载了数百万次,这表明发布后监控和行为分析存在漏洞。
最后,开发人员机器上的端点检测和响应 (EDR) 解决方案可能未能有效地识别或阻止凭据泄露。这强调了持续监控的必要性,不仅要监控生产环境,还要监控开发人员工作站,因为它们日益成为初始访问的高价值目标。
实用防御清单
CISO 和安全工程师必须采取积极主动的综合策略来降低 npm 供应链风险。这涉及加强整个软件开发生命周期中的控制。
- 实施严格的 CI/CD 硬化: 定期审计和保护您的 CI/CD 管道。确保构建代理的最小权限,频繁轮换凭据,并对所有 CI/CD 平台访问使用多因素身份验证。
- 增强代码审查和静态分析: 强制对所有更改(包括来自自动化机器人的更改)进行彻底的代码审查。集成能够检测混淆和导入时执行模式的高级静态应用程序安全测试 (SAST) 工具。
- 依赖项审计和固定: 为所有项目维护准确的软件物料清单 (SBOM)。将依赖项固定到特定版本,并定期审计已知漏洞。考虑为关键依赖项使用私有包注册表。
- 运行时监控和行为分析: 实施运行时应用程序自我保护 (RASP) 或类似技术,以实时监控包行为。查找已安装包的异常网络连接或文件系统访问尝试。
- 开发人员工作站安全: 将开发人员机器视为高价值目标。强制执行强大的端点安全、网络分段和持续监控,以检测和防止凭据窃取和泄露。
- 供应链风险管理: 评估上游依赖项和维护者的安全态势。优先选择具有活跃维护、清晰安全策略和快速漏洞修复历史的包。
- 自动化漏洞扫描: 对部署的应用程序及其依赖项进行持续扫描,以查找新漏洞,尤其是在开发人员机器上运行的
npm和 Python 供应链攻击的背景下。
现代攻击性测试如何捕获此漏洞
传统的渗透测试通常侧重于已部署的应用程序,从而使开发管道容易受到攻击。现代攻击性测试,尤其是自主攻击性测试,将更早地发现此次攻击中利用的弱点。通过持续自主地探测 CI/CD 管道、构建系统和依赖项管理流程,此类测试可以模拟攻击者的步骤。
我们的平台 secops 专注于具有可执行概念验证 (PoC) 的自主攻击性测试。在此次事件模式的背景下,secops 可以自主识别允许机器人账户初始入侵的脆弱 CI 管道配置。然后,它可以通过可执行的 PoC 演示攻击者如何通过 GitHub 提交注入恶意代码并触发导入时负载交付。
此外,secops 可以通过模拟凭据泄露尝试来测试现有检测机制的有效性,验证 EDR 或网络监控工具是否会标记可疑活动。这种持续的、对抗性的视角提供了对真实世界攻击路径的可操作见解,使组织能够在漏洞被恶意行为者利用之前进行修复。
接下来要关注什么
npm 和其他包生态系统的威胁格局将继续演变。我们可以预见到开发环境中“寄生攻击”的增加,攻击者利用合法的开发人员工具和流程来隐藏其活动。重点可能会进一步转向将开发人员工作站和 CI/CD 管道作为初始访问点,而不是仅仅针对面向公众的应用程序。
预计会出现更复杂的负载交付和混淆技术,旨在规避静态分析和传统的基于签名的检测。人工智能驱动的开发工具和代理的兴起带来了新的攻击面,受损的人工智能实例可能会向项目中注入无法检测的恶意代码。警惕、持续的安全测试和左移安全思维对于应对这种不断变化的威胁环境至关重要。
相关阅读

框架RCE的持久威胁:CISO对最新危机的复盘
广泛使用的框架中存在的关键远程代码执行漏洞持续困扰着网络安全领域。本文深入探讨了这种反复出现的模式、其对CISO的影响,以及主动的攻击性测试如何能减轻未来的风险。

云数据泄露:配置错误的持续性风险
深入探讨配置错误的云存储这一反复出现的噩梦,分析攻击者的方法、防御疏忽以及首席信息安全官(CISO)防止灾难性数据泄露的实用策略。

静默的供应链“杀戮开关”:npm 的凭证窃取危机
最近针对广泛使用的 npm 包的供应链攻击浪潮,暴露了现代软件开发中的一个关键漏洞。攻击者正在将窃取凭证的代码注入看似无害的补丁发布中,绕过传统的安全控制,并以惊人的规模危及下游应用程序。CISO 和安全工程师必须了解这种不断演变的威胁的机制和影响。
