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

Penulis: Daii Sumber: mirror

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

d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png

Secara sederhana, pengguna ini awalnya ingin menukar stablecoin USDC senilai 220,800 dolar AS di kolam perdagangan Uniswap v3 menjadi USDT yang setara, namun hanya mendapatkan 5,272 USDT, dalam hitungan detik asetnya langsung menguap 215,700 dolar AS, lihat gambar di bawah.

yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png

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

kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png

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 tersebut. Penyerang memberi tip kepada pembangun blok (bobTheBuilder) $200k dan menghasilkan keuntungan $8k dari transaksi ini.

Terjemahan: Robot MEV mendahului tx dengan menukarkan semua likuiditas USDC. Setelah transaksi dieksekusi, mereka mengembalikan likuiditas. Penyerang memberikan tip sebesar 200.000 dolar kepada pembangun blok (bobTheBuilder) dan mendapatkan keuntungan sebesar 8.000 dolar dari transaksi ini.

Ada kesalahan administrasi dalam konten di atas, dan bot serangan MEV menukar sejumlah besar USDT alih-alih 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 sebagainya.

Hari ini, kita akan mengambil contoh serangan MEV ini untuk menguraikan seluruh prosesnya, membawa Anda menjelajahi dunia gelap MEV ini.

Pertama, kita perlu menjelaskan apa itu MEV.

1. Apa itu MEV?

MEV awalnya disebut Miner Extractable Value, yang mengacu pada keuntungan tambahan yang dapat dihasilkan penambang dengan menyusun ulang, memasukkan, atau mengecualikan transaksi dalam blok blockchain. Hal ini dapat mengakibatkan biaya yang lebih tinggi untuk pengguna rata-rata, atau harga transaksi yang lebih tidak menguntungkan.

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

Meskipun namanya telah berubah, konsep inti untuk mengekstrak nilai melalui manipulasi urutan perdagangan tetap sama.

Konten di atas masih sedikit teknis, Anda hanya perlu ingat: MEV ada karena para penambang di masa lalu, dan validator sekarang memiliki hak untuk mengurutkan transaksi di dalam mempool. Pengurutan ini terjadi dalam satu blok, dan sekarang Ethereum menghasilkan satu blok sekitar 11 detik, jadi setiap 11 detik akan ada pelaksanaan kekuasaan seperti itu. Demikian pula, serangan MEV kali ini juga dilakukan melalui pengurutan oleh validator.

Klik tautan ini, dan Anda akan melihat konten transaksi dari blok bernomor 22029771 yang terkait dengan serangan tersebut, seperti yang ditunjukkan di bawah ini.

gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png

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

2. Prinsip MEV

Untuk memahami cara kerja MEV, kita perlu terlebih dahulu mengerti bagaimana blockchain merekam 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, dll., ditentukan oleh transaksi sebelumnya.

Ketika sebuah blok baru ditambahkan ke dalam blockchain, semua transaksi yang terkandung 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.

Dengan kata lain, tidak hanya urutan blok yang penting, tetapi juga urutan transaksi dalam blok sangat penting. Lalu, bagaimana urutan transaksi dalam blok ditentukan?

2.2 Validator menentukan urutan transaksi

Ketika pengguna memulai transaksi di jaringan blockchain, seperti ini untuk mengonversi USDC ke USDT melalui Uniswap, pertama-tama akan disiarkan ke node di jaringan. Setelah verifikasi awal, kesepakatan masuk ke area yang disebut mempool. Mempool seperti ruang tunggu di mana transaksi belum dikonfirmasi dan ditambahkan ke blok blockchain berikutnya.

Penambang di masa lalu (dalam sistem PoW), sekarang menjadi validator (dalam sistem PoS) memiliki hak untuk memilih transaksi dari mempool dan menentukan 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 ini akan dieksekusi sesuai dengan urutan yang ditentukan oleh validator (seperti bobTheBuilder). Ini berarti bahwa jika sebuah blok berisi beberapa transaksi yang berinteraksi dengan kolam transaksi yang sama, maka urutan eksekusi 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 bisa membuat serangan gagal.

2.3 Urutan transaksi dari serangan MEV kali ini

Mari kita pahami secara singkat tiga transaksi yang terkait dengan serangan MEV ini:

dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png

  • Transaksi 1 (Transaksi pertama penyerang): Dilakukan sebelum transaksi korban. Tujuan dari transaksi ini biasanya adalah untuk menaikkan harga token yang ingin ditransaksikan oleh korban.
  • Transaksi 2 (Transaksi Korban): Dilaksanakan setelah transaksi pertama penyerang. Karena tindakan penyerang sebelumnya, harga dalam kolam transaksi saat ini tidak menguntungkan bagi korban, dia perlu membayar lebih banyak USDC untuk mendapatkan USDT yang setara, atau hanya dapat menukar dengan USDT yang lebih sedikit.
  • Transaksi 3 (Transaksi kedua penyerang): Dilakukan setelah transaksi korban. Tujuan transaksi ini biasanya untuk memanfaatkan perubahan harga baru yang disebabkan oleh transaksi korban untuk mendapatkan keuntungan.

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

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

