【DevSecOps】JavaScript生态系统的自我复制恶意软件Shai-Hulud攻击演示

2025-09-21T00:00:00Z | 3分钟阅读 | 更新于 2025-09-21T00:00:00Z

Macro Zhao

推荐超级课程:

攻击演示及工作原理

“Shai-Hulud”蠕虫的攻击过程可以概括为以下几个关键步骤:

  1. 初始感染: 攻击者通过网络钓鱼等手段窃取了 npm 包维护者的账户凭据。

  2. 植入恶意代码: 攻击者利用窃取的凭据,向受害者维护的 npm 包中植入恶意代码,并发布新版本。恶意代码通常位于一个 bundle.js 文件中,并通过 package.json 文件的 postinstall 脚本来执行。

  3. 本地凭据窃取: 一旦被感染的 npm 包被下载并安装,postinstall 脚本就会自动运行。该脚本会在受害者的计算机上(主要针对 Linux 和 macOS 系统)搜索并窃取各种敏感信息,包括:

    • GitHub 令牌

    • npm 认证令牌

    • AWS 和 GCP 等云服务凭据

    • 其他环境变量中暴露的密钥

  4. 数据外泄与传播:

    • 公开暴露: 恶意软件会将窃取到的凭据打包,并在受害者的 GitHub 账户下创建一个名为 “Shai-Hulud” 的公共仓库,将这些敏感信息公开提交。这不仅是一种数据外泄方式,也是对受害者的公开羞辱。

    • 自我复制: 这是攻击最危险的部分。蠕虫会利用窃取到的 npm 令牌,登录受害者的账户。它会自动识别受害者维护的其他 npm 包,向这些包中注入相同的恶意代码,然后将新版本发布到 npm 注册表上。

    • 连锁反应: 这种机制形成了一个快速、自动化的传播链。一个被感染的包会感染其维护者的所有其他包,这些包又会感染新的开发者,从而像滚雪球一样在整个 npm 生态系统中迅速蔓延。

  5. 自我复制机制

Shai-Hulud恶意软件的核心创新在于其通过NpmModule.updatePackage函数实现了自复制机制。与传统供应链攻击不同,它能够自动识别并感染被入侵开发者维护的其他软件包,从而实现“蠕虫式”传播。

传播过程包括:

  • 下载现有软件包压缩包
  • 修改package.json文件,注入恶意postinstall脚本
  • 嵌入约3.6MB的压缩后bundle.js有效载荷
  • 重新打包并发布到npm注册表

这一过程无需人工干预,可全自动在npm生态中横向扩散

被盗取密钥示例

以下以Github Token被盗取为例演示你的信息如何泄露的。

  1. 到Github上搜索 “Shai-Hulud” 关键字的代码仓库。这个仓库中只有一个data.json文件的提交:

  2. 复制这个data.json中的字符串。有一定编程经验的老手可以直接猜出,这个看似一个base64的字符串!没错!它就是base64的字符串,只不过是二次encoded的字符串。我们来试着decode一下:

  echo <上面拷贝的字符串> | base64 -d | base64 -d
  1. 可怕的事情你会发现,它盗取了你当前环境的所有:
  • 环境变量:如果你在环境变量中设置了AWS,Google,Azure等云的密钥信息,甚至是生产环境的密钥,那恭喜你,你完蛋了!

  • 各种密钥: Github,AWS, GCP, Npm, Bitcoin, BlockChain

如何防范

为了保护自己免受此类攻击,请立即采取以下行动:

  • 检查可疑账户活动: 检查你的 npm 和 GitHub 账户活动,查找是否有未经授权的包发布或仓库创建。

  • 轮换凭据: 如果你使用了任何受影响的包,请立即轮换所有相关的 npm、GitHub 以及云服务(AWS、GCP 等)凭据。

  • 审查依赖项: 定期审计你的 package.json 文件和 package-lock.json 文件,检查是否有可疑的新增或版本号更改。

  • 使用安全工具: 考虑使用像 Socket.dev 这样的工具,它们可以分析你的依赖项,并在发现已知的恶意包时发出警告。

  • 保持警惕: 对来自未知来源的 npm 或 GitHub 电子邮件保持警惕,尤其是在要求你更新账户或验证 MFA 信息的邮件中。

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画

    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
  • AI 识字

    • 遇到不认识的字,写在这里,会自动识别所写汉字。
    • 还能对其进行意义查询。
  • 中日假期日历

    • 方便查询2025日本红日子。
    • 对日打工族必备工具。
  • 在线架子鼓

    • 简易但功能齐全的架子鼓。
    • 代码敲累了,你就敲一敲它吧。
  • 微信公众号编辑器

    • 简易但功能丰富的免费!公众号编辑器。
    • 还在不断完善中,喜欢的可以持续关注.
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee