Analisis Lengkap Serangan Sandwich MEV: Rantai Mematikan dari Pengurutan hingga Pertukaran Kilat

Tulis oleh: Daii

Rabu lalu (12 Maret), seorang trader kripto mengalami kerugian sebesar 215.000 dolar AS akibat serangan MEV yang menjadi viral.

Secara sederhana, pengguna ini awalnya ingin menukarkan stablecoin USDC senilai 220.8 ribu dolar AS menjadi USDT yang setara di kolam perdagangan Uniswap v3, tetapi hanya mendapatkan 5,272 USDT, dan dalam beberapa detik, asetnya menguap sebesar 215.7 ribu, lihat gambar di bawah.

Gambar di atas adalah tangkapan layar dari catatan on-chain untuk transaksi ini. Penyebab utama terjadinya tragedi ini adalah mengalami "serangan sandwich" (Sandwich Attack) yang terkenal jahat di dunia blockchain.

Yang pertama kali mengungkapkan serangan MEV ini adalah Michael (lihat gambar di atas), dia menjelaskan bahwa:

Sebuah bot MEV mendahului tx dengan menukar semua likuiditas USDC. Setelah transaksi dieksekusi, mereka mengembalikan likuiditas. Penyerang memberi tip kepada pembangun blok (bobTheBuilder) sebesar $200k dan mendapatkan keuntungan $8k dari transaksi ini.

Konten di atas mengandung kesalahan pengetikan, robot serangan MEV menukarkan sejumlah besar USDT, bukan USDC.

Namun, setelah membaca penjelasannya dan berita, Anda mungkin masih bingung, karena ada terlalu banyak istilah baru, seperti serangan sandwich (Sandwich Attack), mendahului (front-ran the tx), mengembalikan likuiditas (put back the liquidity), memberi tip kepada pembangun blok (tipped a block builder), dan lain-lain.

Hari ini, kami akan mengambil serangan MEV ini sebagai contoh, membongkar seluruh proses, dan membawa Anda melewati dunia gelap MEV.

Pertama-tama, kita perlu menjelaskan apa itu MEV.

  1. Apa itu MEV?

MEV awalnya dikenal sebagai Nilai yang Dapat Diekstrak oleh Penambang (Miner Extractable Value), yang merujuk pada keuntungan tambahan yang dapat diperoleh penambang dengan melakukan pengurutan ulang, penyisipan, atau pengecualian transaksi dalam blok blockchain. Operasi semacam ini dapat menyebabkan pengguna biasa mengeluarkan biaya yang lebih tinggi, atau mendapatkan harga transaksi yang kurang menguntungkan.

Seiring dengan jaringan blockchain seperti Ethereum beralih dari mekanisme konsensus Proof-of-Work (PoW) ke mekanisme konsensus Proof-of-Stake (PoS), kekuasaan untuk mengontrol urutan transaksi telah berpindah dari penambang ke validator. Oleh karena itu, istilah juga telah berkembang dari "Miner Extractable Value" menjadi "Maximal Extractable Value".

Meskipun namanya telah berubah, konsep inti untuk mengekstrak nilai dengan memanipulasi urutan perdagangan tetap sama.

Konten di atas masih agak profesional, Anda hanya perlu ingat: MEV ada karena miner sebelumnya, dan validator saat ini memiliki hak untuk mengurutkan transaksi di dalam mempool. Pengurutan ini terjadi di dalam sebuah blok, sekarang Ethereum menghasilkan satu blok sekitar 11 detik, yang berarti setiap 11 detik akan ada sekali pelaksanaan kekuasaan seperti itu. Begitu juga, serangan MEV kali ini juga dicapai melalui pengurutan validator.

Klik tautan ini, Anda akan melihat konten transaksi dari blok dengan nomor 22029771 yang terkait dengan serangan ini, seperti pada gambar di bawah.

Harap diperhatikan, perdagangan pada gambar 1, 2, 3 adalah serangan MEV yang disebutkan di awal artikel ini, urutan ini sudah disusun oleh validator (bobTheBuilder). Mengapa bisa seperti ini?

  1. Prinsip MEV

Untuk memahami cara kerja MEV, kita perlu terlebih dahulu memahami bagaimana blockchain mencatat dan memperbarui informasi.

2.1 Mekanisme Pembaruan Status Blockchain

Blockchain dapat dianggap sebagai buku besar yang terus berkembang, yang mencatat semua transaksi yang terjadi. Status buku besar ini, seperti saldo setiap akun, jumlah cadangan berbagai token di kolam perdagangan Uniswap, dan lain-lain, ditentukan oleh transaksi sebelumnya.

