DuckDB 的 Node.js npm 包因维护者账户被盗而遭到恶意软件攻击,攻击者发布了旨在干扰加密货币交易的恶意版本。幸运的是,团队在四小时内发现并迅速采取行动,废弃了受影响的版本并发布了安全更新。根据 npm 的统计数据,在被处理前,这些恶意版本似乎并未被任何用户下载,从而避免了实际损害。
事件概述
攻击者通过网络钓鱼手段获取了一位维护者的 npm 账户凭证。他们利用这些凭证发布了四个 DuckDB 相关 npm 包的恶意新版本。这些版本包含旨在干扰加密货币交易的恶意代码。
我们遭遇了一次典型的网络钓鱼攻击。
受影响的包和版本
以下是包含恶意代码的具体版本。用户应确保没有使用或更新到这些版本。
@duckdb/[email protected]@duckdb/[email protected][email protected]@duckdb/[email protected]
请注意: DuckDB 团队从未计划发布 1.3.3 版本,这是一个关键的警示信号。
团队的快速响应
在发现事件后的 4 小时内,DuckDB 团队立即采取了多项措施来控制局面:
- 立即废弃: 首先,团队将所有受影响的恶意版本标记为“已废弃”。
- 联系 npm 支持: 请求 npm 官方彻底删除这些恶意包,因为维护者自己无权删除。
- 发布安全版本: 迅速发布了版本号更高的安全版本(
1.3.4和1.30.0),确保用户通过latest标签安装的是安全可靠的包。 - 内部审查: 团队承诺将审查内部流程,以加强未来发布的安全性。
攻击是如何发生的?
这次攻击是一次精心策划的网络钓鱼。
- 虚假邮件: 一位维护者收到了来自看似是 npm 官方(
[email protected])的邮件。 - 仿冒网站: 邮件中的链接指向一个与 npmjs.com 一模一样的仿冒网站。
- 凭证被盗: 维护者在该网站上输入了用户名、密码和双因素认证(2FA)码。仿冒网站在后台将这些信息转发给真实的 npm 网站,同时为攻击者创建了一个新的 API 令牌。
- 发布恶意包: 攻击者利用这个新的 API 令牌发布了恶意软件包。
事后来看,一个本应引起警觉的迹象是 浏览器没有自动填充登录信息。幸运的是,团队没有被锁定在自己的 npm 账户之外,并能够迅速轮换所有密码和 API 密钥。