跳转到主要内容
安全事件 原创

从Laravel-Lang投毒到npm 2FA发布:2026年软件供应链攻防全景解析

0 0

# 从Laravel-Lang投毒到npm 2FA发布:2026年软件供应链攻防全景解析

你每天 `npm install` 或 `composer update` 背后,可能藏着一条看不见的攻击链。

2026年5月第三周,全球软件供应链安全领域发生了三件大事:Laravel-Lang PHP包遭组织级投毒,Packagist上有8个包被植入跨生态恶意代码,npm则紧急上线了2FA门控发布机制。这几件事串在一起,勾勒出一幅让人后背发凉的攻击全景图——供应链攻击不再需要改你的源码,改个Git Tag就够了

一、Laravel-Lang投毒事件:不碰源码照样埋雷

5月22日到23日,安全研究人员发现Laravel-Lang组织旗下的多个PHP包被植入恶意代码,受影响的包括:

  • laravel-lang/lang
  • laravel-lang/http-statuses
  • laravel-lang/attributes
  • laravel-lang/actions

攻击者一口气篡改了超过700个版本标签,速度极快,很多版本间隔只有几秒钟——显然是自动化操作。

这起事件的特别之处在于:攻击者没有修改任何源代码。他们是怎么做到的?

答案是重写Git Tag。

攻击者将每个仓库中现存的Git标签逐一重写,让它们指向一个包含恶意代码的新提交。恶意代码藏在 `src/helpers.php` 文件里,通过修改每个受影响包的 `composer.json` 的 `autoload.files` 配置,让这个文件在每次PHP应用启动时自动执行。

不需要你实例化任何类,不需要调用任何方法,只要你的项目依赖了这些包,恶意代码就会在应用启动的那一刻悄无声息地运行。

二、跨平台凭证窃取器:一次感染,全平台通吃

这个后门不是简单的”hello world”。它是一套精心设计的跨平台凭证窃取框架。

工作流程分三步:

第一步:指纹识别。恶意脚本根据目录路径、系统架构和inode生成一个MD5哈希作为唯一标识,确保每台机器只触发一次,降低被检测到的概率。

第二步:远程拉取载荷。脚本连接外部服务器(flipboxstudio[.]info),获取针对当前操作系统的PHP载荷。

第三步:跨平台执行。在Windows上,它投递一个VBS启动器通过cscript执行;在Linux和macOS上,则直接通过exec()运行窃密载荷。

窃取的数据范围令人咋舌:云环境IAM角色凭证、Google Cloud认证信息、AWS CLI配置、数据库连接字符串、.env文件中的密钥……基本上开发者机器上所有能用来访问生产环境的凭证,它都要。

三、Packagist跨生态投毒:绕过你的安全扫描

同一天,安全团队还发现了另一起针对Packagist(PHP包仓库)的投毒事件。8个Composer包被植入恶意代码,但这些恶意代码并不在 `composer.json` 里,而是藏在 `package.json` 的 `postinstall` 钩子中。

这意味着什么?很多PHP项目的安全扫描只关注Composer生态的依赖关系,而JavaScript构建工具链中的 `package.json` 往往被忽略。攻击者精准利用了这个盲区:恶意代码通过npm的postinstall脚本下载并执行一个来自GitHub Releases的Linux二进制文件。

这种”跨生态投毒”手法代表了一种新趋势:攻击者不再局限于单一包管理器的安全边界,而是在多个生态的交叉点寻找缝隙

四、npm的反击:2FA门控发布

面对日益猖獗的供应链攻击,npm也在本周推出了应对措施。

新功能叫 Staged Publishing(分阶段发布)。核心思路很简单:包发布不再是一步到位。开发者用 `npm stage publish` 提交包后,它会进入一个”暂存队列”,必须由一名启用了2FA的人类维护者手动审批后,包才会出现在npmjs.com上供用户安装。

这保证了每次发布都有”人在场”的证据,即便发布是通过CI/CD自动化流程或OIDC受信发布触发的。

npm还新增了三个安装源控制标志:`–allow-file`、`–allow-remote`、`–allow-directory`,让开发者可以对非注册表来源的安装采用显式白名单策略。

五、AI安全工具崭露头角:Claude Mythos发现万级漏洞

在攻击者不断进化的同时,防御方也有了新武器。

Anthropic本周公布了Project Glasswing的最新成果:通过给约50个合作伙伴提供Claude Mythos Preview模型的早期访问权限,该项目已发现了超过10000个高危或严重级别的漏洞,涵盖1000多个开源项目。经过验证,其中1726个是真实漏洞,1094个被评定为高危或严重级别。

其中一个典型发现是WolfSSL中的CVE-2026-5194(CVSS 9.1),攻击者可以利用该漏洞伪造证书,冒充合法服务。截至目前,这些发现已促使97个补丁被合并到上游项目,88个安全公告被发布。

微软也观察到,随着AI辅助漏洞发现工具的普及,每月修复的漏洞数量正在持续增长,预计这一趋势还将继续。

六、开发者自救指南

面对愈演愈烈的供应链攻击,每个开发者都应该建立自己的防线:

锁定依赖版本。使用 `package-lock.json`、`composer.lock` 等锁文件,避免自动升级到被篡改的新版本。

启用完整性校验。npm的 `–ignore-scripts` 可以阻止postinstall脚本执行;Composer的 `–no-scripts` 也有类似效果。在CI环境中尤其重要。

监控依赖变化。使用Socket、Snyk等工具实时监控依赖项的安全状态,对新增或变更的依赖保持警惕。

审查Git Tag。如果你是包的维护者,定期检查Git标签是否被篡改,启用签名提交和标签验证。

最小权限原则。CI/CD发布流程中使用OIDC等短期凭证,避免长期有效的发布令牌泄露后被滥用。

分阶段发布。如果你的包有条件使用npm的Staged Publishing,立即开启。多一道2FA验证,就少一个被投毒的可能。

七、结语

2026年的供应链攻击已经进化到了一个新阶段:攻击者不再需要社工你的开发者,不再需要钓鱼你的账号,只需要篡改一个Git标签、往package.json里塞一行postinstall,就能让成千上万的项目在无声无息中沦陷。

好消息是,生态系统正在快速响应。npm的2FA门控、AI漏洞猎手的大规模部署,都说明防御方也在加速。但这场攻防博弈的天平,目前还没有明显倾向哪一边。

下一个 `npm install` 之前,想想你的依赖链上,是否也藏着看不见的雷。

你觉得你的项目对供应链攻击有足够的防御吗?欢迎在评论区分享你的看法和实践经验。

> 关于点小安:点滴安全网站小编,专注网络安全科普。安全无小事,点滴记心间!

>

> 声明:本文观点仅供参考,不构成安全建议。

>

> 关注点滴安全(www.dripsafe.cn),获取更多网络安全干货!