认了「合约漏洞」害用户被盗!SushiSwap:已追回3 百枚以太币
去中心化交易所SushiSwap 因智能合约存在漏洞,导致其中一位用户—— Frog Nation 前财务长「0xSifu」被盗走1,800 枚以太币,损失超过300 万美元。对此,Sushiswap「主厨」、执行长Jared Gray 表示,Sushi 的「RouteProcessor2 」合约存在审批错误,证实为攻击破口,正与安全团队合作解决问题,呼吁用户尽快撤销对该合约的授权。
Jared Grey 后来在说明事态进展时提到,大部分受影响的资金都在白帽安全流程中被保住,已成功追回逾300 枚失窃的以太币,但还有近700 枚以太币仍被卡在Lido 的奖励金库中,目前正与对方联系以追讨被盗资金。
此外,SushiSwap 技术长Matthew Lilley 澄清,SushiSwap 协议和UI 并无风险,所有RouterProcessor2 合约的相关问题都已从前端移除,所有LPing/当前交易活动都可以安全进行,SushiSwap 将持续监控、追讨被盗资金。
区块链和智能合约安全公司Peckshield 解释说,存在漏洞的合约「已被部署在多个区块链中」以复制攻击。
DefiLlama 创办人0xngmi 提到,该攻击似乎只针对那些在过去四天内使用过Sushiswap 的用户,并呼吁用户把存在受影响钱包中的资金转走。0xngmi 表示,他已建立一个网站,可供用户检查地址是否受到SushiSwap 合约攻击事件的影响,同时知道哪些代币的授权需要撤销。
另根据慢雾安全团队情报分析,SushiSwap RouteProcessor2 遭到攻击的事件经过如下:
根本原因在于ProcessRoute 未对用户传入的route 参数进行任何检查,导致攻击者利用此问题构造了恶意的route 参数使合约读取的Pool 是由攻击者创建的。
由于在合约中并未对Pool 是否合法进行检查,直接将lastCalledPool 变量设置为Pool 并调用了Pool 的swap 函数。
恶意的Pool 在其swap 函数中回调了RouteProcessor2 的uniswapV3SwapCallback 函数,由于lastCalledPool 变量已被设置为Pool,因此uniswapV3SwapCallback 中对msg.sender 的检查被绕过。
攻击者利用此问题在恶意Pool 回调uniswapV3SwapCallback 函数时构造了代币转移的参数,以窃取其他已对RouteProcessor2 授权的用户的代币。
Scan QR code with WeChat