🚨 $2.5M 漏洞 @SolvProtocol 雙重鑄造錯誤 該協議因為 mint() 和 onERC721Received() 之間的雙重鑄造漏洞而被利用。 攻擊者 攻擊交易 受害合約 這是怎麼發生的? 🧵👇
當 mint() 轉移 NFT 時會發生此問題。 流程: 1️⃣ mint() 調用 doSafeTransferIn() 2️⃣ NFT 轉移觸發 onERC721Received() 3️⃣ 回調向攻擊者鑄造 BRO 代幣 4️⃣ 控制權返回 mint(),再次鑄造 相同的 NFT - 代幣鑄造了兩次 burn() 將 BRO 轉換回 ERC-3525 值: sftValue = amount * decimals / exchangeRate 攻擊者利用這一點進行了循環: mint → burn → mint(22 次) 結果:135 BRO → 567M BRO 使用單個 NFT 然後攻擊者進行了交換: BRO → SolvBTCV3 → WBTC → WETH 最終利潤:1211 ETH(約 250 萬美元)。
1.64K