被盗约 330 万美元,跨链互操作协议 Socket 如何遭受黑客 call 注入攻击?
作者:Beosin

2024 年 1 月 17 日,据 Beosin 旗下 EagleEye 安全风险监控、预警与阻断平台监测显示,Socket 协议遭受攻击者 call 注入攻击,导致大量授权用户资金被盗。目前攻击者将被盗资金兑换为 ETH,并保存在攻击者地址上。
攻击发生之后,Socket 官方确认被攻击,并第一时间暂停受影响的合约。
同时,MetaMask 在 X 平台发文称,MetaMask Bridge 用户不受今天发生的 Socket 漏洞的影响。MetaMask 称设计跨链桥合约时采用了独特的架构,旨在防范此类攻击。
关于本次攻击,Beosin 安全团队对本次漏洞进行了分析。
漏洞分析
该事件发生的主要原因是Socket 合约的 performAction 函数存在不安全的 call 调用。如下图,该函数的基本功能是将用户的 ETH 和 WETH 进行转换,如果调用者选择 fromToken 为 ETH,那么将会查询合约的 toToken(WETH) 余额,随后通过 call 调用 toToken(正常逻辑下,此处必须调用 WETH 的 deposit 函数),并转入用户指定的 ETH 数量,接下来查询合约的 toToken(WETH) 新余额,如果等于转入用户指定的 ETH 数量,那么通过,并将 toToken 转给调用者指定地址。如果调用者选择 fromToken 不为 ETH,那么与上述同理,函数功能就是将调用者的 WETH 兑换成 ETH(正常情况下,call 调用必须是调用 WETH 的 withdraw 函数)并发送给用户指定地址。
虽然函数中并没有对 fromToken 与 toToken 进行任何检查限制,但是除了传入 WETH 地址,其他 ERC20 地址都将导致余额检查失败,从而无法伪造这两个参数,间接将 token 地址限制为 WETH。
虽然对 token 地址有所限制,但是该函数还存在一个问题,便是未对 amount 进行限制,如果调用者传入的 amount 为 0,则函数的检查条件将恒通过,并不需要调用 WETH 的 deposit 与 withdraw 函数。此时便可以在 call 中注入异常的数据,从而达到攻击的目的。
攻击流程
明白了函数问题点,我们来看看攻击者是如何实施攻击的。
1.攻击者首先创建了一个攻击合约。
2.随后,攻击者多次查询不同地址的 WETH 余额,并且查询该地址对于 Socket: Gateway 合约的授权数量,最后调用 Socket: Gateway 合约。
3.可以看到,这里调用 performAction 函数的时候,swapExtraData 参数传入的是 0x23b872dd...,该数据是 transferfrom 的函数签名,说明这里将直接调用 token 的 transferfrom 函数。
4.可以看到,攻击者传入 fromToken 为 WETH,amount 正是我们上述的 0,合约将攻击者的 WETH 转入合约,但转的是 0,而在 call 调用中,攻击者指定一个用户地址向攻击者转了 16 枚 WETH。
5.攻击者通过大量操作,将无数用户的 WETH 转移给自己。
6.攻击者使用相同的方式,将授权给该合约的 USDT 转移给自己。
7.还包括 WBTC、DAI 以及 MATIC 三种代币。
截止发稿,被盗的近 330 万美元的资金,部分被攻击者兑换为了 ETH,并且一直存在黑客地址未移动,Beosin Trace 将对被盗资金进行持续监控。
目前,互操作性协议 Socket 在 X 平台发布安全事件更新:Socket 现已恢复运营,受影响的合约已暂停,损害已得到完全控制。在 Bungee 的桥接以及其大多数合作伙伴前端的桥接已经恢复。详细的事件分析和后续步骤将很快公布。
Socke 提醒道:“小心回复中试图对您进行网络钓鱼的虚假 Socket 帐户。在采取任何行动之前,请务必仔细检查帐户。”
本次事件也再次提醒各位,安全不可掉以轻心,2024 刚开始,我们已经面对多起安全事件,Beosin 作为一家全球领先的区块链安全公司,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控、预警与阻断、虚拟货币被盗资产追回、安全合规 KYT/AML 等“一站式”区块链安全产品 + 服务,我们致力于 Web3 生态的安全发展,如果有需要,请与我们联系。
Beosin 安全年报阅读


0
0
免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。
你已了解市场,是时候开始交易了!
Bitget支持一站式交易加密货币、股票和黄金等。
立即交易!
你也可能喜欢
CandyBomb x DEBIT(第2期):交易瓜分 45,000 USDT!
Bitget Announcement•2026/09/11 12:00
趋势追踪机器人升级:现已支持自定义设置参数
Bitget Announcement•2026/09/09 14:16
CandyBomb x CNPY:交易瓜分 75,000 USDC!
Bitget Announcement•2026/09/08 13:00
Bitget 现货杠杆新增 CP/USDT, SOPH/USDT!
Bitget Announcement•2026/09/08 11:00
加密货币价格
更多Bitcoin
BTC
$78,832.3
+1.90%
Ethereum
ETH
$2,603.49
+6.62%
Tether USDt
USDT
$0.9998
+0.02%
BNB
BNB
$732.54
+3.20%
XRP
XRP
$1.39
+2.45%
USDC
USDC
$0.9999
+0.00%
Solana
SOL
$103.13
+3.08%
TRON
TRX
$0.3366
-0.61%
Hyperliquid
HYPE
$82.76
+2.21%
Zcash
ZEC
$1,185.36
+0.75%
交易热门币种
新用户可获得价值 6200 USDT 的迎新大礼包
立即交易
立即成为交易者?新用户可获得价值 6200 USDT 的迎新大礼包
立即注册