智能合约漏洞案例,EDE Finance 攻击事件分析

智能合约漏洞案例,EDE Finance 攻击事件分析

事件背景

Safful区块链安全情报平台监控到消息,北京时间 2023 年 5 月 30 日,Arbitrum 链上 EDE Finance 项目受到黑客攻击,攻击者获利 597,694 USDC 及 86,222 USDT,攻击者地址为 0x80826e9801420e19a948b8ef477fd20f754932dc。攻击者完成攻击后,在链上留言声称为“白帽行为”,目前攻击者已返还 EDE FinanceEDE Finance 项目 333,948 USDC 及 86,222 USDT,留下部分 USDC 未转移。Safful安全团队及时对此安全事件进行分析。

image.png

攻击过程分析

  • 攻击时间背景

攻击者提前创建好攻击合约:
0x6dd3d2fb02b0d7da5dd30146305a14190e6fb892
创建攻击合约的交易 hash:
0xd7bfe2ed548c40d3e9b301a83f16e9c4080e151470ebf4d03c83ff302b9ad99e
攻击合约是一个代理合约,其主要逻辑合约位于:
0x171c01883460b83144c2098101cd57273b72a054,未做合约验证
攻击者其中一组攻击交易:
0xc3677aec922f3c0641176277d9923bf03ff400e9b79013ba86ac8ceb878fcd86
0x6e48dbe65c9997d774d75bc01468a354c3660a44eef59a4383639933a50fc814
EDE 项目的价格预言机合约 VaultPriceFeedV21Fast :
0x046600975bed388d368f843a67e41545e27a2591
EDE 项目的Router合约:
0x2c7077cf9bd07c3bc45b4e5b8c27f8b95c6550b3
EDE 项目的 RouterSign 合约:
0xd067e4b0144841bc79153874d385671ea4c4e4df ,此合约地址拥有 Updater 管理员权限,该权限可以进行加密资产的价格设置,如下图所示。
image.png

  • 攻击步骤

    1.攻击者部署攻击合约
    image.png 2.攻击者通过调用攻击合约,间接调用了 RouterSign 合约中的添加仓位操作
    image.png
    image.png 3.随后攻击者立即又利用攻击合约调用了 Router 合约的减仓操作
    image.png
    image.png 4.后续,攻击者通过重复上述攻击步骤,通过多次加仓减仓,进行大额获利
    image.png

核心漏洞

根据对攻击交易分析,发现攻击者通过加仓与减仓直接使用的价格差从而获取巨额资金,具体如下分析过程。
加仓时使用价格:
image.png
减仓时使用价格:
image.png
加仓和减仓的价格明显存在较大差距。
通过对攻击者交易的调用堆栈发现,其在加仓时,通过调用了 EDE 项目中价格预言机的更新价格功能 updateWithSig ,而预言机的喂价功能不仅限制了必须存在 Updater 特权角色,且必须使用 Updater 角色进行签名才可以正常调用。
image.png
但攻击者利用了 RouterSign 合约的加仓函数,间接调用 价格预言机中的 updateWithSig 特权函数,从而成功绕过了原本的 onlyUpdater 权限限制。
image.png
并且由于 EDE 价格预言机中喂价签名验证机制存在问题,虽然对签名时间进行了校验,但未对已经使用过的签名进行校验,导致攻击者可以重放管理员签名。
image.png
如下图为攻击者间接调用预言机喂价功能传递的签名参数:
image.png
如下图为 EDE 项目管理员通过预言机合约直接调用喂价功能使用的参数:
image.png
所以,综上所述,攻击者使用管理员签名,并且绕过 onlyupdater 限制,成功重放并设置了一个较高的 Token 价格,并在随后立即使用新价格执行加仓操作,然后攻击者立即调用 Router 合约使用正常的价格进行减仓,利用较大的价格差从而获利。

资金来源及流向

通过分析发现,攻击地址初始手续费通过 0x483e657f53c7bc00c2d2a26988749dd8846229e3 地址转入 0.002ETH
0x483e657f53c7bc00c2d2a26988749dd8846229e3 地址的初始手续费通过 Kucoin 交易所提取
image.png

总结及建议

  • 分析总结

本次攻击是由于项目新增合约时未进行安全审计,新增合约破坏原有合约权限认证机制,配合 Updater 签名重放问题,从而导致这两个利用点被组合利用。
攻击利用点:

  • RouterSign 合约中对 updateWithSig 的 Updater 特权限制绕过
  • Updater 特权签名重放

安全建议

  1. 项目价格预言机喂价的签名验证添加唯一标识符,并限制每个签名只能使用一次;
  2. 项目需要确认 RouterSign 合约中的功能函数是否能外部公开,且设置权限校验。

猜你喜欢

转载自blog.csdn.net/weixin_28733483/article/details/132849330
今日推荐