账本攻击:耗尽硬件加密钱包

账本攻击:耗尽硬件加密钱包

这篇文章以对 Ledger 的攻击为例,分析了鱼叉式网络钓鱼如何导致对该公司硬件钱包使用的软件 connect-kit 工具进行软件供应链 (SSC) 攻击,从而使攻击者窃取至少 600,000 万美元的资金。 

此次攻击发生在供应链事故频发的一年年末。在这篇文章中,我们将分析此次攻击及其影响、处理方式以及可以吸取的教训。

Ledger 及其硬件钱包用户显然是网络犯罪分子的目标。钱包窃取者通过对加密应用程序前端进行网络钓鱼攻击 Ledger 用户,犯罪分子需要知道用户坐标才能开展网络钓鱼活动。Ledger 有一个 2023 年 XNUMX 月前数据泄露 以及成为 2020 年 XNUMX 月数据盗窃 对他们的电子商务 Shopify 来说,这是一个影响巨大的事件。该帖子“更新:努力保护您的数据并起诉垃圾邮件发送者”表明这些违规行为有多严重。

Ledger 需要认真对待安全性(这是其业务的关键部分),并设立内部研究实验室(保持)处理 设备安全认证,以 虫子赏金 程序 安全公告威胁建模。 到目前为止,一切都很好 …

攻击是如何进行的

Ledger 检测到利用 Ledger 的 DApp 连接套件 于 14 年 2023 月 XNUMX 日星期四。此漏洞将恶意代码注入使用 Ledger Connect Kit 的基于以太坊的去中心化应用程序 (DApp),诱骗用户签署耗尽钱包的交易。 

漏洞很快就被发现,并在不久后实施了解决方案。与此同时,一小部分用户陷入攻击并签署交易,耗尽了他们的钱包。

此次攻击始于一名前 Ledger 员工成为网络钓鱼攻击的受害者,该攻击通过会话令牌获取了其 NPM 帐户的访问权限。攻击者发布了  @ledgerhq/connect-kit (1.1.5、1.1.6 和 1.1.7,现已退役)。攻击者可以以与钱包应用程序相同的权限级别运行任意代码:攻击者可以在无需交互的情况下立即耗尽用户资金,分发大量钓鱼链接欺骗用户,或利用用户的恐慌,说服他们将资产转移到新地址,导致用户因下载虚假钱包而造成资产损失。

钱包前端(dApps)通常使用 连接套件加载器 来自 Ledger 的软件包,用于在运行时从 JavaScript CDN(jsDelivr)加载 Connect Kit。不幸的是,URL https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 没有锁定确切的版本(当时是 1.1.4),因此当上传恶意版本时,它们会由 CDN 提供(并缓存)。并且没有使用校验和来确保从 CDN 下载的资源实际上是预期的资源(从 CDN 分发代码时应该使用校验和)。这种基于校验和的方案被称为 子资源完整性 (印度风险投资公司)。

注入的代码可能操纵了交易数据,欺骗用户确认操纵的付款。例如,用户批准代币付款以启用应用程序的功能,但可能看到的却是向黑客地址付款的批准。无论硬件钱包有多安全,资金都被盗了。 

发现与调查

不同的用户开始在 X(又名 Twitter)上发布消息,称 Zapper 前端“被劫持”。这要归功于加密货币交易商 Sushi 的首席技术官 Mathew Lilley,他首先在 Twitter发布 一个“常用的 web3 连接器”已被入侵。后来他指出 LedgerHQ/connect-kit 作为受感染的图书馆,并给出了初步评估,但有点生硬:

用户 0xViva 在 GitHub 项目仓库中打开了一张票: [紧急] 此存储库使用了恶意版本的 npm 包 @ledgerhq/connect-kit,1.1.7.

15 年 2023 月 XNUMX 日,区块链安全公司 SlowMost 发布了一份 分析岗位 提供恶意版本的完整详细信息。 

Ledger 硬件钱包没有受到攻击,只有 Ledger Connect Kit 受到攻击。但是,由于许多应用程序都使用该库,例如 SushiSwap、Zapper、MetalSwap、Harvest Finance、Revoke.cash 等,因此影响范围很大。 bittrace.io有受害者出于慌乱,试图将资产转移到新的地址,却下载了假的钱包APP! 

同一天,詹姆森·洛普准确地 啾啾 导致攻击成功的缺陷:

事件处理方式

Ledger 首席执行官 Pascal Gauthier 在攻击发生当天发布了一条 公开信 提供有关事件的进一步细节,这绝对是好事:像鸵鸟一样把头埋在沙子里是处理任何网络安全事件最糟糕的方式。 

这封信的结构很有趣:它迅速承认了图书馆存在恶意版本在消耗资金,这是好事(否认现实是无稽之谈):

“今天,我们遇到了 Ledger Connect Kit 的漏洞,这是一个 Javascript 库,它实现了一个按钮,允许用户将他们的 Ledger 设备连接到第三方 DApps(与钱包连接的网站)。

此漏洞是一名前员工成为网络钓鱼攻击受害者的结果,该攻击允许不良行为者将恶意文件上传到 Ledger 的 NPMJS(应用程序之间共享的 Javascript 代码的包管理器)。

我们与合作伙伴 WalletConnect 迅速合作解决该漏洞,并在发现后 40 分钟内更新了 NPMJS 以删除并停用恶意代码。这是业界迅速合作应对安全挑战的一个很好的例子。” 

什么?拥有出版权的前员工在 NPM 上的资质不是被吊销了吗?

首席执行官随后列举了现有的安全控制措施,但暗示 NPM 访问存在一些薄弱之处:

“现在,我想讲一下为什么会发生这种情况,我们将如何改进我们的安全实践以减轻未来的这种特定风险,并向业界分享我们的建议,以便我们能够共同变得更强大。

此 standard Ledger 的惯例是,没有多方审核,任何个人都无法部署代码。在开发的大部分环节,我们都有强大的访问控制、内部审核和代码多重签名。我们 99% 的内部系统都是如此。任何离职员工的访问权限都会被取消,不受每个 Ledger 系统的约束。

这是一起不幸的孤立事件。它提醒我们,安全并不是一成不变的,Ledger 必须不断改进我们的安全系统和流程。在这方面,Ledger 将实施更强大的安全控制,将我们的构建 pipeline 实施严格的 software supply chain security 到 NPM 分发渠道。=

好吧,看起来有权发布新版本库的 NPM 帐户的安全控制不如其软件基础设施的其他部分那么严格。由于运气不好而发生的孤立事件?

这封信的结尾 standard 与当局接触的部分,“受控声明”和道歉:

“Ledger 已与当局接洽,并在调查展开过程中尽一切努力提供帮助。Ledger 将支持受影响的用户,帮助他们找到这个坏人,将他们绳之以法,追踪资金,并与执法部门合作,帮助从黑客手中追回被盗资产。我们对今天发生的事件深表遗憾,对受影响的个人深表遗憾。 

目前情况已得到控制,威胁已过去。我们理解这给社区和更广泛的生态系统带来的恐慌。”

信中附上了时间表,非常有利于用户了解事件是如何发现的,采取了哪些具体的遏制和补救措施,以及如何恢复/补偿受影响用户的损失。这是最具体到代币的部分:

“今天上午,一名前 Ledger 员工成为网络钓鱼攻击的受害者,该攻击获得了其 NPMJS 帐户的访问权限。攻击者发布了 Ledger Connect Kit 的恶意版本(影响版本 1.1.5、1.1.6 和 1.1.7)。恶意代码使用流氓 WalletConnect 项目将资金重新路由到黑客钱包。 Ledger 的技术和安全团队接到警报,并在 Ledger 发现后 40 分钟内部署了修复程序。恶意文件持续了大约 5 个小时,但我们认为资金被盗取的时间不超过两小时。Ledger 与 WalletConnect 协调,后者迅速禁用了该流氓项目。正版且经过验证的 Ledger Connect Kit 版本 1.1.8 现已发布,可安全使用。

对于正在开发和与 Ledger Connect Kit 代码交互的构建者:NPM 项目的 connect-kit 开发团队现在是只读的,出于安全原因无法直接推送 NPM 包。我们已内部轮换了机密以在 Ledger 的 GitHub 上发布。开发人员,请再次检查您是否正在使用最新版本 1.1.8。

Ledger 以及 WalletConnect 以及我们的合作伙伴已报告了恶意行为者的钱包地址。该地址现已在 Chainalysis. 系链 已经冻结了恶意行为者的 USDT。”

据此,控制措施非常迅速,因为用于重新路由资金的流氓 WalletConnect 项目被迅速禁用。但即便如此,一些钱包还是被盗了。

