慢雾:Multichain漏洞攻击事件简要分析

22-01-18 23:07
阅读本文需 3 分钟
总结 AI 总结
看总结 收起
原文来源:慢雾


据 Multichain(AnySwap) 早前消息,2022 年 01 月 18 日,一个影响 6 个跨链 Token 的关键漏洞正在被利用。慢雾安全团队进行分析后以简讯的形式分享给大家。


1. 用户可以通过 Multichain 的 Anyswap V4 Router 合约进行资金跨链操作,在进行资金跨链时用户需要将待跨链的 Token 授权给 Anyswap V4 Router 合约。


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


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


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


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


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 纠错/举报
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交