作者:昏鸦@知道创宇404区块链安全研究团队
日期:2021年3月3日

前言

AVAT是一个基于火币Heco生态链的DeFi质押挖矿协议,同时也是阿凡达团队发行的治理代币,用户可以将自己的资产质押在协议中可以获取智能合约质押奖励AVAT代币。

据AVAT官方群消息,2021年3月2日,AVAT项目代币在Mdex交易所上出现无法卖出的问题。知道空间安全团队第一时间跟进分析,分享如下。

分析

由于AVAT代币合约在HECO平台上未开源验证,只能通过HECO平台提供的反编译查看伪代码:

在合约伪代码中并未发现明显问题,但注意到approve函数中有一处细节:

approve函数中,存在这样一行校验,这段代码逻辑在合约代码中通常编写如下:

require(allowance[msg.sender][_to] == 0 || _value == 0);

实际作用就是在调用approve函数授权的时候,要求已授权额度为0或者授权额度为0,才能授权成功,主要用于防范交易顺序依赖的问题。

存在这段校验,再加上官方公告的说法,不难推断此次问题的原因大概率是在于和Mdex交易所对接的问题,Mdex方面在调用transferFrom前进行approve授权,但仅调用一次去设置授权额度,并未先清空原先的已授权额度,调用方法不对,导致在上面的校验中过不去,进而revert回退,交易失败,所以最后代币卖不出去。

在流动性挖矿的引领下,DeFi 于 2020 年再次起飞,成为金融革新的焦点,DeFi领域的玩法也变得逐渐多样化。而协议内存放着的各种有价资产,也使DeFi领域成为了被攻击的重灾区。

知道空间安全专家表示:“DeFi对每个环节的审计至关重要,各个项目方实现的合约标准参差不齐,这就要求对项目合约上线对接前进行充足、全面的安全审计,而不是在启动前打勾。”在处理资产时,需谨慎授权。DeFi 正经历一个前所未有的增长时期,在这个时期,信任的成本将变得非常之高。

随着 DeFi 行业规模迅猛增长,尤其是业务和运营合作上的不断发力,组合过程中潜在的安全问题会愈发凸显出来。黑客在攻击某一 DeFi 合约漏洞获利后,会利用同原理的漏洞对其他 DeFi 合约进行依次攻击。

总结

通过对整个事件的分析来看,此次事故并不在安全漏洞的范畴内,主要原因在于合约方法的实现标准不同,对接出现问题,项目上线前没有做足充分的审查。

建议

目前,由于对接问题,AVAT代币在Mdex交易所上卖不出去,引起社区的恐慌和潜在的资金损失。

AVAT官方已经发出补救措施的公告,进行资产回退,后续发布新的合约,及时关注官方消息。


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1493/