Cointime

扫码下载App
iOS & Android

详解Socket攻击事件始末

项目方

2024 年 1 月 16 日,Socket Tech遭到攻击,损失约 330 万美元。 攻击者利用了Socket某合约中数据验证环节的漏洞,通过恶意数据输入盗取了授权合约的用户资金。 这次攻击共给 230 个地址带来损失,最大的单地址损失约为 65.6 万美元。

背景介绍

Socket 是一种服务于跨链安全、高效数据和资产传输的互操作性协议。 Socket Gateway合约是与 Socket 流动性层所有交互的接入点,所有资产桥接器和 DEX 在此汇聚成一个唯一的元桥接器,并根据用户偏好(如成本、延迟或安全性)选择最佳交易路由。

黑客攻击发生的前三天,Socket合约管理员执行了addRoute命令,在系统中加入了一条新路由。 添加路由的目的是扩展Socket网关的功能,但却无意中引入了一个关键漏洞。

下图为通过合约管理员添加路由的记录

事件梗概

  1. 1,北京时间1月16日15:03,攻击者钱包转入攻击所用资金,我们的时间分析表明这笔资金来自0xe620,与从Tornado Cash提取的10 BNB有关。

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

  1. 3,接下来,第二个合约则将目标对准了受害者地址内的WETH, USDT, WBTC, DAI 与MATIC。于是,另外104名受害者损失了如下资产:
  • 42.47526105 WETH
  • 347,005.65 USDT
  • 2.88962154 WBTC
  • 13,821.01 DAI
  • 165,356.99 MATIC
  1. 4,攻击者将USDC与USDT转换成了ETH。

漏洞来源

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

该地址内的performAction函数原本的功能是协助Wrapping与Unwrapping的功能。 然而,该函数中出现了一个关键漏洞:用户在无需验证的情况下,直接在.call() 中通过swapExtraData调用外部数据,这意味着攻击者可以执行任意恶意函数。

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

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

还原攻击流程

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

  1. 2,fallback() 使用六进制签名 196 调用了有漏洞的路由地址合约(routerAddress)。

  1. 3,在下面的截图中,我们可以看到攻击者使用的虚假输入,Swapping数量全部为0。

  1. 4,接下来将调用WrappedTokenSwapperImpl.performAction() 进行Swap。

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

  1. 6,攻击者重复执行以上流程,直到受害者资产耗尽。 恶意交易出现后,Socket 迅速调用了 disableRoute,屏蔽了之前有漏洞的路由,阻止了更大范围的攻击。
  2. 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将继续致力于为平台提供全方位审计与检测,降低各类聚合风险,提高社区信任和整个行业的安全水平

评论

所有评论

推荐阅读

  • 美国上周首次申领失业救济人数为20.3万人 低于市场预期

    美国上周首次申领失业救济人数为203,000人;预估为208,000人。

  • 特朗普政府仍在考虑对半导体征收新一轮全面关税

    据Politico:据八名了解相关讨论的人士透露,尽管科技公司警告称此举可能会断送美国在人工智能领域占据主导地位的希望,但特朗普政府仍在考虑对半导体征收新一轮全面关税。

  • BTC突破80000美元

    行情显示,BTC突破80000美元,现报80000.77美元,24小时涨幅达到1.31%,行情波动较大,请做好风险控制。

  • 英伟达2028财年营收展望远超市场预期 盘前涨近6%

    8月27日,英伟达盘前涨近6%。公司2027财年Q2营收962亿美元,同比增长106%;调整后每股收益2.22美元,同比增长120%。英伟达CFO在财报电话会议上表示2028财年营收将增长约70%,远超市场预估的45%。英伟达CEO黄仁勋表示,以前从未提前一年给出业绩指引。

  • 中美就年内元首互动保持沟通

    8月27日,今日,外交部发言人林剑主持例行记者会。有记者就中美高层互动相关问题提问。对此,林剑表示,中美双方就年内元首互动安排保持着沟通。(央视新闻)

  • 商务部回应美考虑对华额外加征7.5%关税

    8月27日,商务部27日举行例行新闻发布会,商务部新闻发言人黄玲在回应有关美国政府考虑对自中国进口商品额外加征7.5%关税的提问时说,美方以“产能过剩”为由对包括中国在内的16个经济体发起301调查,将经贸问题政治化,是典型的单边主义、保护主义行为,中方对此坚决反对。我们将继续密切关注并全面评估美方后续举措,并保留采取一切必要措施的权利。(新华社)

  • 韩股收涨1.53%

    8月27日,韩国综合指数收盘上涨104.16点,涨幅1.53%,报6912.37点。个股中,三星电子收涨1.72%,SK海力士收涨2.49%。

  • CZ:传统证券市场跨境投资门槛高,区块链技术能实现全球化交易

    币安创始人 CZ 在香港分享会上表示,传统证券市场跨境投资门槛高,多数公司股票仅面向本国投资者,投资者跨境开户困难。CZ 指出,除美国和中国外,多数国家缺乏强大的证券交易所,菲律宾证券交易所日交易量仅 5000 万美元,相当于纽约一个交易员的日交易量。企业需寻求在香港等地上市,而区块链技术能实现全球化交易。

  • 科威特、卡塔尔增加经霍尔木兹海峡原油出口 出口量已恢复至冲突前70%

    8月27日,波斯湾两个规模较小的石油生产国科威特和卡塔尔正增加经霍尔木兹海峡运送的原油,进一步推动该水道石油运输量回升。交易员透露,伊朗战争爆发前,两国合计每天出口约200万桶石油,目前出口量已恢复至冲突前水平的70%。阿联酋是首个恢复经霍尔木兹海峡大规模出口石油的海湾产油国,其采用被称为“穿梭运输”的方式,在阿曼湾进行船对船转运。此后沙特也加入其中。交易员表示,目前每天约有700万至800万桶石油经霍尔木兹海峡运出,高于7月中旬约400万桶的水平,相当于战前水平的约四分之三。Vortexa周一表示,经该水道运输的石油流量接近每日1000万桶。