技术编程|CertiK:SushiSwap 智能合约漏洞事件分析


技术编程|CertiK:SushiSwap 智能合约漏洞事件分析
文章图片
北京时间8月28日 , CertiK安全研究团队发SushiSwap项目智能合约中存在多个安全漏洞 。该漏洞可能被智能合约拥有者利用 , 允许拥有者进行包括将智能合约账户内的代币在没有授权的情况下取空等操作在内的任意操作 。同时该项目智能合约还存在严重的重入攻击漏洞 , 会导致潜在攻击者的恶意代码被执行多次 。
技术解析
技术编程|CertiK:SushiSwap 智能合约漏洞事件分析
文章图片
MasterChief.sol:131
在SushiSwap项目MasterChief.sol智能合约的131行中 , 智能合约的拥有者可以有权限来设定上图中migrator变量的值 , 该值的设定可以决定由哪一个migrator合约的代码来进行后面的操作 。
技术编程|CertiK:SushiSwap 智能合约漏洞事件分析
文章图片
MasterChief.sol:136 。
当migrator的值被确定之后(如上图中142行代码显示) , migrator.migrate(lpToken)也就可以被随之确定 。由migrate的方法是通过IMigratorChef的接口来进行调用的 , 因此在调用的时候 , migrate的方法中的逻辑代码会根据migrator值的不同而变化 。
简而言之 , 如果智能合约拥有者将migrator的值指向一个包含恶意migrate方法代码的智能合约 , 那么该拥有者可以进行任何其想进行的恶意操作 , 甚至可能取空账户内所有的代币 。
同时 , 在上图142行中migrator.migrate(lpToken)这一行代码执行结束后 , 智能合约拥有者也可以利用重入攻击漏洞 , 再次重新执行从136行开始的migrate方法或者其他智能合约方法 , 进行恶意操作 。
该漏洞的启示(划重点)
·智能合约拥有者不应该拥有无限的权利 , 必须通过社区监管及治理(governance)来限制智能合约拥有者并确保其不会利用自身优势进行恶意操作 。
·智能合约代码需要经过严格的安全验证和检查之后 , 才能够被允许公布 。
当前SushiSwap项目创建者表示 , 已将该项目迁移到时间锁定(Timelock)合约 , 即任意SushiSwap项目智能合约拥
有者的操作会有48小时的延迟锁定 。
【技术编程|CertiK:SushiSwap 智能合约漏洞事件分析】在此CertiK技术团队建议大家在智能合约公布前 , 尽量寻找专业团队做好审计工作 , 以免项目出现漏洞造成损失 。