Metode serangan yang mereka gunakan memiliki nama yang cukup menggambarkan — serangan sandwich. Di bawah ini, mari kita jelaskan satu per satu transaksi, agar Anda benar-benar memahami bagaimana serangan sandwich MEV yang cukup kompleks ini bekerja?

3. Analisis Lengkap Serangan Sandwich

Istilah "Sandwich Attack" digunakan karena dua transaksi penyerang (transaksi 1 dan transaksi 3) ditempatkan sebelum dan sesudah transaksi korban (transaksi 2), sehingga urutan seluruh transaksi menyerupai struktur sandwich (lihat gambar di atas).

Transaksi 1 dan Transaksi 3 masing-masing memiliki fungsi yang berbeda. Secara sederhana, Transaksi 1 bertanggung jawab untuk melakukan kejahatan, sementara Transaksi 3 bertanggung jawab untuk membagi hasil kejahatan. Secara spesifik, seluruh prosesnya adalah sebagai berikut:

3.1 Transaksi 1, bertanggung jawab untuk meningkatkan harga USDT

Klik tautan transaksi nomor 1 di gambar di atas, Anda akan melihat rincian lengkap dari transaksi nomor 1. Penyerang meningkatkan harga USDT dengan cara yang sangat langsung, yaitu dengan menukar 17.58 juta USDT yang ada di dalamnya dengan 18.65 juta USDC, lihat gambar di bawah.

vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png

Pada titik ini, semua yang tersisa di kolam likuiditas adalah sejumlah besar USDC dan sejumlah kecil USDT. Jika, menurut laporan berita, sebelum serangan, Uniswap memiliki likuiditas sekitar 19,8 juta USDC dan USDT, maka setelah pelaksanaan transaksi 1, hanya ada 2,22 juta USDT yang tersisa di pool (=1980-1758), dan saldo USDC meningkat menjadi sekitar 38,45 juta (=1980+1865).

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

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

3.2 transaksi 2, eksekusi 22 ribu USDC ditukar dengan USDT

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

x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png

Seperti gambar di atas, transaksi 2 korban terpengaruh oleh transaksi 1, 220 ribu USDC hanya mendapatkan 5272 USDT, secara tidak sadar kehilangan 170 ribu USDT. Mengapa dikatakan tidak sadar? Karena, jika korban melakukan transaksi melalui Uniswap, maka saat dia mengajukan transaksi, dia akan melihat antarmuka seperti berikut.

rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png

Melalui gambar di atas, Anda akan menemukan bahwa korban setidaknya mendapatkan 220.000 yang seharusnya terjamin. Alasan mengapa korban akhirnya hanya mendapatkan lebih dari 5000 USDT adalah karena terjadi selisih harga yang sangat besar, mencapai lebih dari 90%. Namun, Uniswap memiliki batas selisih harga maksimum default sebesar 5,5%, lihat gambar di bawah.

Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png

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

Karena, front-end dan back-end dari transaksi blockchain terpisah. Yang disebut "Uniswap V3" di atas merujuk pada pool likuiditas USDC-USDT dari Uniswap, pool ini bersifat publik, dan front-end dari transaksi mana pun dapat melakukan transaksi melalui pool ini.

Juga karena alasan ini, ada yang meragukan bahwa korban tidak sederhana, bukan orang biasa, jika tidak, tidak akan ada selisih yang begitu besar, mungkin menggunakan serangan MEV untuk mencuci uang. Ini, akan kita bicarakan nanti.

3.3 perdagangan 3, panen + bagi hasil

hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png

Klik tautan untuk melihat rincian transaksi 3, seperti 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 dari pendapatan——20,4 ribu USDC menjadi 105 ETH;

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

Dengan ini, serangan sandwich berakhir.

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

4. Bagaimana penyerang melakukan serangan kolam senilai 18 juta USDC

Alasan mengapa penyerang dapat melakukan serangan seharga 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?

Singkatnya:

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

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

  • Pinjaman tanpa risiko: Uniswap memungkinkan pengguna untuk mengambil dana dari kolam secara sementara tanpa jaminan (mirip dengan pinjaman), tetapi harus segera dibayar kembali pada saat transaksi selesai.
  • Atomisitas (Atomicity): Seluruh operasi harus bersifat atom, harus sepenuhnya berhasil (pengembalian dana) atau sepenuhnya gagal (rollback transaksi).

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

4.2 Pertukaran Kilat, bagaimana cara kerjanya?

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

