NFT:慢雾分析Multichain被盗经过,合约一函数未检查用户传入Token的合法性

?Multichain(AnySwap)此前一个影响6个跨链Token的关键漏洞被利用,导致被盗取445ETH。慢雾安全团队分析了安全事件经过,

1.用户可以通过Multichain的AnyswapV4Router合约进行资金跨链操作,在进行资金跨链时用户需要将待跨链的代币授权给AnyswapV4Router合约。??

2.AnyswapV4Router存在anySwapOutUnderlyingWithPermit函数。此函数允许用户在链下进行授权签名,链上验证并授权的操作。在此函数中,其会先通过调用用户传入的Token地址的underlying函数来获取underlying代币地址(正常情况下用户传入的Token地址应该是anyToken,获取underlying代币应该是用户要跨链的资产,如anyUSDT与USDT),随后通过underlying代币的permit函数进行签名检查与授权操作,授权完成后通过safeTransferFrom将代币转入anyToken合约中,最后通过_anySwapOut触发事件。??

3.但由于anySwapOutUnderlyingWithPermit函数中未检查用户传入的token的合法性,且由于WETH代币不存在permit函数的同时实现了fallback函数,而permit函数接口也恰好没有返回值,因此在对WETH合约的permit函数进行调用时是不会抛出错误的。攻击者正是利用此问题构造了恶意的Token地址,使得anySwapOutUnderlyingWithPermit函数获取的underlying为WETH,将先前有将WETH代币授权给AnyswapV4Router合约的用户的WETH直接转移到攻击者恶意构造的Token地址中。??

此次主要是由于anySwapOutUnderlyingWithPermit函数未检查用户传入的Token的合法性,且未考虑并非所有underlying代币都有实现permit函数,导致用户资产被未授权转出。慢雾安全团队建议:应对用户传入的参数是否符合预期进行检查,且在与其他合约进行对接时应考虑好兼容性问题。??

参考交易:https://etherscan.io/tx/0xd07c0f40eec44f7674dddf617cbdec4758f258b531e99b18b8ee3b3b95885e7d

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:46ms0-13:708ms