Ketika sebuah blok baru ditambahkan ke dalam blockchain, semua transaksi yang terdapat dalam blok tersebut akan dieksekusi satu per satu sesuai dengan urutan mereka dalam blok. Setiap kali sebuah transaksi dieksekusi, status global blockchain akan berubah sesuai.

Artinya, bukan hanya urutan blok yang penting, tetapi juga urutan transaksi di dalam blok itu penting. Lalu, bagaimana urutan transaksi di dalam blok itu ditentukan?

2.2 Validator memutuskan urutan transaksi

Ketika pengguna melakukan transaksi di jaringan blockchain, seperti transaksi yang mengonversi USDC menjadi USDT melalui Uniswap, transaksi tersebut pertama-tama akan disiarkan ke node-node di jaringan. Setelah verifikasi awal, transaksi ini akan masuk ke area yang disebut "memori pool" (mempool). Memori pool berfungsi seperti area tunggu, di mana transaksi yang ada di dalamnya belum dikonfirmasi dan ditambahkan ke blok berikutnya di blockchain.

Penambang sebelumnya (dalam sistem PoW), sekarang menjadi validator (dalam sistem PoS) memiliki hak untuk memilih transaksi dari memori pool, dan memutuskan urutan transaksi tersebut dalam blok berikutnya.

Urutan transaksi dalam blok sangat penting. Sebelum sebuah blok dikonfirmasi secara final dan ditambahkan ke blockchain, transaksi dalam blok tersebut akan dieksekusi sesuai dengan urutan yang ditentukan oleh validator (seperti bobTheBuilder). Ini berarti, jika sebuah blok berisi beberapa transaksi yang berinteraksi dengan kolam transaksi yang sama, maka urutan eksekusi transaksi-transaksi tersebut akan langsung mempengaruhi hasil dari setiap transaksi.

Kemampuan ini memungkinkan validator untuk memprioritaskan transaksi tertentu, menunda atau mengecualikan transaksi lain, bahkan menyisipkan transaksi mereka sendiri untuk memaksimalkan keuntungan.

Urutan transaksi kali ini juga penting, sedikit kesalahan saja dapat membuat serangan gagal.

2.3 Urutan transaksi dari serangan MEV kali ini

Mari kita lihat sekilas tentang 3 transaksi terkait serangan MEV ini:

Transaksi 1 (transaksi pertama penyerang): Dilakukan sebelum transaksi korban. Tujuan dari transaksi ini biasanya adalah untuk menaikkan harga token yang ingin diperdagangkan oleh korban.

Transaksi 2 (Transaksi Korban): Dilakukan setelah transaksi pertama oleh penyerang. Karena tindakan penyerang sebelumnya, saat ini harga di kolam transaksi tidak menguntungkan bagi korban, dia harus membayar lebih banyak USDC untuk mendapatkan nilai setara USDT, atau hanya bisa mendapatkan USDT yang lebih sedikit.

Transaksi 3 (Transaksi kedua pelaku): Dilakukan setelah transaksi korban. Tujuan dari transaksi ini biasanya adalah untuk memanfaatkan perubahan harga baru yang dihasilkan oleh transaksi korban untuk mendapatkan keuntungan.

Validator dari serangan MEV kali ini adalah bob-The-Builder.eth, dia bertanggung jawab untuk menyusun transaksi dalam urutan 1, 2, 3. Tentu saja, bobTheBuilder juga tidak bekerja secara cuma-cuma, dia mendapatkan pendapatan lebih dari 100 ETH dari pengurutan ini, sedangkan pel发起 MEV hanya mendapatkan pendapatan 8000 dolar. Sumber pendapatan mereka adalah transaksi kedua dari korban.

Dalam satu kalimat, penyerang (robot MEV) berkolusi dengan validator (bobTheBuilder), menyebabkan korban dari transaksi kedua mengalami kerugian sebesar 215.000 dolar AS, di mana penyerang mendapatkan 8.000 dolar AS, dan validator mendapatkan 200.000 dolar AS (lebih dari 100 ETH).

Mereka menggunakan jenis serangan yang memiliki nama yang cukup menggambarkan—serangan sandwich. Berikut ini, kami akan menjelaskan satu per satu transaksi, agar Anda sepenuhnya memahami bagaimana serangan sandwich MEV yang cukup kompleks ini sebenarnya?

  1. Analisis Lengkap Serangan Sandwich