S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png

  • F1 penyerang meminjam 1.09 juta USDC dari AAVE menggunakan 701 WETH miliknya;
  • F2 Penyerang mengajukan permintaan tukar kilat, terlebih dahulu menarik 17,58 juta USDT dari kolam Uniswap (pada saat ini tidak perlu melakukan pembayaran terlebih dahulu) akun penyerang sementara meningkat menjadi 17,58 juta USDT;
  • F3 Penyerang dengan cepat menyuntikkan 17,58 juta USDT ke dalam kolam Curve, menukarnya kembali menjadi 17,55 juta USDC. Saldo akun penyerang berkurang 17,58 juta USDT dan meningkat 17,55 juta USDC. Melalui gambar di bawah ini, Anda akan menemukan bahwa penyerang memilih Curve karena likuiditasnya sangat melimpah, dengan lebih dari 70,54 juta USDT dan 50,71 juta USDC, serta slippage yang relatif rendah.

o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png

  • F4 penyerang kemudian mengembalikan 17,55 juta USDC yang ditukar dari Curve, ditambah 1,09 juta USDC yang dia siapkan sendiri (hasil 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 lainnya adalah dana milik penyerang.

Kamu seharusnya menyadari bahwa transaksi ini sebenarnya membuat penyerang rugi 1,09 juta. Namun, transaksi ketiga yang berikutnya, yang juga menggunakan metode pertukaran kilat, tidak hanya berhasil mengambil kembali 1,09 juta USDC, tetapi juga menghasilkan lebih dari 200 ribu.

oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png

Berikut kita akan menganalisis data dari transaksi 3 langkah demi langkah.

  • K1 Penyerang, menarik 18,6 juta USDC di Uniswap melalui pertukaran kilat;
  • K2 penyerang, dengan 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 kepada Uniswap. Pertukaran kilat selesai. Yang perlu Anda perhatikan adalah, penyerang hanya menghabiskan 17,30 juta USDC melalui K2 untuk mendapatkan 17,32 juta USDT. Sisa 1,3 juta (= 1.860-1.730) USDC terdiri dari 1,09 juta dana sendiri, dan sisa 210 ribu USDC adalah keuntungan dari serangan ini.
  • Penyerang K3 mengembalikan prinsipal ke AAVE, mengambil 701 WETH, menukar 200.000 USDC dengan 105 ETH, dan mengirim 100,558 ETH ke validator sebagai tip (sekitar $200.000), menyisakan pendapatan kurang dari $10.000.

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

4.3 Mengapa memberikan "tip" sebesar 200.000 dolar?

Sebenarnya, ini bukanlah kedermawanan, melainkan syarat yang diperlukan untuk keberhasilan serangan MEV jenis serangan sandwich:

  • Inti dari serangan yang berhasil adalah pengendalian urutan transaksi yang akurat, dan yang mengendalikan 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 menyela atau mengganggu kelancaran serangan.

Oleh karena itu, penyerang lebih suka mengorbankan sebagian besar keuntungan untuk memastikan keberhasilan serangan dan menyimpan sejumlah keuntungan untuk dirinya 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 diabaikan.

Terakhir, perlu diingat bahwa pertahanan terhadap serangan MEV sebenarnya sangat sederhana, Anda hanya perlu: menetapkan toleransi slippage dengan baik, jangan melebihi 1%; lakukan transaksi besar dalam beberapa bagian. Jadi, Anda tidak perlu takut untuk tidak melakukan transaksi di DEX (bursa terdesentralisasi) karena hal ini.

Kesimpulan: Peringatan dan Pelajaran dari Hutan Gelap

Kejadian serangan MEV senilai 215.000 dolar AS ini, tanpa diragukan lagi, adalah sebuah perwujudan keras dari hukum "hutan gelap" di dunia blockchain. Ini secara hidup mengungkapkan permainan kompleks yang tersembunyi dalam lingkungan yang terdesentralisasi dan tanpa izin, di mana terdapat peluang untuk memanfaatkan celah mekanisme demi keuntungan.

Dari sudut pandang yang lebih tinggi, munculnya MEV adalah cerminan dari efek dua sisi transparansi dan pemrograman blockchain.

  • Di satu sisi, semua catatan transaksi dapat diakses secara publik, sehingga tindakan serangan dapat dilacak dan dianalisis;
  • Di sisi lain, logika kompleks kontrak pintar dan kepastian eksekusi transaksi juga memberikan kesempatan bagi peserta yang cerdas.

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

Memahami MEV dan risikonya adalah kunci untuk menavigasi dunia digital yang penuh peluang dan bahaya. Ingat, di "hutan gelap" blockchain, hanya dengan menghormati aturan dan meningkatkan kognisi Anda dapat menghindari menjadi mangsa berikutnya yang akan dimakan.

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)