• 20260911-Etherfi AtomicQueue 攻击事件:订单校验逻辑未实现,用户授权被滥用


    背景

    20260911,Etherfi AtomicQueue 合约被黑客利用,窃取了一名用户 14.44 枚 liquidETH 代币(价值约 38k)。本次攻击产生的原因是订单检查逻辑被绕过,导致用户的代币授权权限被攻击者盗用。

    Trace 分析

    1. 攻击者首先创建了一个无价值的假代币(0xd9b5)。

    2. 调用 AtomicQueue.updateAtomicRequest() 设置交易订单,订单内容是用假代币换取 0x1226 用户的 liquidETH 代币。

    3. 调用 AtomicQueue.solve() 完成该订单。

    4. 反复执行步骤 2-3 完成获利。

    代码分析

    调用 slover 的 finishSolve 函数来验证这笔交易是否满足 solver 的要求,如果该函数执行通过,则表明这笔订单符合 solver 的要求, AtomicQueue 合约可以继续完成这笔代币兑换的交易。

    跟进 Trace 进行分析,该函数 delegate 调用了 CoinbaseSmartWallet.finishSolve() 函数。

    按照代码中的注释,该合约应该是作为一个专门为 AtomicQueue 合约服务的 solver 合约。

    但实际上他是一个 CoinbaseSmartWallet 合约,一个通用的 SmartWallet 类型合约,并没有实现任何 finishSolve() 函数相关的内容。所以 AtomicQueue 合约对 CoinbaseSmartWallet.finishSolve() 函数的调用会走到 fallback 函数中去。由于 fallback 函数中并没有实现相关的处理逻辑,这个调用会静默成功。以达到了“solver 同意” 的假象。

    最终 AtomicQueue 合约会调用 transferFrom 函数将受害合约的 liquidETH 代币发送给攻击者。

    当然,这次的攻击要成功的前提是 CoinbaseSmartWallet 合约需要向 AtomicQueue 合约授权liquidETH 代币。经过查找,它确实执行过两次授权操作:

    同时也提醒各位,在没有实现相关的检测逻辑前,不要向 AtomicQueue 合约进行任何代币的授权操作。


    __EOF__

  • 本文作者: ACai's Blog
  • 本文链接: https://www.cnblogs.com/acaigarden/p/22949179
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
  • 相关阅读:
    火山引擎ByteHouse:分析型数据库如何设计并发控制?
    linux设备模型:sysfs(kobject)解析
    c++还原简单的vector
    为什么学编程都建议不要用拼音命名?
    python在cmd中运行.exe文件时报错:不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法
    索引的基础使用
    C语言简述
    【计算机网络】IP协议第二讲(Mac帧、IP地址、碰撞检测、ARP协议介绍)
    c++调用windows vhd接口挂在vhd虚拟盘
    一言不合就汇编--分析max宏的两种异常情况
  • 原文地址:https://www.cnblogs.com/ACaiGarden/p/22949179