20250730 - AnyswapV4Router 授權(quán)漏洞: 繞過了不存在的 permit 函數(shù)
背景
20250730 一名用戶在授權(quán)并使用 AnyswapV4Router 兌換了 WETH 后,被攻擊者通過 AnyswapV4Router 授權(quán)漏洞轉(zhuǎn)移走 WETH,前后共計(jì)損失 401 WETH。
AnyswapV4Router 是一個支持跨鏈代幣轉(zhuǎn)移、鏈內(nèi)代幣交換和跨鏈交換的智能合約。攻擊者通過 anySwapOutUnderlyingWithPermit 函數(shù)繞過了 WETH 不存在的 permit 檢查,通過受損用戶的授權(quán)轉(zhuǎn)移走 WETH。
攻擊者的身份可能是 MEV bot 或是白帽,本文暫時以“攻擊者”稱呼。
- 授權(quán)交易:https://www.oklink.com/zh-hans/ethereum/tx/0x2653c822153e711e34edf459eeb26e4f36ceb391f6937674726b67e3d954dba5
- 攻擊交易:
- 0x75316e0aac282c9db5c57d2abe74e29e072466114afb8d70cd8b7115196fca57
- 0x0abafd9b7691a0b06bc02e6274f5a1b6925c2d97c77f4702ba9d2761d0bd4563
- 0xae79fdcfd7c36ed654d11b352b495340bd3cc47d0849c35ac6ffa1e4859098ec
Trace 分析
用戶一共進(jìn)行了 3 次 swap 操作,每次 swap 結(jié)束后(在同一個區(qū)塊或下一個區(qū)塊)所獲得的 WETH 就被轉(zhuǎn)走了。
https://etherscan.io/address/0x4527106ae1a661a9d2ffc22575bacdaacb5e51e0#tokentxns

取其中一個 TX 進(jìn)行分析:https://app.blocksec.com/explorer/tx/eth/0x75316e0aac282c9db5c57d2abe74e29e072466114afb8d70cd8b7115196fca57

- 攻擊者調(diào)用
anySwapOutUnderlyingWithPermit函數(shù),傳入攻擊合約作為token參數(shù)。 - 在
anySwapOutUnderlyingWithPermit函數(shù)函數(shù)中調(diào)用WETH.permit()函數(shù)進(jìn)行驗(yàn)證。(很奇怪啊,調(diào)用的是permit()函數(shù),卻打印了一個Deposit的 event。) - 利用被盜用戶對
AnyswapV4Router合約的授權(quán)額度轉(zhuǎn)移用戶 WETH 資產(chǎn)。
代碼分析
在 anySwapOutUnderlyingWithPermit 函數(shù)中, 由于 token 參數(shù)是攻擊者設(shè)置的攻擊合約,取出來的 _underlying 被設(shè)置為了 WETH。轉(zhuǎn)移 _underlying 資產(chǎn)之前,會調(diào)用其 permit 函數(shù)檢查授權(quán)情況。

但是 WETH 代幣并沒有實(shí)現(xiàn) permit 函數(shù),所以調(diào)用 WETH.permit() 函數(shù)時,會跳轉(zhuǎn)到其 fallback 函數(shù)中。也就是為什么會在 permit() 函數(shù)的調(diào)用中打印了一個 Deposit 的 event。

后記
在需要使用一些 DeFi 或者工具合約時,難免需要對合約進(jìn)行授權(quán)。通常出于方便或者節(jié)省 gas 考慮,用戶會選擇直接授權(quán)最大值。但是這也隨之帶來了安全隱患,如果被授權(quán)的合約存在可利用的漏洞,那么黑客可以通過授權(quán)合約轉(zhuǎn)移你賬戶內(nèi)的所有已經(jīng)授權(quán)的資產(chǎn)。
而這次的受損用戶正是在授權(quán)時對 AnyswapV4Router 合約(及其其他一系列的合約)給了最大的授權(quán)額度,這也間接導(dǎo)致了這次事件的發(fā)生。

從資金安全的考慮,用戶在使用合約時需要謹(jǐn)慎設(shè)置授權(quán)金額。最好的習(xí)慣就是用多少授權(quán)多少(當(dāng)然有利有弊,這樣操作就需要每次多花點(diǎn) gas 授權(quán)了)。提高安全意識,減少資金損失,本期安全小課堂就到此結(jié)束了。

浙公網(wǎng)安備 33010602011771號