Iyunyo 21, ang isa sa mga pinakamalikhaing MEV Bot sa network ng Ethereum, ang Jaredfromsubway.eth, ay naging biktima ng isang maingat na isinaplanong “honeypot attack” at nawalan ng higit sa $7.5 milyon na cryptocurrency assets. Narito ang pagsusuri at pagsubaybay sa paggalaw ng mga pinagkukunan ng Beosin Security Team tungkol sa pag-atake na ito.
Pagsusuri sa proseso ng pag-atake
Attack contract family
- Coordinator Contract (0xb84db016324e8f2bfdd8dd9c260338aee0a8df52): Nagtutugon sa pag-record kung ang kasalukuyang block ay nasa armed state, at nagpapalipat ng pondo sa pamamagitan ng paulit-ulit na pagtawag sa sub-contract sa huling yugto. - Trigger Contract (0x4de8c729a064ff6087cc84a4152969349e4feb98): Nagtutugon sa pagtatayo ng maliit na estado ng trading pair sa loob ng parehong block upang gawing tila epektibo ang arbitrage path. - Sub-contract / Fake Token Contract: Nagpapakita bilang karaniwang ERC-20 token upang makakuha ng totoong pagkakaroon ng awtorisasyon. - Hub Contract: Nagtutugon sa pagbabayad ng kaunting totoong kita upang gawing tila makabuluhan ang MEV Bot. - Ring V2 pair: Maling Uniswap v2 trading pair. - Fake Intermediate Token Contract: Ginagamit upang bumuo ng multi-hop arbitrage path, tulad ng fCAP, fUSDC.
Pangunahing panganib: Pagpapahintulot na masisiil
Sa pamamagitan ng pagsusuri sa on-chain transactions, ang attacker ay nagbuo ng maraming grupo ng decoy transactions:
- Malaking USDC: Ang robot ay kumita ng humigit-kumulang 36.997120 USDC, ngunit iniwan ang 20 USDC na awtorisasyon. - Malaking USDT: Ang robot ay kumita ng humigit-kumulang 37.053440 USDT, ngunit iniwan ang 20 USDT na awtorisasyon. - Malaking WETH: Ang robot ay kumita ng humigit-kumulang 0.0179 WETH, ngunit iniwan ang 16 WETH na awtorisasyon. - Ang mga maliit na transaksyon ay nagtatrabaho nang maayos, at ang awtorisasyon ay napapagana sa loob ng parehong transaksyon upang bawasan ang pagdududa.
Sa mga maliit na transaksyon, agad na hinuhulihin ng sub-contract ang totoong token pagkatapos ng pagpapahintulot ng robot, at nababawasan ang pagpapahintulot, tila lubos na normal.
Sa malalaking transaksyon, ang sub-contract ay hindi nagtatawag ng transferFrom upang ilipat ang tunay na token, kundi direktang gumagawa ng fake na token sa pamamagitan ng pagpapalit ng transaksyon. Ang robot ay naniniwala na natapos na nito ang mga normal na hakbang bago ang swap, ngunit ang pagsasang-ayon sa tunay na token ay nananatili pa rin.
Ito ang core ng buong pag-atake: ang mga maliit na transaksyon ay normal na nagkakaroon ng awtorisasyon, habang ang mga malalaking transaksyon ay nananatiling awtorisado.
Proses ng pag-atake
Halimbawa ng pag-atake sa pamamagitan ng pag-trade gamit ang USDC:
(1) Ang attacker ay tumawag sa coordinator upang itakda ang kasalukuyang block bilang armed (2) Ang attacker ay tumawag sa trigger upang i-update ang estado ng maraming forged Ring V2 pair (3) Ang MEV Bot ay nakakita ng arbitrage opportunity at nag-execute ng transaction
Ang mga hakbang sa loob ng MEV Bot ay sumusunod:
(1) Ang MEV Bot contract ay nagbigay ng malaking pahintulot na USDC sa isang sub-contract (2) Ang MEV Bot ay tumawag sa wrapTo/wrap function ng sub-contract (3) Dahil sa kasalukuyang estado nito na armed, ang sub-contract ay hindi nagkakaltas ng totoong USDC, kundi nagmimint ng fake token sa pair, at ang pahintulot sa USDC ay nananatili (4) Ang MEV Bot ay patuloy na tumawag sa swap ng fake pair (5) Ang pangalawang hop pair ay nagpadala ng token sa MEV Bot (6) Ang hub contract ay nagbabayad ng kaunting totoong USDC na kita sa MEV Bot

