查看原文
其他

SushiSwap智能合约漏洞事件分析

CertiK CertiK 2021-02-05

近期《哈利波特与魔法石》3D版本回归热映,不知道大家有没有注意到那个传说从未发生过盗窃事件的由妖精监管的魔法世界银行——古灵阁。

也许你心想,要是有这样一个保管财富的机构在现实世界中就好了。

然而(剧透预警),在《哈利波特与死亡圣器》当中,从来没有被入侵过的古灵阁世界被盗了——主角们通过了在银行内部工作的妖精,打破了古灵阁从未被盗的记录。

一个优质的金融系统,不仅需要对外坚不可摧,同时对内也要保证不会因项目方自己的意愿,从而有窃取客户财产的可能。


SushiSwap漏洞事件简介
北京时间8月28日,CertiK安全研究团队发SushiSwap项目智能合约中存在多个安全漏洞。该漏洞可能被智能合约拥有者利用允许拥有者进行包括将智能合约账户内的代币在没有授权的情况下取空等操作在内的任意操作。同时该项目智能合约还存在严重的重入攻击漏洞,会导致潜在攻击者的恶意代码被执行多次。

技术解析

MasterChief.sol:131 
图片来源
https://github.com/sushiswap/sushiswap/blob/master/contracts/MasterChef.sol

在SushiSwap项目MasterChief.sol智能合约的131行中,智能合约的拥有者可以有权限来设定上图中migrator变量的值,该值的设定可以决定由哪一个migrator合约的代码来进行后面的操作。

MasterChief.sol:136 。
图片来源
https://github.com/sushiswap/sushiswap/blob/master/contracts/MasterChef.sol

当migrator的值被确定之后(如上图中142行代码显示),migrator.migrate(lpToken)也就可以被随之确定。由migrate的方法是通过IMigratorChef的接口来进行调用的,因此在调用的时候,migrate的方法中的逻辑代码会根据migrator值的不同而变化。

简而言之,如果智能合约拥有者将migrator的值指向一个包含恶意migrate方法代码的智能合约,那么该拥有者可以进行任何其想进行的恶意操作,甚至可能取空账户内所有的代币。

同时,在上图142行中migrator.migrate(lpToken)这一行代码执行结束后,智能合约拥有者也可以利用重入攻击漏洞,再次重新执行从136行开始的migrate方法或者其他智能合约方法,进行恶意操作。


该漏洞的启示(划重点)

  • 智能合约拥有者不应该拥有无限的权利,必须通过社区监管及治理(governance)来限制智能合约拥有者并确保其不会利用自身优势进行恶意操作。

  • 智能合约代码需要经过严格的安全验证和检查之后,才能够被允许公布。

当前SushiSwap项目创建者表示,已将该项目迁移到时间锁定(Timelock)合约,即任意SushiSwap项目智能合约拥有者的操作会有48小时的延迟锁定。

在此CertiK技术团队建议大家在智能合约公布前,尽量寻找专业团队做好审计工作,以免项目出现漏洞造成损失。


往期回顾

    CertiK工程师专访 | 在代码世界中不断寻求优化

干货分享 | DEF CON区块链安全大会回顾——加密钱包漏洞利用与分析

    一朝跌落云端,Yam Financial智能合约漏洞事件分析 

安全分析:7月至今数字货币及加密领域相关黑客攻击事件

CertiK安全工程师将亮相DEFCON极客大会,探讨加密钱包漏洞利用与分析

CertiK已完成对原力协议旗下产品ForTube的审计

今天一起来细数历史名将 你一定要知道最后这位(来自非标题党的诚邀)

区块链浏览器可以逃离DoS的九阴白骨爪吗?

来自火星的天问一号“拍了拍”你

CTK安全激励:神荼游戏正式上线

请点击“阅读原文”访问CertiK官方网站

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存