复制成功

分享至

主页 > 数字货币 >

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

2024.02.04

数据验证环节漏洞导致损失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 有关。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

2.这些资金被用于创建和执行两个合约来利用 Socket 的漏洞。第一个合约针对的是授权了 SocketGateway 的地址中的 USDC(截图如下)。127 名受害者被骗走约 250 万美元。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

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。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

漏洞来源

被攻击者利用的漏洞存在于新添加的路由地址 routeAddress 内的 performAction 函数中。

该地址内的 performAction 函数原本的功能是协助 Wrapping 与 Unwrapping 的功能。

然而,该函数中出现了一个关键漏洞:用户在无需验证的情况下,直接在.call() 中通过 swapExtraData 调用外部数据,这意味着攻击者可以执行任意恶意函数。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

在这次事件中,攻击者制作了一个恶意的 swapExtraData 输入,触发 transferFrom 函数。该恶意调用利用了用户对 SocketGateway 合约的授权,从他们那里盗走了资金。

虽然合约会通过检查余额检查确保 fromToken.call()调用后用户余额会出现正确的变化,但该函数没有考虑攻击者将金额设置为 0 的情况。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

还原攻击流程

1.使用攻击合约,攻击者在 Socket Gateway 合约上调用了0x 00000196()。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末2.fallback() 使用六进制签名 196 调用了有漏洞的路由地址合约(routerAddress)。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末3.在下面的截图中,我们可以看到攻击者使用的虚假输入,Swapping 数量全部为 0 。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末4.接下来将调用 WrappedTokenSwapperImpl.performAction()进行 Swap。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

5.在没有进行任何验证的情况下,虚假的 SwapExtraData 被 fromToken (WETH)接受并执行。

数据验证环节漏洞导致损失330万美元,详解Socket攻击事件始末

免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

加⼊OKEx全球社群

和全球数字资产投资者交流讨论

扫码加入OKEx社群

相关推荐

industry-frontier