后果:行业如何反应

一些用户对 Ledger 未能阻止这种入侵表示愤怒,而其他用户则警告依赖第三方库的危险。

网络安全行业在网络货币领域占有一席之地。钱包掏空活动众所周知,主要使用钓鱼网站欺骗最终用户。通常的 SaaS 业务(诈骗即服务)有专门的钱包掏空参与者,比如诈骗供应商 炼狱排水器宣布停止运营 2023 年 XNUMX 月。根据 Dune 的近期活动,这似乎是一个假标志。 @scamsniffer。Group-IB 的这篇文章解释了他们所遵循的方案:

Inferno Drainer 的工作流程。资料来源:再见 Inferno Drainer?(…),作者:Group-IB。
账本攻击:耗尽硬件加密钱包

一些分析师暗示了这次袭击失败的原因。 用户 brianddk 的评论 项目存储库中的票据让我们了解了根本原因: 

账本攻击:耗尽硬件加密钱包

A 另一位用户 HenryQW 的评论,指出了恶意版本能够通过CDN传播的第二件事:

现在要制定长期计划来提高加密钱包前端抵御网络钓鱼攻击的防御能力还为时过早。看起来需要遵守 standard 类似于 扩音系统 对于支付应用程序软件供应商来说,加密行业可能会受到欢迎。

现在,我们学到了教训!

令人惊奇的是,作为加密安全的缩影,硬件钱包 仅通过对 NPM 凭证的访问就被攻破 Ledger“前员工”的账户信息(可能是没有 2FA 保护的用户名/密码,或访问令牌)。此事件提醒我们,当你受到攻击时,你的软件基础设施需要像你的软件或硬件产品一样小心保护。

大多数软件供应链攻击都是从入侵内部账户(通常是开发人员或 DevOps 工程师的账户)开始的。然后,攻击者要么横向移动,要么入侵软件基础设施中的内部系统,比如 CI/CD 系统或部署工具,或者设法向源代码存储库添加恶意逻辑,如果正确处理更改并实施分支保护和代码审查,这些逻辑可能会被检测到。但是,当目标是在公共注册表中发布的流行库时,攻击者不需要深入研究,特别是如果他们可以获得发布(写入)凭据的权限。这就是这次攻击中发生的事情。 

2FA认证,特别是使用安全密钥等强大的元素,可以限制交互操作的风险。 CI/CD pipelines,访问令牌具有有限的访问权限,存储为 CI/CD secret 是常用的方法(访问令牌不应泄露)。不幸的是,员工似乎没有设置强大的 2FA。NPM 允许 组织强制执行 2FA (但这是可选的,而不是默认的),这可能是 Ledger 应该有的。并且不要忘记添加适当的 凭证撤销 针对前雇员的程序,尤其是可以访问组织所拥有的 NPM 范围这样重要的资源的程序。

版本固定 对于已审核版本升级的依赖项,这是一种减轻恶意依赖项传播的做法。在 Ledger 事件的背景下, 连接套件加载器 从 CDN 获得的信息应该被固定,并且“不要相信 CDN 抛出的任何东西”。 校验和验证 例如,从 CDN 提取动态代码加载时应使用 SRI(或者甚至是用于验证源的数字签名方案)。  

剩下的就是故事了。

对于针对钱包用户的更传统的网络钓鱼活动,问题是:是什么让用户落入​​犯罪分子设置的陷阱,并确认他们从未打算进行的交易?这个领域的钓鱼网站设计精良,令人信服,模仿流行的加密品牌;他们还提供免费代币, 铸造 NFT 以及其他奖励。如何避免用户陷入这样的陷阱是一个亟待解决的问题。

不要忘记 相关 加密黑客 攻击是一种更普遍的威胁,攻击者接管云基础设施来运行加密货币挖矿机,通常是用于挖掘 Monero XMR 和 Zcash 等隐私币,并隐藏交易历史。加密劫持之所以重要,是因为它可能会影响任何组织,尽管攻击者的利润可能很低,但受害者的成本可能很高(Sysdig 在 本报告 攻击者每开采 53 美元,受害组织就需要付出 1 美元的成本)。

案例

探索Xygeni 的功能!
观看我们的视频演示
sca-tools-软件-成分分析工具
确定软件风险的优先级、进行补救并加以保护
7-day免费试用
无需信用卡

保护您的软件开发和交付

使用 Xygeni 产品套件