数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末
2024 年 1 月 16 日,Socket Tech 遭到攻击,损失约 330 万美元。攻击者利用了 Socket 某合约中数据验证环节的漏洞,通过恶意数据输入盗取了授权合约的用户资金。这次攻击共给 230 个地址带来损失,最大的单地址损失约为 65.6 万美元。
背景介绍
Socket 是一种服务于跨链安全、高效数据和资产传输的互操作性协议。Socket Gateway 合约是与 Socket 流动性层所有交互的接入点,所有资产桥接器和 DEX 在此汇聚成一个唯一的元桥接器,并根据用户偏好(如成本、延迟或安全性)选择最佳交易路由。
黑客攻击发生的前三天,Socket 合约管理员执行了 addRoute 命令,在系统中加入了一条新路由。添加路由的目的是扩展 Socket 网关的功能,但却无意中引入了一个关键漏洞。
下图为通过合约管理员添加路由的记录:
事件梗概
1.北京时间 1 月 16 日 15: 03 ,攻击者钱包转入攻击所用资金,我们的时间分析表明这笔资金来自0x e 620 ,与从 Tornado Cash 提取的 10 BNB 有关。
2.这些资金被用于创建和执行两个合约来利用 Socket 的漏洞。第一个合约针对的是授权了 SocketGateway 的地址中的 USDC(截图如下)。127 名受害者被骗走约 250 万美元。
3.接下来,第二个合约则将目标对准了受害者地址内的 WETH、USDT、WBTC、DAI 与 MATIC。于是,另外 104 名受害者损失了约如下资产:
-42.48 WETH
-347, 005.65 USDT
-2.89 WBTC
-13, 821.01 DAI
-165, 356.99 MATIC
4.攻击者将 USDC 与 USDT 转换成了 ETH。
漏洞来源
被攻击者利用的漏洞存在于新添加的路由地址 routeAddress 内的 performAction 函数中。
该地址内的 performAction 函数原本的功能是协助 Wrapping 与 Unwrapping 的功能。
然而,该函数中出现了一个关键漏洞:用户在无需验证的情况下,直接在.call() 中通过 swapExtraData 调用外部数据,这意味着攻击者可以执行任意恶意函数。
在这次事件中,攻击者制作了一个恶意的 swapExtraData 输入,触发 transferFrom 函数。该恶意调用利用了用户对 SocketGateway 合约的授权,从他们那里盗走了资金。
虽然合约会通过检查余额检查确保 fromToken.call()调用后用户余额会出现正确的变化,但该函数没有考虑攻击者将金额设置为 0 的情况。
还原攻击流程
1.使用攻击合约,攻击者在 Socket Gateway 合约上调用了0x 00000196()。
2.fallback() 使用六进制签名 196 调用了有漏洞的路由地址合约(routerAddress)。
3.在下面的截图中,我们可以看到攻击者使用的虚假输入,Swapping 数量全部为 0 。
4.接下来将调用 WrappedTokenSwapperImpl.performAction()进行 Swap。
5.在没有进行任何验证的情况下,虚假的 SwapExtraData 被 fromToken (WETH)接受并执行。
6.攻击者重复执行以上流程,直到受害者资产耗尽。恶意交易出现后,Socket 迅速调用了 disableRoute,屏蔽了之前有漏洞的路由,阻止了更大范围的攻击。
7.1 月 23 日,Socket 宣布已经追回 1032 枚 ETH,并在 25 日宣布将全额补偿所有损失。本次事件得到解决。
事件总结
在有着无限额用户授权的路由合约中,恶意 calldata 攻击并不罕见。
以前类似的攻击包括 Dexible 和 Hector Bridge。
2023 年 2 月 17 日,去中心化交易所 Dexible 被攻击,损失超过 150 万美元。漏洞利用者向 Dexible 的 fill()函数输入恶意 calldata,以窃取用户资产。
2023 年 6 月 2 日,Hector 网络的协议被攻击。攻击者部署了一个虚假的 USDC 合约,并通过恶意 calldata,将 65.2 万枚真实的 USDC 从受害者的合约中转移出去。
区块链聚合平台通常通过封装一系列桥和路由合约来提高流动性,减少损耗。然而,这种复杂的封装会给安全性带来更多难题。
Socket 此次事件可以得到解决无疑是各方努力的结果,CertiK 也将继续致力于为平台提供全方位审计与检测,降低各类聚合风险,提高社区信任和整个行业的安全水平。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum