1.前言
北京时间3月15日晚,知道创宇区块链安全实验室?监测到Gnosis链上的借贷类协议?HundredFinance与Agave?均遭遇了闪电贷袭击,包括?AAVE的分支Agave?和?Compound的分支HundredFinance?。协议损失超1100万美元。目前?项目方已暂停其数百个市场。
知道创宇区块链安全实验室?第一时间跟踪本次事件并分析。
2.分析
同道大叔十二星座《嘻哈一夏》数字藏品,明日15:00于金色数藏平台开售:据官方消息,金色数藏平台将于7月8日15:00,公开发售同道大叔十二星座《嘻哈一夏》数字藏品。本系列基于同道大叔最具商业价值的十二星座IP创作,发行其中典藏版金牛座500份,其他11款数字藏品各2000份,详情查看原文链接。金色数藏是由金色财经孵化,依托腾讯至信链为底层技术的元宇宙数字艺术文化收藏平台。[2022/7/7 1:57:55]
2.1攻击者相关信息
HundredFinance被攻击tx:
0x534b84f657883ddc1b66a314e8b392feb35024afdec61dfe8e7c510cfac1a098
攻击合约:0xdbf225e3d626ec31f502d435b0f72d82b08e1bdd
金色相对论 | X-Block:硅谷的雾计算X战警:金色相对论之掌柜调查署:第15期今日21:30三度征战~X-Block:硅谷的雾计算X战警!掌柜带你看硅谷技术老兵如何探索雾计算的未来![2019/4/20]
攻击地址:0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358
攻击后跨链匿名化:https://etherscan.io/txs?a=0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358
Agave被攻击tx:
0xa262141abcf7c127b88b4042aee8bf601f4f3372c9471dbd75cb54e76524f18e
攻击合约:0xF98169301B06e906AF7f9b719204AA10D1F160d6
分析 | 金色盘面:BTC短线风险释放 正在技术修复:金色盘面综合分析:BTC在大幅调整后,短线风险得到了释放,目前市场处在一个技术反弹周期,我们看10分钟K线图出现了顶背离反弹,但同样是时间反弹,力度较弱,而在15分钟K线图,目前尚未看到绝佳的技术买点形成,短线我们维持观望态度,等待市场进一步明朗。[2018/9/6]
攻击地址:0x0a16a85be44627c10cee75db06b169c7bc76de2c
攻击后跨链匿名化:https://etherscan.io/txs?a=0x0a16a85be44627c10cee75db06b169c7bc76de2c
2.2攻击流程
由于HundredFinance与Agave攻击流程与手法类似,因此我们使用HundredFinance进行分析。
分析 | 金色盘面:BTC/USD横盘整理 面临再次突破:金色盘面综合分析: BTC/USD在经过一整天的横盘整理后,面临再次突破,不过我们看到1小时K线图的MACD指标依然呈现空头趋势,所以这里如果向上突破不排除再次背离的可能,所以请投资者注意风险。[2018/8/29]
HundredFinance攻击调用流程
1、攻击者利用合约在三个池子中利用闪电贷借出WXDAI和USDC
2、在WETH池子质押借出的部分USDC
金色财经独家分析 大平台牵涉各方 对加密货币还保持谨慎:消息称eBay目前并不会接受加密货币作为支付手段,并说明待加密货币更加主流再考虑这个问题。金色财经分析,目前能很好的做到支付的加密货币在规模上不如比特币,比特币在小额支付上不占优势,单位时间处理交易量也很有限。针对比特币所改进的支付系统有些也面临着中心化所来的信任问题。目前,一些机构已经接受了比特币的支付,一些奢侈品牌也对加密货币表示积极态度。但像eBay这样的大型电商平台还没有做好准备,金色财经分析,考虑到平台上关联方较多,交易量巨大,安全存在隐患,大型平台牵涉利益方众多,目前还比较谨慎。[2018/4/17]
3、利用重入利用一笔质押,超额借出池子中资金
4、重复质押-重入借出步骤,将其他两个池子资产超额借出
5、归还闪电贷
6、获利转移
2.3漏洞细节
导致本次问题的根本原因是由于在Gnosis链上的官方桥接代币xDAI合约中实现了一个对于to地址的回调(callAfterTransfer函数)
合约实现地址:
https://blockscout.com/xdai/mainnet/address/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9/contracts
该回调将直接导致重入漏洞的产生,同时由于在HundredFinance团队fork的Compound版本中没有严格遵循检查-生效-交互,进而导致了总借贷量更新晚于重入实现。最终攻击者得以超额借贷。
类似的,对于Agave项目方,攻击者利用liquidateCall函数内部调用会调用xDAI的?callAfterTransfer?方法进行回调,最终导致攻击者能再次进行借贷。
在HundredFinance攻击中攻击者重入的调用路径如下:
在Agave攻击中攻击者回调路径如下:
3.总结
此次遭受攻击的两个借贷项目由于错误的引入了存在重入的token,同时项目方的fork的代码没有采用检查-生效-交互模式导致了问题的发生。
我们强调:对于一个优秀的项目的引用必须建立在足够的理解和严谨的开发上,尤其是存在差异化的部分,切忌顾此失彼最终因为一个小的差错导致项目全部的损失。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。