KiloEx的800万是怎么被盗的

admin 2025年4月23日00:02:23评论0 views字数 1127阅读3分45秒阅读模式
KiloEx的800万是怎么被盗的
慢雾(SlowMist) 协助 KiloEx 追回全部被盗资金,事件回顾

漏洞利用链与原理总结

1. 漏洞根源:合约权限验证缺陷

  • 继承问题
    KiloEx的TrustedForwarder合约继承了OpenZeppelin的MinimalForwarderUpgradeable合约,但未对execute方法进行override(覆盖)。
    • 导致后果:原始execute方法未设置权限控制,成为公开可调用的入口。

2. 攻击链关键步骤

  1. 绕过权限验证攻击者直接调用MinimalForwarderUpgradeable的原始execute方法,绕过TrustedForwarder合约的预期权限验证逻辑。

    • execute
      方法触发调用delegateExecutePositions函数。
  2. 权限验证缺失delegateExecutePositions函数仅验证msg.sender == trustedForwarder,但未检查实际调用者(_msgSender())是否为合法keeper

    • 攻击者可伪装为trustedForwarder发起恶意交易。
  3. 价格操纵套利攻击者通过两阶段操作实现非法获利:

    • 第一阶段
      :以极低价格开仓(操纵市场价格或利用漏洞)。
    • 第二阶段
      :以较高价格平仓,通过价差窃取资金。

3. 完整利用链

  1. 资金准备

    • 攻击者从Tornado Cash提取1 ETH作为初始资金(匿名化来源)。
    • 通过跨链桥(opBNB、Base、BSC等)拆分转移资金,用于多链部署攻击合约的Gas费。
  2. 合约部署

    • 在opBNB、Base、BSC、Taiko等链上部署攻击合约,覆盖多链环境。
  3. 攻击执行

    • 调用攻击合约,利用漏洞绕过权限验证,执行恶意交易(开仓与平仓组合操作)。

4. 漏洞原理总结

漏洞点 具体缺陷
未覆盖execute方法
未在子合约中重写父合约方法,导致原始方法权限控制失效。
**keeper身份验证缺失**
仅验证调用合约地址(trustedForwarder),未验证实际调用者身份(keeper权限)。
价格操纵逻辑漏洞
允许攻击者通过非正常价格开仓/平仓,利用价差非法获利。

5. 攻击影响

  • 直接损失
    约844万美元(最终通过谈判追回全额资金,攻击者保留10%作为“白帽赏金”)。
  • 安全启示
    合约权限验证需覆盖全链路(从调用入口到执行逻辑),并严格区分msg.sender_msgSender()的权限控制。

核心安全教训

  1. 权限验证必须精细化
    需区分合约调用者(msg.sender)与实际交易发起者(如_msgSender())。
  2. 继承合约需完整覆盖
    对关键父合约方法进行权限加固,避免暴露原始逻辑。
  3. 全生命周期安全防护
    从审计、事中监控到应急响应,需形成闭环机制。

原文始发于微信公众号(OSINT研习社):KiloEx的800万是怎么被盗的

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月23日00:02:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   KiloEx的800万是怎么被盗的https://cn-sec.com/archives/3986115.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息