Exactly Protocol 攻击事件原理分析

Exactly Protocol 攻击事件原理分析

8 月 18 日,Exactly protocol 遭遇黑客攻击,攻击者已获利约 1204 万美元。
安全公司Safful对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

一、 事件分析

攻击者地址:
0x3747dbbcb5c07786a4c59883e473a2e38f571af9
0x417179df13ba3ed138b0a58eaa0c3813430a20e0
0xe4f34a72d7c18b6f666d6ca53fbc3790bc9da042
攻击合约:
0x6dd61c69415c8ecab3fefd80d079435ead1a5b4d
被攻击合约:
0x675d410dcf6f343219aae8d1dde0bfab46f52106
攻击交易:
0x3d6367de5c191204b44b8a5cf975f257472087a9aadc59b5d744ffdef33a520e
0x1526acfb7062090bd5fed1b3821d1691c87f6c4fb294f56b5b921f0edf0cfad6
0xe8999fb57684856d637504f1f0082b69a3f7b34dd4e7597bea376c9466813585

攻击流程:
(1)攻击者(0x417179df)先通过攻击合约(0x6dd61c69)创建了多个恶意市场代币合约和多个 uniswapPool 合约。

image.png
image.png

(2)随后调用被攻击合约(0x675d410d)的 leverage 函数并传入一个恶意市场代币地址。

image.png

(3)在 leverage 函数中通过 deposit 函数到 pool 合约中添加 USDC 和恶意市场代币的流动性并重入到被攻击合约(0x675d410d)的 crossDeleverage 函数

image.png

(4)在 crossDeleverage 函数中被攻击合约(0x675d410d)会使用 USDC 到 pool 合约中兑换恶意市场代币。

image.png

(5)函数调用完成后,攻击合约(0x6dd61c69)移除 pool 中的流动性,随后提出兑换而来的 USDC 代币获利。

image.png

(6) 多次循环上面的操作,每次攻击都会更换被攻击用户地址和恶意市场代币地址。

image.png

(7) 然后将获得的 USDC 发送给攻击者(0xe4f34a72)。

image.png

(8)多次执行同样的操作获利

image.png

二、漏洞分析

本次攻击利用了 DebtManager(0x675d410d)合约中的漏洞,其中的 leverage 函数未校验传入 market 参数是否为可信的市场合约,导致在 permit 函数修饰器中可将状态变量_msgSender 修改为攻击者任意的传参地址。

image.png
image.png

最后在与 pool 进行兑换时会使用用户的 exaUSDC 余额来抵消付给 pool 合约的 USDC 数量。

image.png

三、 安全建议

针对本次攻击事件,我们在开发过程中应遵循以下注意事项:
(1)在涉及到有关外部地址传参和调用的情况下,应严格校验传参地址是否为可信地址。
(2)项目上线前,需要向第三方专业的审计团队进行智能合约审计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值