北京时间8月28日,CertiK 安全研究团队发现,SushiSwap 项目智能合约中存在多个安全漏洞。
该漏洞可能被智能合约拥有者利用,允许拥有者进行包括将智能合约账户内的代币在没有授权的情况下取空等在内的任意操作。同时,该项目智能合约还存在严重的重入攻击漏洞,会导致潜在攻击者的恶意代码被执行多次。
技术步骤:
MasterChief.sol:131
在 SushiSwap 项目智能合约的 MasterChief.sol 智能合约的131行中,智能合约的拥有者可以有权限来设定上图中 migrator 变量的值,该值的设定可以决定由哪一个 migrator 合约的代码来进行后面的操作。
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是什么?为何能使Uniswap交易量大涨?