在历史上最大的 npm 攻击中发现了新的受损包
引 言
在正在进行的网络钓鱼活动中,Duckdb、coveops/abi 和更多新软件包被发现遭到入侵。
背 景
据 Aikido 报告(https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised),9 月 8 日,一名恶意攻击者通过网络钓鱼攻击获取了开发人员的令牌,并发布了 18 个常用软件包的木马版本,从而入侵了 npm 注册表。 “debug”、“chalk”和“ansi-styles”等热门软件报均遭到入侵。注入的有效载荷使用了流行的“javascript-obfuscator”库进行混淆,并包含一个加密货币窃取恶意软件。
该恶意软件将 XMLHttpRequest 类的方法替换为自己的方法,以监控 web3 流量。
一旦恶意代码在受支持的网络上检测到交易,它就会拦截请求。它将接收者的地址替换为攻击者控制的地址,从而将资金重定向到窃贼的钱包。
有什么影响?
令人惊讶的是,此次攻击几乎没有造成任何实际损失。攻击者使用了一种广为人知的混淆器,导致恶意版本在发布后不久就被检测到。对相关钱包的区块链分析表明,此次攻击活动仅窃取了大约 500 美元的加密货币。
此次攻击的影响范围之广,使其成为 npm 历史上范围最广的供应链攻击。受感染的软件包非常受欢迎,所有版本的总下载量已达 20 亿次,而受感染的版本下载量则超过 250 万次。
这一事件凸显了现代 JavaScript 生态系统的脆弱性,其中一半的代码库依赖于单个开发人员维护的单行实用程序。
在首批受感染的软件包之后,我们又发现了更多的受感染帐户,其中包括 duckdb(https://www.npmjs.com/package/duckdb),这表明该攻击活动仍然活跃。我们将继续关注事态发展,并在有新信息时及时更新博客。
受感染的软件包
1
最初报告的受感染软件包
最初报告的受感染软件包下载次数超过 250 万次。
软件包名称 |
软件包版本 |
受感染版本的 下载次数 |
backslash |
0.2.1 |
2482 |
chalk-template |
1.1.1 |
2708 |
supports-hyperlinks |
4.1.1 |
166 |
has-ansi |
6.0.1 |
127 |
simple-swizzle |
0.2.3 |
308579 |
color-string |
2.1.1 |
1510 |
error-ex |
1.3.3 |
220642 |
color-name |
2.0.1 |
5869 |
is-arrayish |
0.3.3 |
133998 |
slice-ansi |
7.1.1 |
51073 |
color-convert |
3.1.1 |
1104 |
wrap-ansi |
9.0.1 |
100947 |
ansi-regex |
6.2.1 |
357201 |
supports-color |
10.2.1 |
11811 |
strip-ansi |
7.1.1 |
412854 |
chalk |
5.6.1 |
146630 |
debug |
4.4.2 |
543051 |
ansi-styles |
6.2.2 |
324330 |
proto-tinker-wc |
0.1.87 |
75 |
prebid |
10.9.1 |
98 |
prebid |
10.9.2 |
98 |
2
持续发展新发现的受感染软件包
由 JFrog 报告
首次入侵后发现的软件包很快被删除,并且几乎没有下载。
软件包名称 |
软件包版本 |
受感染版本的 下载次数 |
@coveops/abi |
2.0.1 |
No information |
duckdb |
1.3.3 |
5 |
@duckdb/node-bindings |
1.3.3 |
No information |
@duckdb/duckdb-wasm |
1.29.2 |
No information |
@duckdb/node-api |
1.3.3 |
No information |