npm install 的瞬间,攻击链就被点燃了:入口



最近在看一个供应链攻击案例,
攻击者没有用什么高深手段,也没入侵任何服务器。
它只是更新了一个开源包的版本,在里面悄悄多塞了两个文件 + 一行 preinstall。
就这样,开发者一 npm install,整条攻击链自动启动。
为了让大家更直观,我用这次事件里出现的真实包来举例:
👉 @asyncapi/php-template 0.1.1
图一:
• setup_bun.js
• bun_environment.js(而且还高度混淆)
这两个文件,就是整个攻击链的入口。
图二:
📌真正的关键:package.json 多了一行 preinstall
在 package.json 里,多出来一行:\"preinstall\": \"node setup_bun.js\"
这句脚本意味着:只要你 npm install,这个 JS 就会自动执行。
你不需要点开、不需要调用、不需要 import。
只要项目用了它,攻击者的逻辑就会自动跑。
这也是供应链攻击最可怕的一点——
开发者甚至不需要“运行恶意文件”,光是安装依赖就中招了。
❗️setup_bun.js 在做什么?
我拆过逻辑,大概做了三件事:
1. 检查你的电脑有没有装 Bun
2. 没有的话,它会自动下载 + 安装(过程极隐蔽)
3. 再配置好相关环境变量
这些动作看起来像是在“帮你准备运行环境”,
但它的真正目的只有一个:
👉 为后面那份混淆脚本铺路。
⚠️真正的核心:混淆的 bun_environment.js
当 Bun 准备好以后,setup_bun.js 会执行:bun_environment.js
这个脚本被严重混淆后,里面有一个关键入口函数: aL0()
它是整条攻击链真正的开始,包括:
• 扫描 AWS/GCP/Azure 的云端密钥
• 读取 NPM/GitHub 凭证
• 扫文件系统
• 准备后续传播逻辑
📅下一篇我会拆解:
👉 aL0() 是怎么扫描三大云服务的机密?
👉 为什么它能把 AWS/GCP/Azure 的所有 Secret 全读出来?
👉 整个窃密链路到底长什么样?
这一段才是最“让人头皮发麻”的部分。
#链上安全 #区块链 #web3 #区块链安全 #编程