漏洞利用链与原理总结
1. 漏洞根源:合约权限验证缺陷
- 继承问题
KiloEx的 TrustedForwarder
合约继承了OpenZeppelin的MinimalForwarderUpgradeable
合约,但未对execute
方法进行override
(覆盖)。 -
导致后果:原始 execute
方法未设置权限控制,成为公开可调用的入口。
2. 攻击链关键步骤
-
绕过权限验证攻击者直接调用
MinimalForwarderUpgradeable
的原始execute
方法,绕过TrustedForwarder
合约的预期权限验证逻辑。 execute
方法触发调用 delegateExecutePositions
函数。-
权限验证缺失
delegateExecutePositions
函数仅验证msg.sender == trustedForwarder
,但未检查实际调用者(_msgSender()
)是否为合法keeper
。 -
攻击者可伪装为 trustedForwarder
发起恶意交易。 -
价格操纵套利攻击者通过两阶段操作实现非法获利:
- 第一阶段
:以极低价格开仓(操纵市场价格或利用漏洞)。 - 第二阶段
:以较高价格平仓,通过价差窃取资金。
3. 完整利用链
-
资金准备
-
攻击者从Tornado Cash提取1 ETH作为初始资金(匿名化来源)。 -
通过跨链桥(opBNB、Base、BSC等)拆分转移资金,用于多链部署攻击合约的Gas费。 -
合约部署
-
在opBNB、Base、BSC、Taiko等链上部署攻击合约,覆盖多链环境。 -
攻击执行
-
调用攻击合约,利用漏洞绕过权限验证,执行恶意交易(开仓与平仓组合操作)。
4. 漏洞原理总结
漏洞点 | 具体缺陷 |
---|---|
未覆盖execute 方法 |
|
keeper 身份验证缺失** |
trustedForwarder ),未验证实际调用者身份(keeper 权限)。 |
价格操纵逻辑漏洞 |
|
5. 攻击影响
- 直接损失
约844万美元(最终通过谈判追回全额资金,攻击者保留10%作为“白帽赏金”)。 - 安全启示
合约权限验证需覆盖全链路(从调用入口到执行逻辑),并严格区分 msg.sender
与_msgSender()
的权限控制。
核心安全教训
- 权限验证必须精细化
需区分合约调用者( msg.sender
)与实际交易发起者(如_msgSender()
)。 - 继承合约需完整覆盖
对关键父合约方法进行权限加固,避免暴露原始逻辑。 - 全生命周期安全防护
从审计、事中监控到应急响应,需形成闭环机制。
原文始发于微信公众号(OSINT研习社):KiloEx的800万是怎么被盗的
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论