Disebut serangan sandwich (Sandwich Attack) karena dua transaksi penyerang (transaksi 1 dan transaksi 3) ditempatkan sebelum dan setelah transaksi korban (transaksi 2), sehingga seluruh urutan transaksi terlihat seperti struktur sandwich (lihat gambar di atas).

Transaksi 1 dan Transaksi 3 masing-masing memiliki fungsi yang berbeda. Singkatnya, Transaksi 1 bertugas melakukan kejahatan, sementara Transaksi 3 bertugas membagi hasil kejahatan. Secara spesifik, keseluruhan proses adalah sebagai berikut:

3.1 Transaksi 1, bertanggung jawab untuk meningkatkan harga USDT

Klik tautan perdagangan nomor 1 di gambar di atas, Anda akan melihat rincian lengkap perdagangan nomor 1, penyerang meningkatkan harga USDT dengan sangat langsung, yaitu dengan menukar semua USDT senilai 17,58 juta yang ada di dalamnya dengan 18,65 juta USDC, lihat gambar di bawah.

Saat ini, sisa yang ada di dalam kolam likuiditas adalah sejumlah besar USDC dan sedikit USDT. Jika menurut berita yang dilaporkan, sebelum serangan, likuiditas Uniswap masing-masing memiliki sekitar 19,8 juta USDC dan USDT, maka setelah transaksi 1 dijalankan, hanya tersisa 2,22 juta USDT (=1980-1758) di dalam kolam, sementara saldo USDC meningkat menjadi sekitar 38,45 juta (=1980+1865).

Pada saat ini, rasio pertukaran antara USDC dan USDT di kolam ini jauh dari 1:1, melainkan 1:17. Artinya, saat ini diperlukan 17 USDC untuk menukarkan 1 USDT. Namun, rasio ini hanya perkiraan, karena kolam ini adalah V3, di mana likuiditasnya tidak terdistribusi secara merata.

Ada satu hal lagi yang ingin saya sampaikan. Sebenarnya, penyerang tidak menggunakan 18,65 juta USDC sekaligus, jumlah USDC yang sebenarnya digunakan adalah 1,09 juta, bahkan kurang dari 6%. Bagaimana dia melakukannya? Nanti setelah kita menjelaskan tentang serangan ini, kita akan menjelaskan lebih rinci.

3.2 Transaksi 2, eksekusi 22 ribu USDC ditukar dengan USDT

Klik pada tautan transaksi 2 di gambar di atas untuk melihat gambar di bawah.

Seperti yang ditunjukkan pada gambar, transaksi 2 dari korban terpengaruh oleh transaksi 1, sehingga 220.000 USDC hanya mendapatkan 5.272 USDT, yang berarti kehilangan 170.000 USDT tanpa disadari. Mengapa dikatakan tanpa disadari? Karena, jika korban melakukan transaksi melalui Uniswap, maka saat dia mengajukan transaksi, dia akan melihat antarmuka seperti di bawah ini.

Melalui gambar di atas, Anda akan menemukan bahwa korban setidaknya mendapatkan 220.000 yang seharusnya terjamin. Korban hanya menerima lebih dari 5000 USDT karena terjadinya slippage yang besar, mencapai lebih dari 90%. Namun, Uniswap memiliki batas slippage maksimum default sebesar 5,5%, lihat gambar di bawah.

Artinya, jika korban melakukan transaksi melalui antarmuka Uniswap, maka dia seharusnya mendapatkan setidaknya 208381 USDT (= 220510 * 94.5%). Anda mungkin bertanya-tanya, mengapa catatan blockchain di atas menunjukkan bahwa transaksi ini dilakukan di "Uniswap V3"?

Karena, frontend dan backend dari transaksi blockchain dipisahkan. Yang disebutkan sebelumnya "Uniswap V3" merujuk pada kumpulan dana USDC-USDT dari Uniswap, yang merupakan kumpulan publik, di mana frontend dari setiap transaksi dapat menggunakan kumpulan ini untuk melakukan perdagangan.

Juga karena alasan ini, ada yang meragukan bahwa korban tidak sederhana, bukan orang biasa, jika tidak, tidak akan ada slippage sebesar itu, mungkin menggunakan serangan MEV untuk mencuci uang. Ini, akan kita bahas nanti.

3.3 Transaksi 3, memanen + membagi hasil

Klik tautan untuk melihat rincian transaksi 3, seperti pada gambar di atas. Mari kita bahas tiga transaksi A, B, dan C.

Transaksi A, mengembalikan likuiditas di kolam ke normal, menukarkan 17,32 juta USDT untuk mendapatkan kembali 18,60 juta USDC;

