黑客的狂欢,限于技术掣肘的DeFi如何破局?
2020 年 3 月 Compound 推出“借贷挖矿”模式,让沉寂多时的币圈再次燥动起来。一位参与过 defi 挖矿的“矿工”表示,为了抢到头矿,他把赌注押在未经测试的代码上,“不管安不安全,先把头矿抢了。”
开发者们更急,为了快速上线主网,从新发布的代码中获得最大收益,他们直接略过了安全审计的步骤。
那些稳如泰山的黑客们,也开始把握机会,凭借自身技术实力,伺机攻击那些没有做好安全预防措施的 DeFi 们。
进入11月,发生在DeFi协议上的攻击一起接着一起,DeFi 们俨然沦为黑客的取款机。据 PeckShield 统计,截至目前共发生 8 起与 DeFi 相关的安全事件,包括 Yearn Finance、Percent.finance、Cheese Bank、Origin Protocol、Akropolis 、Value DeFi 、YFV、88mph,造成损失逾 2100 万美元。
惊险时分:24小时发生两起攻击事件 损失近800万美元
11月17日,PeckShield 监控到 DeFi 协议 Origin Protocol 稳定币 OUSD 遭到攻击,攻击者利用在衍生品平台 dYdX 的闪电贷进行了重入攻击(Re-entrancy attack),造成价值 770万 美元的损失。
随后,11月18日,PeckShield 监控到 DeFi 固定利率借贷协议 88mph 存在代码漏洞,一名攻击者利用该漏洞铸造了价值 10 万美元 MPH 代币。
据悉,88mph 于 11 月 16 日上线主网,上线仅 48 小时就遭到了攻击。在 88mph 协议中,用户可通过存入加密资产赚取固定利息,并获得其原生代币 MPH,也可通过购买浮动利率的债券来获取 MPH 代币。
上线仅48小时后即遭伏击
PeckShield 通过追踪和分析发现,首先,攻击者调用 DInterest::deposit() 函数将稳定币储存在资金池中,此时,存款者会收到一个新的 depositID,它相当于非同质化通证(NFT),同时 MPHMinter 合约会开始铸造 MPH 代币;
随后,调用 fundAll() 函数购买浮动利率的债券,在此步骤中,用户可获得 MPH 代币和一个 fundingID (非同质化通证 );
接下来,攻击者将步骤 1 和步骤 2 所获得的 depositID 及 fundingID 传入 earlywithdraw() 函数提取在这两步中所存入的资产。也就是说,攻击者将步骤 1 中原本要锁仓 1 年的加密资产被提前取出,此时攻击者不会获得任何利息,因此步骤 2 中提供的资金也原路退回,并且 MPHMinter 会销毁在步骤 1 中铸造的所有 MPH 代币。值得注意的是,在第 2 步中所铸的 MPH 代币并没有被销毁。攻击者利用这点,以 0 成本获得了步骤 2 所铸造的价值 10 万美元的 MPH 代币。
通过重复操作这三个步骤,攻击者铸造了价值 10万 美元的 MPH 代币,并将其存入 Uniswap V2: MPH 4 池中。
利用另一漏洞侥幸逃过一劫
事实上,MPHMinter 合约还有一个漏洞,而开发者利用此漏洞侥幸逃过一劫,使得此次攻击暂未造成任何经济损失。
首先,开发者调用 takeBackDepositorReward 将所获 MPH 代币从 Uniswap V2: MPH 4 转移到 govTreasury(相当于 mph 的资金库),该函数没有设置门槛,任何人都可调用此函数将 MPH 代币转移到 govTreasury 中。
由于攻击者将获得的 MPH 代币存入了 Uniswap V2: MPH 4 池子当中,而 88mph 项目方自己掏空了该池子,然后做了快照,因此暂未造成任何经济损失。
PeckShield 相关负责人表示:“黑客们的攻击可能会毁灭或‘杀死’一个项目,DeFi 们不要存在侥幸心理,应该做好充分的预防措施。如果对此不了解,应该找专业的审计机构对代码进行彻底地审计和研究,防范各种可能发生的风险。”
开发者编写的每一段代码,就如同工业生产中的螺丝钉一般,即使很微小,却与 DeFi 行业的兴衰成败紧密相连。
DeFi 的生态仍处于早期发展阶段,但区块链的核心价值在于普世的信任,如果 DeFi 们仍一味追求快速上线主网,忽视代码的审计安全,最终只能将社区成员的信任消磨殆尽,成为没有灵魂的躯壳。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場