智能合约漏洞案例,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安全团队及时对此安全事件进行分析。

智能合约漏洞案例,EDE Finance 攻击事件分析_第1张图片

攻击过程分析

  • 攻击时间背景

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

  • 攻击步骤

    1.攻击者部署攻击合约
    智能合约漏洞案例,EDE Finance 攻击事件分析_第3张图片 2.攻击者通过调用攻击合约,间接调用了 RouterSign 合约中的添加仓位操作
    智能合约漏洞案例,EDE Finance 攻击事件分析_第4张图片
    智能合约漏洞案例,EDE Finance 攻击事件分析_第5张图片 3.随后攻击者立即又利用攻击合约调用了 Router 合约的减仓操作
    智能合约漏洞案例,EDE Finance 攻击事件分析_第6张图片
    智能合约漏洞案例,EDE Finance 攻击事件分析_第7张图片 4.后续,攻击者通过重复上述攻击步骤,通过多次加仓减仓,进行大额获利
    智能合约漏洞案例,EDE Finance 攻击事件分析_第8张图片

核心漏洞

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

资金来源及流向

通过分析发现,攻击地址初始手续费通过 0x483e657f53c7bc00c2d2a26988749dd8846229e3 地址转入 0.002ETH
0x483e657f53c7bc00c2d2a26988749dd8846229e3 地址的初始手续费通过 Kucoin 交易所提取
智能合约漏洞案例,EDE Finance 攻击事件分析_第13张图片

总结及建议

  • 分析总结

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

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

安全建议

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

你可能感兴趣的:(智能合约漏洞案例,智能合约,区块链,web3,安全,web安全)