紧急扩散!crates.io 发现恶意 crate faster_log 和 async_println,窃取私钥数据

86 阅读3分钟

摘要 2025年9月24日,crates.io 团队收到来自 Socket Threat Research Team 的 Kirill Boychenko 的通知,称发现了两个恶意 crate,这些 crate 正在主动搜索文件内容中的以太坊私钥、Solana 私钥和任意字节数组,并将其外泄。

这两个恶意 crate 分别是:

  • faster_log — 2025年5月25日发布,下载次数 7181 次
  • async_println — 2025年5月25日发布,下载次数 1243 次

恶意代码在运行时执行,当运行或测试依赖这些 crate 的项目时会触发。值得注意的是,这些 crate 在构建时不会执行任何恶意代码。除了其恶意 payload 外,这些 crate 复制了合法 crate 的源代码、功能和文档,并使用了相似的名称(属于 typo-squatting 技术)。

采取的措施 相关用户账户已立即禁用,且相关的恶意 crate 已于 2025年9月24日 15:34 UTC 从 crates.io 上删除。我们已保留与这些用户及恶意 crate 文件相关的所有日志,以供进一步分析。

分析 这两个 crate 是一个提供日志功能的 crate 的复制版本,恶意 crate 中的日志实现仍然保持正常功能。原始 crate 具有一个功能,用于打包日志文件,迭代关联目录中的文件。

攻击者在进行日志打包操作时插入了恶意代码,该代码会搜索被处理的日志文件,查找以下内容:

  • 以 0x 开头并跟随 64 个十六进制字符的以太坊私钥
  • Solana 风格的 Base58 密钥
  • 括号中的字节数组

然后,这些 crate 会将搜索结果外泄到 https://mainnet[.]solana-rpc-pool[.]workers[.]dev/。

这些 crate 没有在 crates.io 上的下游依赖 crate。

与这些 crate 相关的恶意用户没有发布其他 crate,团队正在积极调查我们保留的日志中的相关活动。

感谢 感谢 Kirill Boychenko 来自 Socket Threat Research Team 的报告。此外,我们还要感谢 crates.io 团队的 Carol Nichols、Rust 安全响应工作组的 Pietro Albini 和 Rust 基金会的 Walter Pearce,他们为此次响应提供了帮助。

术语说明 typosquatting 是恶意行为者使用的一种技术,用于发起依赖混淆攻击。在这种攻击中,合法用户可能会被误导使用恶意的依赖项,而不是他们意图使用的依赖项。例如,恶意行为者可能会尝试发布一个名为 proc-macro3 的 crate,来捕捉使用合法 proc-macro2 crate 的用户。

这些 crate 被保留以供未来分析,以便应对可能发生的其他攻击,并为未来的扫描工作提供信息。

crates.io 保留了一年的日志,但我们的日志平台只提供最近 30 天的日志。我们选择不进一步追溯分析,因为基于 IP 地址的分析受到动态 IP 地址使用的限制,并且相关的 IP 地址可能属于一个住宅 ISP 分配的地址。