安全公告:@solana/web3.js v1.95.6 和 v1.95.7 版本遭受攻击

  • cyfrin
  • 发布于 2024-12-04 18:52
  • 阅读 7

近期,@solana/web3.js JavaScript 库的 1.95.6 和 1.95.7 版本遭遇了一次复杂的供应链攻击,导致约 16 万美元 SOL 和 31,000 美元其他代币被盗。攻击者利用恶意代码获取用户私钥,并将其发送至指定地址。开发者和用户需立即检查并更新相关版本以确保安全。

关键安全警报:Solana web3.js 库遭到入侵

一项复杂的供应链攻击已影响到广泛使用的 @solana/web3.js JavaScript 库的 1.95.6 和 1.95.7 版本。

影响概述

  • 受影响版本:@solana/web3.js 的 1.95.6 和 1.95.7
  • 曝光率:每周在 npm 上平均有 350,000 到 450,000 次下载
  • 攻击窗口:2024 年 12 月 2 日,协调世界时下午 3:20 到晚上 8:25 之间(由库维护者 Steven Luscher 确认
  • 文档化损失:根据截至目前的 链上数据,约有 $160,000 的 SOL 被盗,此外还有超过 $31,000 价值的其他代币

技术分析

攻击者侵入了 @solana/web3.js 库的发布访问账户。他们注入了恶意代码,该代码捕获并传输私钥到一个硬编码的 Solana 地址:FnvLGtucz4E1ppJHRTev6Qv4X7g8Pw6WPStHCcbAKbfx.

此次攻击使用了复杂的混淆技术。Datadog 的安全研究员 Christophe Tafani-Dereeper 揭示了后门的关键组件:

代码片段显示了一个 addToQueue 函数,该函数编码并排队处理,使用 HTTP POST 请求将数据发送到指定的 API 端点。包含身份验证的头部。

来源:Socket

恶意代码:

  1. 隐藏在看似合法的 CloudFront 头部后
  2. 战略性地注入到多个访问私钥的代码路径中
  3. 将数据传送到位于 sol-rpc[.]xyz 的指挥和控制服务器

高亮代码部分调用 addToQueue 函数来处理有关 secretKey 和 privateKey 的敏感数据。箭头表示代码逻辑中的关键用途。

来源:Socket

虽然与之前的供应链攻击类似,但此次攻击使用了更先进的混淆方法。攻击者于 2024 年 11 月 22 日通过 NameSilo 注册了他们的指挥和控制域,隐藏在 CloudFront 的服务后面。

谁受到影响

根据 库所有者 的说法,这个漏洞 影响

  1. 直接处理私钥的项目
  2. 在曝光窗口期间更新依赖项的项目
  3. 使用私钥的 JavaScript 机器人或后端系统
  4. 整合了受影响的 1.95.6 或 1.95.7 版本的应用程序

以下 不受影响

  • 非托管钱包(在交易期间不暴露私钥)
  • 使用 1.95.5 或更早版本的项目
  • 使用 1.95.8 或更高版本的项目
  • Phantom 钱包和 Backpack 交易所 确认它们不受影响

必要的行动

对于开发者

首先,请尽快检查你的 yarn.lock / package-lock.json 文件,以确保你没有使用 @solana/web3.js 的 1.95.6 或 1.95.7 版本。

对于本地目录,请使用以下 grep 命令:

grep -r "@solana/web3.js" .

对于 GitHub 库,请运行以下搜索:

user:YOUR_USERNAME "@solana/web3.js"

如果你正在使用受影响的版本:

  1. 删除受影响的软件包
  2. 更新到 1.95.8 版本或降级到 1.95.5
  3. 检查你的 node_modules 目录和依赖树
  4. 生成新私钥
  5. 撤销受影响的权限

对于用户

  1. 限制与 Solana 基础应用的交互,直到确认其安全状态
  2. 如果你怀疑被攻击,请将资产转移到一个新的钱包
  3. 监控你的交易历史,查看是否有未经授权的活动

当前缓解状态

✓ npm 已删除受影响版本

✓ 已发布修补版本 1.95.8

✓ 指挥和控制服务器已下线

经验教训与预防策略

该事件强调了关键的预防安全最佳实践。

  1. 依赖管理:
    • 始终验证你的 npm 包和依赖项的真实性。
    • 维护严格的版本控制和包锁文件。
    • 使用扫描工具检查依赖项。
    • 定期对项目依赖项进行安全审计。
  2. 私钥安全:
    • 在正常交易中绝不暴露私钥。
    • 为私钥操作实施适当的访问控制。
    • 评审所有处理私钥的代码路径。
    • 在可能的情况下考虑使用非托管解决方案。
  3. 供应链安全:
    • 即使来自受信任的源,也要对包更新保持谨慎。
    • 监控依赖项中异常的代码修改。
    • 注意未经授权的包发布。
    • 实施稳健的代码审查流程。
  4. 响应准备:
    • 为安全事件准备好计划。
    • 知道如何快速撤销受影响的权限。
    • 与用户保持明确的沟通渠道。
    • 保持安全工具和联系人随时可用。

最重要的是,确保你的代码在部署前经过 安全审计

附加资源

结论

监控官方 Solana 渠道以获取最新的安全更新。

该事件展示了供应链攻击日益复杂化的趋势。Solana 社区和安全研究人员的快速反应限制了损害。然而,这强调了保持警惕的必要性。

  • 原文链接: cyfrin.io/blog/critical-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
cyfrin
cyfrin
Securing the blockchain and its users. Industry-leading smart contract audits, tools, and education.