慢雾:Multichain被黑由于anySwapOutUnderlyingWithPermit函数相关问题
据Multichain(AnySwap) 早前消息,2022 年 01 月 18 日,一个影响 6 个跨链 Token 的关键漏洞正在被利用。慢雾安全团队进行分析后以简讯的形式分享给大家:
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 函数,导致用户资产被未授权转出。慢雾安全团队建议:应对用户传入的参数是否符合预期进行检查,且在与其他合约进行对接时应考虑好兼容性问题。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。