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将继续致力于为平台提供全方位审计与检测,降低各类聚合风险,提高社区信任和整个行业的安全水平

评论

所有评论

推荐阅读

  • BTC跌破62000美元

    行情显示,BTC跌破62000美元,现报61975.8美元,24小时跌幅达到3.68%,行情波动较大,请做好风险控制。

  • ETH跌破1700美元

    行情显示,ETH跌破1700美元,现报1698.26美元,24小时跌幅达到5.23%,行情波动较大,请做好风险控制。

  • BTC跌破63000美元

    行情显示,BTC跌破63000美元,现报62990.02美元,24小时跌幅达到1.89%,行情波动较大,请做好风险控制。

  • 美国现货比特币ETF昨日净流入269万美元

    6月5日,据Trader T监测,美国现货比特币ETF昨日净流入269万美元。

  • 美国现货以太坊ETF昨日净流入1887万美元

    6月5日,据Trader T监测,美国现货以太坊ETF昨日净流入1887万美元。

  • BTC跌破63000美元

    行情显示,BTC跌破63000美元,现报62976美元,24小时涨幅达到0.83%,行情波动较大,请做好风险控制。

  • 美国众议院一个关键委员会正准备最早于本周五提出加密货币税收法案

    6月4日,据彭博社报道,美国众议院一个关键委员会正准备最早于本周五提出加密货币税收法案。这些法案将涵盖质押和挖矿奖励,旨在使数字资产的税收规则与传统证券的税收规则保持一致。

  • SpaceX史上最大规模IPO临近,太空概念股大涨,Momentus涨超24%

    6月4日,太空概念股大涨,Momentus涨超24%,维珍银河涨超18%,Redwire涨超17%,York Space Systems涨超7%,波音、GE航空航天、Rocket Lab涨近3%。 消息面上,SpaceX周三向美国证交会(SEC)提交的一份文件中披露,计划在正式启动IPO推介工作之前,将发行价格固定在每股135美元,筹集750亿美元资金。若按此发行价计算,SpaceX的估值将达到1.77万亿美元,晋升为美国第七大上市公司,超越目前估值约为1.6万亿美元的特斯拉。SpaceX计划于6月12日在纳斯达克交易所正式挂牌上市。在长达数百页的招股书中,SpaceX将其可触达的潜在市场规模(TAM)锚定在史无前例的28.5万亿美元。

  • SpaceX用17分钟的视频向散户推介IPO 阐释未来愿景并勾勒宏大目标

    6月4日,SpaceX周四一早通过一段视频向散户投资者展开IPO推介。在这段视频中,首席财务官Bret Johnsen把公司的火箭、卫星和人工智能业务串联了起来。这段时长17分钟的演示视频,是这家由埃隆·马斯克领导的公司吸引全球普通投资者的行动之一。媒体此前报道,这些买家是SpaceX此次IPO策略中的关键组成部分,在750亿美元发行规模中,多达30%将分配给这类投资者。Johnsen是视频中唯一出镜的人。他首先介绍自己是公司有史以来唯一一位首席财务官。视频位于公司网站spacexipo.com上,上面有显著提示,鼓励访问者开设券商账户。Johnsen说:“埃隆创立SpaceX的目标,是改变人类,让我们成为一个多星球物种。非常令人振奋的是,我们已经能够通过Starlink星座以及我们的AI解决方案来扩展这一愿景。”这次路演列出了一些未来目标,但未说明具体实现时间,包括把毛利率从去年的49%提高到约70%,并实现约45%的净利润率,而去年这一指标为负26%。公司在视频中勾勒了宏大的抱负,包括把数据中心送入太空。视频还介绍了其业务,包括可重复使用火箭,以及为地球提供宽带互联网接入的Starlink卫星系统。

  • 纳斯达克中国金龙指数涨超0.5%

    6月4日,纳斯达克中国金龙指数涨超0.5%,大全新能源涨6.94%,小牛电动涨6.25%,腾讯音乐涨3.99%,亿咖通科技涨3.76%,哔哩哔哩涨3.47%。