halimbawa ng pagpapahintulot
tx hash: 0x0121e07a916c06eea3e7daf11893f3f0b95b9e1684124545ae14c32aee6029bb
Mga resulta na nakita ng MEV Bot: isang matagumpay na arbitrage trade na nagdala ng tunay na kita sa USDC. Ngunit ang pagsasagawa ng USDC ay pinanatili ng sub-contract. Ipinapakita ang ganitong proseso para sa USDC, USDT, at WETH, at nagtatapos sa malaking dami ng pagsasagawa.
Ang attack transaction hash ay:
0x2be8704f5a59b69e0b71f64aefdb99eb0e8ae9fb3926147c581910d71bcf3e65
Inumin ng attacker ang drain loop ng coordinator contract, na naglalaman ng 66 na mga address ng sub-contract at ang address ng MEV Bot contract. Kung ang MEV Bot contract ay nagbigay na ng authorization para sa mga sub-contract, maaari nang i-transfer nang direkta ng mga sub-contract ang katumbas na tunay na token sa attacker.
Final result:
- Natapos lahat ng 20 na malalaking pagsasagawa ng USDC - Natapos lahat ng 16 na malalaking pagsasagawa ng WETH - Mayroon pa ring bahagyang pagsasagawa ng USDT, ngunit kulang na ang balanse ng USDT
Fund Flow Analysis
Pagkatapos ng pag-atake, natanggap ng address ng attacker (0x3e37f4A10d771Ba9dE44b6d301410b1BEdeA65d0) ang $2.87M USDC, $2.04M USDT, at 1,474 WETH. Pagkatapos ay isinwapo ng attacker ang mga stablecoin sa ETH at isinapag sa mga sumusunod na 4 na address:
- 0xe3Da36E4bd1a5738fa5D6Ef4F0e4dF40bDeB5f17 (halos 1,000 ETH) - 0x74Dc5b93586D248D5Aec64b3586736FF0A0D0e65 (1,001 ETH) - 0xd8C125efCBc99408eC8723E9BBd81d1E8D39D845 (1,001 ETH) - 0x71d4416A7A85e08a5Fe7227Ca3B44Fc639e94e97 (1,423 ETH)
Kung saan ang 0xe3Da3 ay nakapaglipat ng 1,000 ETH patungo sa Tornado Cash, habang ang iba pang tatlong address ay walang karagdagang paglipat ng ETH. Ang kanilang flow ng pondo ay ipinapakita sa ibaba:

Wakas
Ipakita ng pagsalakay na ito ang isang mataas na presisyon na paraan ng pagsalakay: ang mga pagsalakay ay hindi direktang sumalakay sa code ng kontrata, kundi ayon sa lohika ng negosyo ng MEV Bot, ginawa nila ang mga kaukulang arbitrage scenario upang maliitin ang MEV Bot na magbigay ng awtorisasyon na tila walang problema, at sa huli ay ilipat ang kanilang mga ari-arian. Para sa mga arbitrage bot at MEV Bot, hindi sapat na batasan ang simulated profit upang matukoy ang kaligtasan ng ruta, lalo na kung ang arbitrage path ay may mga bagong kontrata, forged token, o custom wrapper; dapat maging maingat at isaisip ang pagsusuri sa pagbabago ng allowance pagkatapos ng transaksyon.

