前语
北京时间 2022 年 5 月 9 日,知道创宇区块链安全实验室监测到 BSC 链上假贷协议 Fortress Protocol 因预言机问题被进犯,这是最近实验室检测到的第三起预言机进犯事情,丢失包括 1,048 枚 ETH 和 400,000 枚 DAI,合计约300W 美元,现在已运用 AnySwap 和 Celer 跨链到以太坊利用 Tornado 进行混币。
知道创宇区块链安全实验室第一时间跟踪本次事情并剖析。
基础信息
被进犯Comtroller:0x01bfa5c99326464b8a1e1d411bb4783bb91ea629
被进犯预言机地址:0xc11b687cd6061a6516e23769e4657b6efa25d78e
进犯者地址:0xA6AF2872176320015f8ddB2ba013B38Cb35d22Ad
进犯合约:0xcD337b920678cF35143322Ab31ab8977C3463a45
tx:0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf
漏洞剖析
该项目是依旧是 Compound 的仿盘,但因为项目方在预言机完成注释了本来存在的检查导致不需要满足的 power 便可以经过0xc11b687cd6061a6516e23769e4657b6efa25d78e#submit篡改价格;
进犯者经过改变 FTS 在协议中的价格借走了其他池子中的 财物,市场中的假贷池如下:
进犯流程
1、进犯者购买了 FTS 代币并经过提案投票支持添加 FTS 作为抵押物,提案 ID为 11;
2、经过调用预言机 submit 函数改变 FTS 的价格;
3、进犯者运用 100 个 FTS 作为抵押物调用 enterMarket 进入市场;
4、因为市场价格对于 FTS 的价值计算呈现问题,进犯者运用该抵押品直接调用 borrow 进行告贷;
借取的财物:
5、因为 100 个 FTS 没什么价值不需要取回,而进犯者后续仍将其他用于第一步的 FTS 还在 Pancake 兑换进行了完全的套现。
总结
本次进犯原因是 Compound 仿盘在预言机运用时呈现了问题。近期很多Compound 仿盘项目被进犯,咱们敦促所有 Fork 了 Compound 的项目方主动自查,现在已知的进犯主要归结于如下几个问题:
千里之堤毁于蚁穴。从内部调用可见,本次进犯者运用 getAllMarkets 依次遍历拿取了悉数市场的底层财物并将 FTS 完全套现。主张项目方对于自己有不一样的完成上一定要建立在充沛的理解和满足的第三方安全审计上。一点小的差错将可能导致项目的全盘丢失。