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

评论

所有评论

推荐阅读

  • Tether 开出总估价超过 20 亿欧元的新报价收购尤文图斯

    加密货币巨头 Tether 公司对于收购尤文图斯俱乐部的计划非常认真,他们准备再次开出一份超过 20 亿欧元的新报价。昨天 Tether 已经向 Exor 董事会提交了一份报价,意图收购阿涅利家族控股公司所持有的尤文图斯 65.4% 股份,这一消息由首席执行官保罗-阿尔多伊诺通过社交媒体公布,但这仅仅是谈判的开始。

  • American Bitcoin比特币储备过去7天增加约623枚,现仓位达4941枚BTC

    此前曾披露分析“1011内幕巨鲸”的链上分析师Emmett Gallic在X平台发文披露特朗普家族支持的加密矿企American Bitcoin比特币储备更新数据,过去七天增加约623枚BTC,其中约80枚来自于挖矿收入,542枚来自于公开市场的战略收购,截至目前其比特币总持有量增至4941枚,当前市值约合4.5亿美元。

  • 美国现货以太坊ETF昨日净流出1940万美元

    据TraderT监测,美国现货以太坊ETF昨日净流出1940万美元

  • 华夏基金香港在Solana上推出亚洲最大代币化货币市场基金

    12月12日消息,华夏基金香港(ChinaAMC HK)产品与策略负责人 Katie He 在 Solana Breakpoint 大会上表示,将推出亚洲首个且规模最大的代币化货币市场基金,涵盖港币(HKD)、美元(USD)和人民币(RMB)计价,将传统货币市场工具代币化,为投资者提供安全、链上访问稳定收益的机会,具有完全透明度和实时结算。经过数月与监管机构及 OSL 等伙伴的合作,这一创新将自香港扩展至更广阔地区,并原生部署到 Solana 区块链上。

  • 加拿大皇家银行已购入77,700股American Bitcoin股票

    据市场消息:价值1万亿美元的加拿大皇家银行已购入77,700股American Bitcoin ($ABTC)股票,价值约15万美元。该比特币矿企由特朗普家族成员Eric Trump支持。

  • 中国人民银行:继续实施适度宽松的货币政策,推进人民币国际化

    中国人民银行党委召开会议,会议纪要第三点指出:继续实施适度宽松的货币政策,加快推进金融供给侧结构性改革。把促进经济稳定增长、物价合理回升作为货币政策的重要考量,灵活高效运用降准降息等多种货币政策工具,把握好政策实施的力度、节奏和时机,保持流动性充裕,促进社会综合融资成本低位运行,加强对实体经济的金融支持。畅通货币政策传导机制,优化结构性货币政策工具运用,加强与财政政策的协同,激励和引导金融机构加力支持扩大内需、科技创新、中小微企业等重点领域。保持人民币汇率在合理均衡水平上的基本稳定。会议纪要第五点指出:稳步推进金融高水平开放,维护中国国家金融安全。践行全球治理倡议,积极参与和推进全球金融治理改革完善。务实开展金融外交和多双边货币金融合作。推进人民币国际化。持续建设和发展多渠道、广覆盖的人民币跨境支付体系。稳步发展数字人民币。

  • 日本央行据悉将进行更多加息 部分官员认为中性利率高于1%

    据知情人士透露,日本央行官员认为,在本轮加息周期结束前,利率很可能升至0.75%之上,这表明在下周加息之后,可能还会有更多次加息。这些人士称,官员认为,即使加息至0.75%,日本央行仍未达到中性利率水平。部分官员已认为1%仍低于中性利率水平。知情人士表示,即便日本央行根据最新数据更新中性利率估算,目前也并不认为该区间会显著收窄。目前日本央行对名义中性利率区间的估计约为1%至2.5%。知情人士称,日本央行官员认为该区间上下限本身也可能存在误差。(金十)

  • Nexus 启动“节点之光·先锋理财周”,打造节点用户专属通道

    Nexus 12月12日宣布即将启动为期五天的 “节点之光·先锋理财周”,以“节点身份金融特权” 为核心理念,为生态核心参与者开启一段独立于全平台的专属理财周期。此次活动仅限节点用户参与专属理财包认购,并为随后上线的全平台理财与 NexSwap 注入市场期待。

  • 美 SEC 主席:DTC 参与者可将代币化证券转入其他参与者的注册钱包

    美国证券交易委员会(SEC)主席 Paul Atkins 在 X 平台发文表示,美国金融市场即将向链上转型并将优先考虑创新并积极采用新技术,SEC 已向美国存托信托与清算公司(DTC)发布了一封不采取行动的信函,链上市场将为投资者带来更高的可预测性、透明度和效率,现在 DTC 参与者可以直接将代币化证券转入其他参与者的注册钱包,这些交易将被 DTC 官方记录跟踪。

  • Tether 计划通过股票发行筹集最高 200 亿美元资金

    据彭博社报道,Tether 计划通过股票发行筹集最高 200 亿美元资金,并将在完成股票出售后考虑将股票代币化。知情人士透露,Tether 的高管们正在考虑各种方案,包括股票回购,以及在交易完成后通过代币化的方式将公司的股票以数字形式存储在区块链上。