首发 | CertiK:DeFi项目Walletreum内部操作攻击事件分析
马克思曾在资本论中引用一句名言:“如果有10%的利润,它就保证到处被使用;
有20%的利润,它就活跃起来;
有50%的利润,它就铤而走险;
为了100%的利润,它就敢践踏一切人间法律;
有300%的利润,它就敢犯任何罪行,甚至绞首的危险。”
对于区块链来说,去中心化是一切的本质,更是区块链世界和生态的标杆。
无论是什么形式的去中心化,它的本质实际上指的都是权力从顶层中心化机构到基层个体的下沉。
这个下沉趋势随着世界的发展不断的惠及每一个个体。区块链所言的“去中心化”同样是随着经济和科技发展,迎合社会发展本质上的一类。铸币权便是其中之一。
这里的铸币权指的是将其下放至专业及安全的团队或个体手中,通过健康的社区治理,达到实现区块链领域愿景的目的。
然而如同早年间的铸币行为在传统金融中屡禁不绝,区块链领域内的恶意铸币行为也是无休无止。
一个项目其违背去中心化的本质,通过拥有者的极大权限进行恶意铸币,不仅仅损害了项目的良势发展,更是损害了每一位投资者与项目支持者的切身利益。
北京时间11月16日,CertiK安全研究团队发现DeFi项目Walletreum被项目团队通过内部操作,恶意铸造5亿个WALT代币。截止11月16日早5时,恶意铸造的代币量已约合近190万人民币。
CertiK安全研究团队通过分析其智能合约代码,发现其智能合约代码中心化风险极高,存在安全隐患,项目拥有者拥有权限向任意地址铸造任意数目的代币。
完整技术分析如下:
攻击详情分析
项目拥有者地址:0xa5e552e3d643cc89f3b1ceccfd6f42c5c1aee775
图一:内部操作攻击交易信息
图一是Walletreum项目中WALTToken智能合约被内部操作,铸造额外5亿个WALT代币的交易信息。
该交易哈希值为0xc0f3b0576f18a714d78b822754489d4201c9e36fb0ce4b2f53a93217564710e5。
CertiK天网系统 (Skynet) 检测到区块1126401出现异常交易信息后,立刻向CertiK安全研究团队发出警示。
CertiK安全研究团队在对该项目智能合约进行快速分析后,认为该项目为当前一典型的由于智能合约高中心化而导致的攻击。
图二:WALTToken智能合约mint()函数
图二为遭受内部操作攻击智能合约中被恶意调用的函数mint()。
从666行的代码实现中可以看出,任何拥有minter权限、可以通过onlyMinter修饰符限制的外部调用者均可以调用该函数。
该函数的作用是通过667行代码向任意账户(account)铸造任意数目的代币(amount)。
通过图三中619行onlyMinter修饰符的逻辑实现,以及615行构造函数中给与智能合约部署者minter权限的逻辑实现,智能合约部署者拥有了可以执行图二中mint函数的权限。
图三:onlyMinter修饰符以及给与项目管理者minter权限的构造函数
图四:项目拥有者拥有minter权限
查询项目拥有者是否拥有minter权限的结果如图四所示。
至此,项目拥有者拥有执行mint函数的权利,最终恶意铸造了5亿个WALT代币,致使项目投资者遭受损失。
安全建议
CertiK安全团队通过研究认为,目前大多数DeFi项目中均存在类似于Walletreum项目的风险。
该类mint函数以及minter权限的实现表明了当前DeFi项目中项目拥有者权限过大,中心化风险较高。
这会导致内部操作等情况的发生完全依赖于项目拥有者个人或者团队的“个人素质”与选择。
CertiK团队此前分析过同样存在中心化风险的Mercurity.finance项目,而类似此次Walletreum项目被内部操作攻击的情况以后想必也依旧会发生。
在此,CertiK团队发出建议:
如要防范此类内部操作,应当注重提高社区治理的程度,并在项目实现上尽可能降低中心化权限,对任意重要操作均需要通过社区投票或者运用Timelock延时限制机制。
迄今为止,CertiK已为超过200名机构用户提供了优质服务,保护了超过80亿美元的数字资产与软件系统免受安全损失。