知名开发者NPM账户遭入侵,数十亿次下载量软件包被植入恶意代码引发供应链风险
北京时间9月9日,Ledger首席技术官Charles Guillemet在X平台发布预警称:"当前正在发生大规模供应链攻击,某知名开发者的NPM账户遭入侵,受影响软件包下载量超10亿次,这意味着整个JavaScript生态系统可能面临风险。"
Guillemet补充道:"恶意代码会静默篡改加密货币地址以窃取资金。若使用硬件钱包,请仔细检查每笔签名交易即可保证安全;若使用软件钱包,建议暂缓所有链上交易。目前尚不确定攻击者是否直接窃取软件钱包助记词。"

事件经过
根据Guillemet引用的安全报告,本次事件的直接原因是知名开发者@qix的NPM账户遭入侵,导致包括chalk、strip-ansi和color-convert在内的数十个软件包被发布恶意版本。当开发者或用户自动安装依赖项时,恶意代码可能已传播至终端。

Odaily注:受感染软件包周下载量数据。简言之,这是典型的供应链攻击案例——攻击者将恶意代码(如NPM包)植入开发工具或依赖系统。NPM(Node Package Manager)是JavaScript/Node.js生态最常用的包管理工具,主要功能包括管理依赖项、安装更新包和共享代码。
NPM生态极其庞大,目前托管数百万个软件包。几乎所有Web3项目、加密钱包及前端工具都依赖NPM。正因其依赖关系复杂且链路冗长,使其成为供应链攻击的高危入口。攻击者只需在常用软件包中植入恶意代码,就可能影响数千个应用和用户。

如上图恶意代码扩散流程图所示:某项目(蓝框)会直接依赖express等常见开源库,这些直接依赖(绿框)又依赖其他间接依赖(黄框如lodash)。若间接依赖被攻击者秘密植入恶意代码(红框),其将沿依赖链进入项目。
对加密行业的影响
该安全事件与加密行业的直接关联在于:黑客向上述污染软件包植入的恶意代码是精密的"加密货币剪贴板劫持器",通过替换钱包地址和劫持交易来窃取加密资产。

Stress Capital创始人GE(@GuarEmperor)在X平台进一步解释:黑客注入的"剪贴板劫持器"采用两种攻击模式:被动模式使用"莱文斯坦距离算法"替换钱包地址,因视觉相似性极难察觉;主动模式则检测浏览器中的加密钱包,在用户签署交易前篡改目标地址。
由于此攻击针对JavaScript项目基础层库,甚至间接依赖这些库的项目也可能受影响。
黑客获利情况
黑客植入的恶意代码同时暴露了其攻击地址。主要以太坊攻击地址为0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976,资金主要来自以下三个地址:
0xa29eEfB3f21Dc8FA8bce065Db4f4354AA683c024
0x40C351B989113646bc4e9Dfe66AE66D24fE6Da7B
0x30F895a2C66030795131FB66CBaD6a1f91461731
Arkham已为此攻击创建追踪页面,用户可实时查看黑客获利及转账状态。

截至发稿,黑客仅获利496美元。但考虑到恶意代码传播范围尚未完全确定,该数字可能持续上升。开发者已收到通知并积极与NPM安全团队协作解决问题,多数受影响软件包中的恶意代码已被清除,事态基本受控。
如何规避风险?
Defillama创始人@0xngmi表示,虽然事件听起来危险,但实际影响并不夸张——因为本次事件仅会影响自恶意NPM包发布后推送更新的网站,其他项目仍在使用旧版本;且多数项目会固定依赖项,即使推送更新也会继续使用旧版安全代码。
但用户无法真正知晓项目是否修复依赖或存在动态下载依赖,目前需要项目方先进行自查并披露。截至发稿,MetaMask、Phantom、Aave、Fluid和Jupiter等多个钱包或应用项目已声明未受影响。因此理论上用户可安全使用已确认安全的钱包访问确认安全的协议,对于尚未进行安全披露的其他钱包或项目,暂时避免使用可能更为安全。
〈一夜之间,"供应链攻击"霸屏:发生了什么?我们该如何规避风险?〉