北京时间2022年4月24日下午4时33分,CertiK审计团队监测到Wiener?DOGE项目被恶意利用,造成了3万美元的损失。攻击者利用WDODGE的收费机制和交换池之间的不一致,发起了攻击。
事件发生的根本原因是:通过紧缩的代币合约造成发送方的LP对没有被排除在转账费用之外。因此,攻击者能够将LP对中的通货紧缩代币耗尽,进而导致货币对价格失衡。
而随后于同一天内接连发生了另外三起恶意利用:
下午6时20分,LastKilometer项目被闪电贷攻击利用,造成了26495美元的损失;
晚上9时45分,Medamon项目被闪存贷攻击利用,造成3159美元的损失;
紧接着,PI-DAO项目被闪存贷攻击利用,造成了6445美元的损失。
这一系列攻击的攻击者与攻击方法,与同一天早些时候发生的WienerDOGE相同。
攻击步骤
①攻击者通过闪电贷获得了2900枚BNB。
②攻击者将2900枚BNB换成了6,638,066,501,83枚WDOGE。
●LP的状态:
??○WdogE:199,177,850,468
??○WBNB:2978
③将5,974,259,851,654枚WDOGE发送到LP,由于WDOGE比BNB多,所以LP现在处于不平衡状态。
●LP的状态:
??○?WDOGE:5,178,624,112,169
??○?WBNB:2978
④调用skim()函数,从LP中取回4,979,446,261,701枚WDOGE。由于攻击者在调用skim()之前发送了大量的WDOGE,所以LP将支付大量的费用。这一操作清空了LP内的WDOGE的数量。
攻击者还调用可sync()函数来更新LP内的储备值。若干枚WDOGE和2978枚BNB的存在,造成了WDOGE的价格与WBNB相比异常昂贵。
⑤最后,攻击者用剩下的WDOGE换回了2978枚BNB,偿还了闪电贷,赚取了78枚BNB。
而其他几个项目被攻击的流程步骤也相似:
闪电贷取得WBNB,并用WBNB换取LP中的通缩代币;
直接将通缩的代币转移到LP对上;
调用skim()函数,迫使LP对输回通缩代币;
由于转让费的存在,攻击者会重复步骤2~3,将LP对中的通缩代币耗尽;
通过LP对中的价格不平衡来获取利润。
漏洞分析
当用户转移一定数量的WDOGE时,除了费用,还有4%的代币将被销毁。
因此,如果LP发送100枚WDOGE,其余额将减少104枚WDOGE。
所以,LP应该被排除在费用和代币销毁之外。
写在最后
如果同时对代币和LP合约进行审计,这一风险因素就可以被发现。
然而,如果只有代币合约被审计,那么交换机制将被视为一个外部依赖。
而这种情况在审计过程中将会指出第三方依赖风险。具体为:如果是代币合约,CertiK审计专家将会与项目方讨论,确认是否需要除去LP对的手续费;如果是LP对方的合约,CertiK审计专家会提出通缩币的讨论,并且提醒项目方可能存在的风险。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。