Transaksi B, persiapan bagi hasil, menukarkan sebagian keuntungan——20,4 ribu USDC menjadi 105 ETH;

Transaksi C, bagi rampasan, dan bayar 100.558 ETH kepada validator bob-The-Builder.eth.

Dengan demikian, serangan sandwich telah berakhir.

Sekarang mari kita jawab pertanyaan penting yang disebutkan di atas: bagaimana penyerang menggunakan 1,09 juta USDC untuk melakukan serangan senilai 18 juta.

  1. Bagaimana penyerang melakukan serangan kolam senilai 18 juta USDC

Alasan mengapa penyerang dapat melakukan serangan pada tingkat 18 juta dolar AS hanya dengan modal 1,09 juta USDC adalah karena ada mekanisme yang ajaib dan khusus di dunia blockchain—Flash Swap dari Uniswap V3.

4.1 Apa itu Flash Swap?

Secara sederhana:

Pertukaran kilat memungkinkan pengguna untuk mengambil aset dari kolam Uniswap terlebih dahulu dalam satu transaksi, lalu membayar kembali dengan aset lain (atau aset yang sama ditambah biaya).

Selama seluruh operasi diselesaikan dalam transaksi yang sama, Uniswap mengizinkan perilaku "ambil barang dulu, bayar kemudian". Harap dicatat, harus diselesaikan dalam transaksi yang sama. Desain ini bertujuan untuk menjaga keamanan platform Uniswap itu sendiri:

Pinjaman tanpa risiko: Uniswap memungkinkan pengguna untuk menarik dana dari pool secara sementara tanpa jaminan (mirip dengan pinjaman), tetapi harus segera dikembalikan pada akhir transaksi.

Atomisitas (Atomicity): Seluruh operasi harus bersifat atomik, baik sepenuhnya berhasil (pengembalian dana) atau sepenuhnya gagal (rollback transaksi).

Desain dari pertukaran kilat adalah untuk melakukan arbitrase on-chain dengan lebih efektif, tetapi sayangnya telah dimanfaatkan oleh penyerang MEV, menjadi alat manipulasi pasar.

4.2 Bagaimana pertukaran kilat membantu?

Mari kita lihat gambar dan lihat bagaimana pertukaran petir dari serangan ini dicapai selangkah demi selangkah, seperti yang ditunjukkan pada gambar di bawah ini.

F1 penyerang meminjam 1,09 juta USDC dari AAVE menggunakan 701 WETH miliknya;

F2 Penyerang mengajukan permintaan pertukaran kilat, pertama-tama menarik 17,58 juta USDT dari kolam Uniswap (pada saat ini tidak perlu melakukan pembayaran terlebih dahulu) akun penyerang sementara meningkat sebesar 17,58 juta USDT;

F3 Penyerang dengan cepat memasukkan 17,58 juta USDT ke dalam kolam Curve dan menukarnya kembali menjadi 17,55 juta USDC. Saldo USDT di akun penyerang berkurang 17,58 juta, sementara USDC meningkat 17,55 juta. Dari gambar di bawah ini, Anda akan melihat bahwa penyerang memilih Curve karena likuiditas di sini sangat cukup, dengan USDT lebih dari 70,54 juta dan USDC juga sekitar 50,71 juta, serta slippage yang relatif rendah.

F4 penyerang kemudian mengembalikan 17,55 juta USDC yang ditukar dengan Curve, ditambah 1,09 juta USDC yang telah disiapkannya (dari pinjaman Aave), total 18,64 juta USDC, sekaligus membayar kembali ke Uniswap, pertukaran kilat selesai;

Setelah transaksi ini (transaksi 1), saldo akun penyerang berkurang sebesar 1,09 juta USDC, karena dari 18,64 juta USDC yang dikembalikan ke Uniswap, hanya 17,55 juta USDC yang ditukar dari Curve, sementara 1,09 juta USDC sisanya adalah dana milik penyerang.

Anda seharusnya menyadari bahwa transaksi ini sebenarnya menyebabkan penyerang kehilangan 1,09 juta. Namun, transaksi 3 berikutnya, yang juga menggunakan metode pertukaran kilat, tidak hanya mengambil kembali 1,09 juta USDC, tetapi juga menghasilkan lebih dari 200 ribu.

Mari kita analisis data dari Transaksi 3 langkah demi langkah.

K1 penyerang, menarik 18,6 juta USDC di Uniswap menggunakan Lightning Swap;

K2 penyerang, menggunakan sebagian dari 17,3 juta USDC yang baru saja diambil dari Uniswap, menukarnya kembali menjadi 17,32 juta USDT;

