软件供应链安全正成为信息技术领域最为关注的问题之一,特别是在开发工具和包管理生态系统中,安全威胁正不断演变。GitHub作为全球领先的代码托管平台,于2025年9月宣布了一系列针对npm生态的安全改进措施,旨在应对近期的供应链攻击浪潮。这些变化不仅针对已有威胁,更为未来提供强有力的防护壁垒,彰显了微软旗下GitHub对确保开源软件安全的高度责任感。 近期的供应链攻击事件,尤其是被称作Shai-Hulud的攻击事件,引发了全球开发者的高度警觉。此次攻击以自我复制的蠕虫形式,渗透数百个npm包,在受影响的系统中扫描并窃取敏感机密信息。更令人担忧的是,该蠕虫不仅窃取npm令牌,还能访问多种类型的机密数据,其潜在的破坏力极其严重。
GitHub迅速做出反应,宣布将在不久的将来调整身份验证与发布流程,限制攻击者借用令牌进行恶意操作的空间。 GitHub此次强化的措施核心包括强制两步验证(2FA)、推行短期有效的细粒度令牌以及引入可信发布机制。针对令牌滥用问题,GitHub将废除传统的经典令牌,取而代之的是具备七天有效期的短暂令牌。这种令牌生命周期的限制大幅降低了令牌被盗用后可造成的潜在危害。同时,针对身份认证手段,GitHub将弃用基于时间的一次性密码(TOTP)2FA,转向更安全且用户体验更佳的FIDO标准硬件2FA,这种无密码认证方式更能抵抗钓鱼攻击和账号入侵。 在发布流程层面,GitHub推出了"可信发布"机制。
该机制允许开发者通过持续集成/持续交付(CI/CD)工作流,利用基于开放ID连接(OIDC)的短期、专用工作流凭证,直接进行npm包的发布,这不仅取消了对传统npm令牌的依赖,还通过加密手段为每一次发布建立源代码和构建环境的溯源证明。发布时,npm CLI自动生成相应的溯源认证,确保每一个包都有可信的构建历史供用户核验,从而提升了供应链的透明度和安全性。 GitHub的新规中还包括取消本地包发布绕过2FA的选项,默认拒绝令牌发布访问权限,鼓励开发者采用可信发布或强制2FA的本地发布方式,全面强化发布链的安全保障。除此之外,GitHub还扩大了可信发布的服务提供商范围,以便更多用户和组织可以灵活安全地集成这一新机制。 此次安全举措显著改善了npm生态的安全环境,带来了多重积极影响。首先,开发者发布包的身份和构建过程更加透明和可验证,用户能够轻松追溯包的真实性和完整性,极大降低了恶意包混入的风险。
其次,令牌寿命的限制与身份验证方式的升级,防止攻击者因令牌泄露实现持久访问,缩短了潜在攻击的时间窗口。再者,借助自动化的CI/CD可信发布机制,提高了开发流程的安全自动化水平,减少人为误操作引发的安全问题。 值得关注的是,这些变革发生之时,其他主要软件包仓库也在同步加强供应链安全。NuGet .NET包管理库率先支持了可信发布功能,而Ruby Central针对RubyGems实施了访问权限的严控策略,明确只有其内部工程师将拥有管理权限。这些领域内的协同安全努力,表明全球开源社区正积极联手抵御愈发复杂的攻击威胁,形成更为稳固的生态防护网络。 与此同时,安全专家还揭示了如npm恶意包fezbox等新型攻击载体。
该包利用二维码技术隐藏恶意代码,窃取浏览器中的账户凭据,这一手法的隐匿性和创新性令人警醒。此类案例说明攻击者不仅在发掘技术手段的突破,也在不断提升攻击的隐蔽性,强调了依赖专业工具检测依赖项风险的必要性。 综上所述,GitHub此次推行的强制两步验证及短期令牌管理措施,为npm供应链安全树立了新标杆。它不仅推进了安全身份认证的现代化,也以技术创新实现了发布溯源的透明公开,为开发者和使用者构筑了更加坚固的安全防线。未来,随着更多生态系统采纳类似机制,软件供应链的整体安全态势有望得到明显改善,为数字时代的开源软件安全注入持久动力。 。