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

评论

所有评论

推荐阅读

  • 过去24小时全网爆仓1.21亿美元,多单爆仓8292万美元

    据 Coinglass 数据显示,过去 24 小时全网爆仓 1.21 亿美元,其中多单爆仓 8292 万美元,空单爆仓 3832 万美元。比特币爆仓约 3497 万美元,以太坊爆仓约 2035 万美元。

  • 名义价值12亿美元的BTC期权和9.3亿美元的ETH期权即将到期

    Greeks.live数据显示,5月17日期权交割数据:1.8万张BTC期权即将到期,Put Call Ratio为0.63,最大痛点63000美元,名义价值12亿美元。 32万张ETH期权即将到期,Put Call Ratio为0.28,最大痛点3000美元,名义价值9.3亿美元。 Greeks.live表示,本周受美股Meme风潮的激励,BTC ETF也收获了明显的资金流入,BTC大幅上涨突破65000美元,但Meme以外的加密市场较为弱势,成交量继续下跌,BTC和ETH的期权数据分化就可以体现这一点。 从大宗交易和市场交易结构看,各主要期限IV下降趋势结束进入横盘,目前下跌的空间不大。BTC多空较为均衡,而ETH币价弱势导致市场信心持续减弱,卖出看涨成为绝对主力成交。

  • Binance协助中国台湾执法部门破获涉案近2亿新台币的重大虚拟资产案件

    5月17日消息,Binance发布公告称,近日,Binance金融犯罪合规部(FCC)联合中国台湾司法部调查局破获一起涉及虚拟资产洗钱的重大刑事案件,涉案金额近新台币2亿元。Binance在整个案件中为台湾犯罪斗士提供支持,提供关键情报和援助,在推进调查方面发挥了关键作用。 除了业务协助外,Binance还在台湾推出了一系列执法培训计划,与十多个不同单位合作,涉及千多名执法人员,这些努力都得到了非常积极的反馈。

  • Tether CEO:Tron Network上增发10亿枚USDT,已授权未发行

    5月17日,Tether CEO Paolo Ardoino表示,已于北京时间今日凌晨在Tron Network上增发10亿枚USDT,已授权未发行,这意味着该金额将用作下一期发行请求和链交换的库存。

  • 链上索引服务Subsquid完成总额1750万美元融资,DFG等参投

    链上索引服务Subsquid宣布通过CoinList社区销售完成630万美元融资,截至目前其融资总额已达到1750万美元,DFG、Hypersphere、Zee Prime、Blockchange和Lattice参投,据悉其原生代币SQD拟于本周五上市,而Subsquid SDK已与Google BigQuery集成,允许开发人员使用Google的技术来分析区块链数据,继而降低业内区块链和开发者社区大规模部署的数据成本。

  • Optimism 2024 Q1报告:EIP-4844的实施使L1提交成本降低了99%

    Optimism发布2024 Q1报告,其中日活地址达到89,000个(环比增长23%),每日交易量增至470,000笔(环比增长39%)。这些指标均略低于2023年第三季度的历史高点。 OP主网的稳定币市值达到8.09亿美元(环比增长32%)。过去六个月,USDT在OP主网上的市值大幅飙升,达到5.12亿美元(环比增长64%),占总市值的63%。 EIP-4844的实施使L1提交成本降低了99%,将平均每日成本从前几周的420,000美元减少到830美元。2024年Q1 OP主网的链上利润为200万美元(环比增长14%)。

  • Peaq通过CoinList Launch完成2000万美元募资

    适用于DePIN和机器RWA的Layer1区块链Peaq在X平台宣布,其通过5月9日至5月16日在CoinList上推出的原生代币Launch中完成2000万美元募资,截至目前超过14.5万名社区成员完成超3600万美元的超额认购,新资金将用于加速peqosystem的增长,并推动各种生态系统和社区计划的进一步巩固。

  • 让 ICO 回归:分布式代币发行 (DTL)

    DTL 的核心焦点是将代币及其技术交到真实用户手中,而不仅仅是投机者。

  • 宏观思考:并非都是厄运和阴霾

    这可能是一次健康的重置。