1.前言
北京时间3月15日晚,知道创宇区块链安全实验室监测到Gnosis链上的借贷类协议HundredFinance与Agave均遭遇了闪电贷袭击,包括AAVE的分支Agave和Compound的分支HundredFinance。协议损失超1100万美元。目前项目方已暂停其数百个市场。
知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
金融被攻击tx:
0x534b84f657883ddc1b66a314e8b392feb35024afdec61dfe8e7c510cfac1a098
攻击合约:0xdbf225e3d626ec31f502d435b0f72d82b08e1bdd
NEAR将于第三季度末引入Chunk-Only Producer角色,仅负责在单个分片中生成Chunk:7月1日消息,NEAR将于7月13日开启Stake Wars III,该阶段将专注于引入仅负责在单个分片中生成Chunk的Chunk-Only Producer,他们可以在要求不高的机器上运行他们的验证节点,例如4核CPU、8GB RAM和200GB SSD存储。NEAR表示,一旦第三季度末NEAR主网上可以使用Chunk-Only Producer,NEAR计划再增加200至300个验证者,NEAR网络目前由100个验证者保护。[2022/7/1 1:44:02]
攻击地址:0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358
Huntingdon Valley Bank向MakerDAO提交抵押品引入申请:3月26日消息,Maker发推称,一家成立于1871年的宾夕法尼亚特许银行Huntingdon Valley Bank已经向MakerDAO提交了一份抵押品引入(Collateral Onboarding)申请。如果该申请得到Governance的批准,这将是美国银行首次将抵押品集成到DeFi生态系统中。
该申请提出了一种法律结构,其中Huntingdon Valley Bank与一家信托公司签订了一份主要购买协议,以使MakerDAO受益。该法律结构还有意在未来纳入更多银行。拟议的第一投资组合购买协议是为了平等参与由Huntingdon Valley Bank发起的贷款,或从其他金融机构购买或银团贷款。该申请还要求Huntingdon Valley Bank参与贷款的初始债务上限为1亿美元,这些贷款在所有拟议的贷款类别中多样化,从开始后的12至24个月期间进行部署。[2022/3/27 14:19:49]
攻击后跨链匿名化:https://etherscan.io/txs?a=0xd041ad9aae5cf96b21c3ffcb303a0cb80779e358
声音 | Easy Crypto Hunter首席执行官:英国脱欧或将比特币推至120万美元:金色财经报道,Easy Crypto Hunter首席执行官Josh Riddett在接受采访时表示,比特币和其他形式的加密货币可能会在未来五到十年内成为主要的支付方式,并称英国脱欧最终可能导致比特币达到100万英镑(约合120万美元) 。英国脱欧已再次被推迟至2020年1月31日。他认为,如果英国脱欧通过,英国公民将开始购买加密货币。他还相信,大量买家的涌入将推动BTC的发展超出任何人的预期,但这不太可能立刻发生。[2019/11/7]
龙舌兰被攻击tx:
0xa262141abcf7c127b88b4042aee8bf601f4f3372c9471dbd75cb54e76524f18e
攻击合约:0xF98169301B06e906AF7f9b719204AA10D1F160d6
攻击地址:0x0a16a85be44627c10cee75db06b169c7bc76de2c
攻击后跨链匿名化:https://etherscan.io/txs?a=0x0a16a85be44627c10cee75db06b169c7bc76de2c
2.2攻击流程
由于百金融与龙舌兰攻击流程与手法类似,因此我们使用百金融进行分析。
百金融攻击调用流程
1、攻击者利用合约在三个池子中利用闪电贷借出WXDAI和USDC
2、在WETH池子质押借出的部分USDC
3、利用重入利用一笔质押,超额借出池子中资金
4、重复质押-重入借出步骤,将其他两个池子资产超额借出
5、归还闪电贷
6、获利转移
2.3漏洞细节
导致本次问题的根本原因是由于在Gnosis链上的官方桥接代币xDAI合约中实现了一个对于to地址的回调
合约实现地址:
https://blockscout.com/xdai/mainnet/address/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9/contracts
该回调将直接导致重入漏洞的产生,同时由于在HundredFinance团队fork的Compound版本中没有严格遵循检查-生效-交互,进而导致了总借贷量更新晚于重入实现。最终攻击者得以超额借贷。
类似的,对于Agave项目方,攻击者利用liquidateCall函数内部调用会调用xDAI的callAfterTransfer方法进行回调,最终导致攻击者能再次进行借贷。
在百金融攻击中攻击者重入的调用路径如下:
在Agave攻击中攻击者回调路径如下:
3.总结
此次遭受攻击的两个借贷项目由于错误的引入了存在重入的token,同时项目方的fork的代码没有采用检查-生效-交互模式导致了问题的发生。
我们强调:对于一个优秀的项目的引用必须建立在足够的理解和严谨的开发上,尤其是存在差异化的部分,切忌顾此失彼最终因为一个小的差错导致项目全部的损失。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。