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

2024-01-18 144 其它文章

来源:Beosin

2024年1月17日,据Beosin旗下EagleEye安全风险监控、预警与阻断平台监测显示,Socket协议遭受攻击者call注入攻击,导致大量授权用户资金被盗。目前攻击者将被盗资金兑换为ETH,并保存在攻击者地址上。

攻击发生之后,Socket官方确认被攻击,并第一时间暂停受影响的合约。

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

同时,MetaMask在X平台发文称,MetaMask Bridge用户不受今天发生的Socket漏洞的影响。MetaMask称设计跨链桥合约时采用了独特的架构,旨在防范此类攻击。

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

关于本次攻击,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。 

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

虽然对token地址有所限制,但是该函数还存在一个问题,便是未对amount进行限制,如果调用者传入的amount为0,则函数的检查条件将恒通过,并不需要调用WETH的deposit与withdraw函数。此时便可以在call中注入异常的数据,从而达到攻击的目的。

攻击流程

明白了函数问题点,我们来看看攻击者是如何实施攻击的。

1.攻击者首先创建了一个攻击合约。

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

2.随后,攻击者多次查询不同地址的WETH余额,并且查询该地址对于Socket: Gateway合约的授权数量,最后调用Socket: Gateway合约。 

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

3.可以看到,这里调用performAction函数的时候,swapExtraData参数传入的是0x23b872dd...,该数据是transferfrom的函数签名,说明这里将直接调用token的transferfrom函数。

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

4.可以看到,攻击者传入fromToken为WETH,amount正是我们上述的0,合约将攻击者的WETH转入合约,但转的是0,而在call调用中,攻击者指定一个用户地址向攻击者转了16枚WETH。

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

5.攻击者通过大量操作,将无数用户的WETH转移给自己。 

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

6.攻击者使用相同的方式,将授权给该合约的USDT转移给自己。 

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

7.还包括WBTC、DAI以及MATIC三种代币。 

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

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

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

截止发稿,被盗的近330万美元的资金,部分被攻击者兑换为了ETH,并且一直存在黑客地址未移动,Beosin Trace将对被盗资金进行持续监控。 

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

目前,互操作性协议Socket在X平台发布安全事件更新:Socket现已恢复运营,受影响的合约已暂停,损害已得到完全控制。在Bungee的桥接以及其大多数合作伙伴前端的桥接已经恢复。详细的事件分析和后续步骤将很快公布。

Socke提醒道:“小心回复中试图对您进行网络钓鱼的虚假Socket帐户。在采取任何行动之前,请务必仔细检查帐户。”

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

本次事件也再次提醒各位,安全不可掉以轻心。

币币情登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。

交易平台最新公告查看更多>
成交额排行榜
  • 交易所
  • 币种
排名 交易所 成交额
1 币安网币安网 ¥5,078.28亿
2 欧易OKX欧易OKX ¥1,990.80亿
3 火币全球站火币全球站 ¥139.05亿
4 抹茶抹茶 ¥329.36亿
5 芝麻开门芝麻开门 ¥364.61亿
6 库币库币 ¥146.63亿
7 Coinbase ProCoinbase Pro ¥115.86亿
8 bitFlyerbitFlyer ¥5.58亿
9 BitMEXBitMEX ¥0
10 BitstampBitstamp ¥16.81亿