Penyerang K1 mengembalikan 17,32 juta USDT yang ditukar dari Curve ke Uniswap. Pertukaran kilat selesai. Anda perlu memperhatikan bahwa penyerang hanya menghabiskan 17,30 juta USDC melalui K2 untuk mendapatkan 17,32 juta USDT. Sisa 1,3 juta (= 1.860-1.730) USDC, di mana 1,09 juta adalah dana sendiri, sedangkan sisa 210 ribu USDC adalah keuntungan dari serangan kali ini.

K3 penyerang mengembalikan modal ke AAVE, mengambil 701 WETH miliknya, sementara itu menukar 200.000 USDC menjadi 105 ETH, dan mengirimkan 100.558 ETH kepada validator sebagai tip (sekitar 200.000 dolar AS), menyisakan kurang dari 10.000 dolar AS sebagai keuntungan.

Anda mungkin akan terkejut, mengapa penyerang bersedia menyerahkan keuntungan hingga 200.000 dolar kepada validator?

4.3 Mengapa harus memberikan "tip" sebesar 200 ribu dolar?

Sebenarnya, ini bukanlah kemurahan hati, melainkan syarat yang diperlukan untuk keberhasilan serangan MEV seperti serangan sandwich:

Inti dari serangan yang berhasil adalah kontrol yang tepat terhadap urutan transaksi, dan yang mengontrol urutan transaksi adalah validator (bobTheBuilder).

Validator tidak hanya membantu penyerang memastikan bahwa transaksi korban berada di antara transaksi serangan, tetapi yang lebih penting adalah validator dapat memastikan bahwa robot MEV yang bersaing lainnya tidak dapat mendahului atau mengganggu penyelesaian serangan.

Oleh karena itu, penyerang lebih memilih mengorbankan sebagian besar keuntungan untuk memastikan keberhasilan serangan, dan menyisakan sebagian keuntungan untuk diri mereka sendiri.

Perlu dicatat bahwa serangan MEV juga memiliki biaya, ada biaya dalam pertukaran kilat Uniswap, ada biaya dalam perdagangan Curve, hanya saja karena tarifnya cukup rendah sekitar 0,01~0,05%, jadi dibandingkan dengan hasil serangan, itu bisa dianggap tidak signifikan.

Terakhir, saya ingin mengingatkan bahwa pertahanan terhadap serangan MEV sebenarnya sangat sederhana, Anda hanya perlu: menetapkan toleransi slippage yang baik, jangan melebihi 1%; bagi transaksi besar menjadi beberapa bagian. Jadi, Anda tidak perlu takut untuk tidak melakukan transaksi di DEX (bursa terdesentralisasi) lagi.

Penutup: Peringatan dan Pelajaran dari Hutan Gelap

Serangan MEV senilai 215.000 dolar ini, tanpa diragukan lagi, merupakan sekali lagi perwujudan yang kejam dari hukum "hutan gelap" di dunia blockchain. Ini secara hidup menunjukkan kompleksitas permainan di mana terdapat celah mekanisme yang dapat dimanfaatkan untuk meraih keuntungan dalam lingkungan yang terdesentralisasi dan tanpa izin.

Dari sudut pandang yang lebih tinggi, kemunculan MEV adalah cerminan dari efek pedang bermata dua dari transparansi dan pemrograman blockchain.

Di satu sisi, semua catatan transaksi dapat diakses secara publik, sehingga perilaku serangan dapat dilacak dan dianalisis;

Di sisi lain, logika kompleks dari kontrak pintar dan kepastian eksekusi transaksi juga memberikan kesempatan bagi para peserta yang cerdas.

Ini bukan sekadar tindakan peretasan, melainkan pemahaman dan pemanfaatan yang mendalam terhadap mekanisme dasar blockchain, yang menguji ketahanan desain protokol dan juga menantang kesadaran risiko para peserta.

Memahami MEV, mengenali risikonya, adalah kunci untuk dapat berlayar lebih baik di dunia digital yang penuh peluang tetapi juga tersembunyi krisis. Ingatlah, di "hutan gelap" blockchain, hanya dengan menghormati aturan dan meningkatkan pemahaman, kita dapat menghindari menjadi mangsa yang berikutnya.

Ini juga merupakan efek yang ingin saya capai melalui artikel ini.

Lihat Asli
Konten ini hanya untuk referensi, bukan ajakan atau tawaran. Tidak ada nasihat investasi, pajak, atau hukum yang diberikan. Lihat Penafian untuk pengungkapan risiko lebih lanjut.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate.io
Komunitas
Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • ไทย
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)