创宇区块链 Rari Capital 遭受重入攻击 损失超 8000 万美元
前言
北京时间 2022 年 4 月 30 日, 知道创宇区块链安全实验室 监测到 以太坊 上 feiprotocol 和 RariCapital 协议中的多个池子遭到重入攻击,导致损失超 8000 万美元。
知道创宇区块链安全实验室 第一时间跟踪本次事件并分析。
基础信息
众所周知,compound 项目的代码本就存在一些安全问题,而 feiprotocol 和RariCapital协议延用了compound 的代码库,同时在 doTransferOut() 方法的实现中使用了存在重入的写法,导致了事件的发生。
因此次事件中的多次攻击方式相同,本文仅对一次攻击进行分析。
攻击者地址:0x6162759edad730152f0df8115c698a42e666157f
攻击合约:0x32075bad9050d4767018084f0cb87b3182d36c45
tx:0xadbe5cf9269a001d50990d0c29075b402bcc3a0b0f3258821881621b787b35c6
CEtherDelegator合约:0xfbD8Aaf46Ab3C2732FA930e5B343cd67cEA5054C
漏洞分析
漏洞关键在于 CEtherDelegator 合约中的 doTransferOut 方法使用了 call 方法进行代币转移,而在使用时并未对其进行gas限制,导致能够被利用实现重入攻击;
其次,合约在对用户进行借贷放款时,并未实行检查-生效-交互的模式,更新抵押资产价值在放款之后,使得攻击者能够在借款之后进行函数回调;
最为关键的一点是,攻击者在借款后调用了exitMarket()函数退出借款的市场,之后对抵押品进行赎回,由于此时攻击者已退出市场,因而协议不会计算这笔借款,所以能够成功赎回抵押品。
攻击流程
1、攻击者使用闪电贷贷款并抵押到协议中;
2、攻击者借出 ETH ,随后触发重入;
3、调用 exitMarket() 函数退出借款的市场,并取出抵押品;
4、归还闪电贷;
5、成功赖账套利,免费借出 ETH;
6、最后,攻击者重复攻击手法对协议中的池子进行攻击,成功套利约 8000 万美元。
总结
本次攻击事件核心是协议引用了存在重入漏洞的 compound 代码库,导致合约发生重入攻击。
建议项目方在编写项目时,应始终使用检查-生效-交互的模式,并在合约中应用重入锁,在发送 以太币 时一定要限制 gas 或者使用 thransfer(),一定不要使用存在安全问题的项目代码。
在此提醒项目方发布项目后一定要将私钥严密保管,谨防网络钓鱼,另外,近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum