MEV Sandviç Saldırısı Tüm Analizi: Sıralamadan Anlık Takasa Ölümcül Zincir

Yazar: Daii Kaynak: mirror

Geçen Çarşamba (12 Mart), bir kripto yatırımcısının MEV saldırısı sonucu bir seferde 215.000 dolar kaybettiği haberi gündemi sarstı.

d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png

Kısacası, bu kullanıcı Uniswap v3 havuzunda 22.08 bin dolar değerinde USDC stabil koinini eşdeğer USDT ile değiştirmek istedi, ancak sadece 5,272 USDT aldı ve birkaç saniye içinde varlıklar 21.57 bin dolar aniden buharlaştı, aşağıdaki resme bakın.

yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png

Yukarıdaki resim, bu işlemin blok zincirindeki kayıtlarının ekran görüntüsüdür. Böyle bir trajedinin temel nedeni, blok zinciri dünyasının kötü şöhretli "sandviç saldırısı" (Sandwich Attack) ile karşılaşmaktır.

kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png

Bu MEV saldırısını ilk olarak Michael açıkladı (yukarıdaki resme bakın), o şöyle açıkladı:

Bir MEV botu, tüm USDC likiditesini değiştirerek tx'i önden koştu. İşlem gerçekleştirildikten sonra likiditeyi geri koydular. Saldırgan, bir blok inşacısına (bobTheBuilder) $200k bahşiş verdi ve bu işlemden $8k kar elde etti.

Çeviri: MEV robotları, tüm USDC likiditesini değiştirerek tx'i önceden almak için kullanılır. İşlem gerçekleştirildikten sonra, likidite geri yatırılır. Saldırgan, blok inşaatçısına (bobTheBuilder) 200.000 dolar bahşiş verdi ve bu işlemden 8.000 dolar kar elde etti.

Yukarıdaki içerikte bir yazım hatası var, MEV saldırı robotları büyük miktarda USDT çıkarıyor, USDC değil.

Ancak, onun açıklamasını ve haber raporlarını okuduktan sonra hâlâ kafanız karışık olabilir, çünkü içinde çok fazla yeni terim var, örneğin; Sandviç Saldırısı (Sandwich Attack), işlemden önce hareket etme (front-ran the tx), likiditeyi geri koyma (put back the liquidity), blok inşacısına bahşiş verme (tipped a block builder) vb.

Bugün, bu MEV saldırısını örnek alacağız, tüm süreci ortadan kaldıracağız ve sizi MEV'in karanlık dünyasına götüreceğiz.

Öncelikle, MEV'nin ne olduğunu açıklamamız gerekiyor.

1. MEV nedir?

MEV başlangıçta, madencilerin blok zinciri bloklarındaki işlemleri yeniden sıralayarak, ekleyerek veya hariç tutarak elde edebilecekleri ek karı ifade eden Madenci Çıkarılabilir Değeri olarak adlandırıldı. Bu, ortalama bir kullanıcı için daha yüksek maliyetlere veya daha elverişsiz bir işlem fiyatına neden olabilir.

Ethereum gibi blok zinciri ağları, İş Kanıtı (Proof-of-Work, PoW) konsensüs mekanizmasından Hisse Kanıtı (Proof-of-Stake, PoS) konsensüs mekanizmasına geçtikçe, işlem sıralamasını kontrol etme yetkisi madencilerden doğrulayıcılara geçmiştir. Bu nedenle terim de "Madenci Tarafından Çıkarılabilir Değer" (Miner Extractable Value) ifadesinden "Maksimum Çıkarılabilir Değer" (Maximal Extractable Value) olarak evrilmiştir.

İsim değişse de, işlem sırasını manipüle ederek değer elde etmenin temel kavramı hâlâ aynıdır.

Yukarıdaki içerik biraz teknik, sadece şunu hatırla: MEV'nin var olmasının nedeni, geçmişteki madencilerin ve şimdiki doğrulayıcıların, bellek havuzundaki (mempool) işlemleri sıralama hakkına sahip olmalarıdır. Bu sıralama, bir blok içinde gerçekleşir ve şu anda Ethereum yaklaşık 11 saniyede bir blok oluşturuyor, bu da her 11 saniyede bir bu tür bir yetki kullanımı olacağı anlamına geliyor. Aynı şekilde, bu MEV saldırısı da doğrulayıcılar tarafından sıralama yapılarak gerçekleştirilmiştir.

Bu bağlantıya tıkladığınızda, bu saldırıyla ilgili 22029771 numaralı blokta yer alan işlem içeriğini göreceksiniz, aşağıdaki resim gibi.

gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png

Lütfen dikkat edin, yukarıdaki 1, 2, 3 işlemleri, bu makalenin başında bahsedilen MEV saldırısıdır, bu sırayı doğrulayıcı (bobTheBuilder) ayarlamıştır. Neden böyle olabilir?

2. MEV'nin Prensibi

MEV'nin nasıl çalıştığını anlamak için öncelikle blokzincirin bilgileri nasıl kaydettiğini ve güncellediğini anlamamız gerekiyor.

2.1 Blok zinciri durum güncelleme mekanizması

Blockchain, sürekli büyüyen bir defter olarak düşünülebilir; bu defter, gerçekleşen tüm işlemleri kaydeder. Bu defterin durumu, örneğin her bir hesabın bakiyesi, Uniswap işlem havuzundaki çeşitli tokenlerin rezerv miktarları gibi, önceki işlemlerle belirlenir.

Bir yeni blok blok zincirine eklendiğinde, bu blokta bulunan tüm işlemler blok içindeki sıralarına göre teker teker gerçekleştirilir. Her bir işlem gerçekleştirildiğinde, blok zincirinin küresel durumu buna göre değişir.

Yani, yalnızca blokların sırası önemli değil, blok içindeki işlemlerin sırası da önemlidir. Peki, blok içindeki işlemlerin sırası nasıl belirlenir?

2.2 Doğrulayıcı işlem sıralamasını belirler

Kullanıcı bir blockchain ağında bir işlem başlattığında, örneğin Uniswap üzerinden USDC'yi USDT'ye dönüştüren bu işlem, önce ağdaki düğümlere iletilir. İlk doğrulamadan sonra, işlem "bellek havuzu" (mempool) adı verilen bir alana girer. Bellek havuzu, henüz onaylanmamış ve blockchain'in bir sonraki bloğuna eklenmemiş işlemlerin beklediği bir alan gibidir.

Eski madenciler (PoW sisteminde), şimdi doğrulayıcılar (PoS sisteminde) bellek havuzundan işlemleri seçme ve bu işlemlerin bir sonraki bloktaki sıralamasını belirleme hakkına sahiptir.

Blok içindeki işlemlerin sırası son derece önemlidir. Bir blok nihai olarak onaylanıp blok zincirine ekleneceği zamana kadar, bu bloktaki işlemler doğrulayıcılar (örneğin bobTheBuilder) tarafından belirlenen sıraya göre yürütülür. Bu, bir blokta aynı işlem havuzuyla etkileşime giren birden fazla işlem varsa, bu işlemlerin yürütülme sırasının her bir işlemin sonucunu doğrudan etkileyeceği anlamına gelir.

Bu yetenek, doğrulayıcıların belirli işlemleri öncelikli olarak işleyebilmesini, diğer işlemleri geciktirebilmesini veya hariç tutabilmesini ve hatta kendi işlemlerini ekleyerek kârı maksimize edebilmesini sağlar.

Bu işlemin sıralaması da aynı derecede önemlidir, en ufak bir hata bile saldırının başarılı olmasını engeller.

2.3 Bu MEV saldırısının işlem sıralaması

Öncelikle, bu MEV saldırısıyla ilgili 3 işlemi kısaca anlayalım:

dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png

  • İşlem 1 (saldırganın ilk işlemi): Mağdurun işlemi öncesinde gerçekleştirilir. Bu işlemin amacı genellikle mağdurun işlem yapmak istediği token'ın fiyatını artırmaktır.
  • İşlem 2 (Mağdurun İşlemi): Saldırganın ilk işleminden sonra gerçekleştirilir. Saldırganın önceki eylemleri nedeniyle, bu noktada işlem havuzundaki fiyat mağdur için olumsuzdur; daha fazla USDC harcayarak eşdeğer USDT almak zorunda kalır veya daha az USDT alabilir.
  • İşlem 3 (Saldırganın ikinci işlemi): Mağdurun işleminin ardından gerçekleştirilir. Bu işlemin amacı genellikle mağdur işleminin neden olduğu yeni fiyat dalgalanmalarından yararlanmaktır.

Bu sefer, MEV saldırısının doğrulayıcısı, işlemleri 1, 2 ve 3 sırasına yerleştirmekten sorumlu olan bob-The-Builder.eth idi. Tabii ki, bobTheBuilder bunu boşuna yapmadı, sıralamaya katıldı ve 100 ETH'den fazla kazanırken, MEV saldırı başlatıcısı sadece 8.000 dolar kazandı. Gelir kaynakları, kurbanın ikinci işleminden başkası değildir.

Bir cümleyle, saldırgan (MEV robotu) ve doğrulayıcı (bobTheBuilder) iş birliği yaparak, ikinci işlemin mağdurunun 215.000 dolar kaybetmesine neden oldu; bunlardan saldırgan 8.000 dolar, doğrulayıcı ise 200.000 dolar (100'den fazla ETH) kazandı.

Kullandıkları saldırı türünün oldukça sembolik bir adı var - Sandviç Saldırısı. Aşağıda, her bir işlemi tek tek açıklayarak, MEV'nin daha karmaşık sandviç saldırısının ne olduğunu tamamen anlamanızı sağlayacağız.

3. Sandviç Saldırıları Tam Analizi

Sandviç saldırısı (Sandwich Attack) olarak adlandırılmasının nedeni, saldırganın iki işleminin (İşlem 1 ve İşlem 3) kurban işleminin (İşlem 2) önünde ve arkasında yer almasıdır; bu nedenle tüm işlem sırası bir sandviç yapısına benzemektedir (yukarıdaki resme bakınız).

İşlem 1 ve İşlem 3, farklı işlevleri üstlenmektedir. Kısaca, İşlem 1 suç işlemeden sorumludur, İşlem 3 ise elde edilen kazancı paylaşmaktan sorumludur. Daha spesifik olarak, süreç şu şekildedir:

3.1 işlem 1, USDT fiyatını artırmaktan sorumlu

Yukarıdaki 1 numaralı işlem bağlantısına tıklarsanız, 1 numaralı işlemin ayrıntılarını göreceksiniz. Saldırgan, USDT fiyatını oldukça doğrudan artırdı; 1865 milyon USDC kullanarak içindeki 1758 milyon USDT'yi tamamen değiştirdi, aşağıdaki resme bakınız.

vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png

Bu durumda, likidite havuzunda kalanlar büyük miktarda USDC ve az miktarda USDT'dir. Eğer haberlerde belirtildiği gibi, saldırıdan önce Uniswap'ın likiditesinde yaklaşık 19.8 milyon USDC ve USDT varsa, o zaman işlem 1'den sonra havuzda yalnızca 2.22 milyon USDT kalır (=1980-1758) ve USDC bakiyesi yaklaşık 38.45 milyon'a yükselir (=1980+1865).

Bu noktada bu havuzdaki USDC ile USDT arasındaki dönüşüm oranı artık 1:1 değil, 1:17 oldu. Yani şu anda 1 USDT almak için 17 USDC gerekiyor, ancak bu oran yalnızca tahmini bir değerdir çünkü bu havuz V3'tür ve içindeki likidite eşit olarak dağılmamıştır.

Bir nokta daha var, sana söylemem gereken. Aslında saldırgan 1865 bin USDC'yi bir kerede kullanmadı, kullanılan USDC miktarı 1.09 milyon, %6 bile değil. Bunu nasıl başardı? Saldırıyı tamamladığımızda daha ayrıntılı olarak anlatacağız.

3.2 işlem 2, 22 bin USDC'yi USDT'ye dönüştür

Yukarıdaki ticaret 2 bağlantısına tıklayarak aşağıdaki resmi görebilirsiniz.

x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png

Yukarıdaki resimde, mağdurun 2. işlemi, 1. işlemin etkisiyle, 220,000 USDC'nin sadece 5,272 USDT elde etmesi nedeniyle 170,000 USDT kaybetti. Neden bunun farkında olmadan kaybettiğini söylüyoruz? Çünkü, eğer mağdur işlemini Uniswap üzerinden yapıyorsa, işlem gönderdiğinde aşağıdaki arayüzü görecektir.

rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png

Yukarıdaki resme göre, mağdurların en az 220.000 alacakları güvence altına alınmış olmalı. Mağdurların son olarak sadece 5000'den fazla USDT almasının nedeni, %90'ın üzerinde büyük bir kayma yaşanmasıdır. Ancak, Uniswap'in varsayılan maksimum kayma limiti %5.5'tir, aşağıdaki resme bakınız.

Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png

Yani, eğer kurban Uniswap ön yüzü üzerinden işlem yaptıysa, en az 208381 USDT (= 220510 * 94.5%) alması gerekir. Belki de merak ediyorsunuzdur, yukarıdaki blok zinciri kaydında bu işlemin neden "Uniswap V3" üzerinde gerçekleştiği gösteriliyor.

Çünkü, blok zinciri işlemlerinin ön yüzü ve arka yüzü ayrıdır. Yukarıda bahsedilen "Uniswap V3", Uniswap'ın USDC-USDT likidite havuzunu ifade eder; bu havuz halka açıktır ve herhangi bir işlem ön yüzü bu havuz aracılığıyla işlem yapabilir.

Bu yüzden, bazıları kurbanın basit biri olmadığını, sıradan biri olmadığını düşünüyor; aksi takdirde bu kadar büyük bir kayma yaşanmazdı, muhtemelen MEV saldırısını kullanarak kara para aklama yapıyorlar. Bunu daha sonra konuşacağız.

3.3 işlem 3, hasat + paylaşım

hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png

Bağlantıya tıklayarak işlem 3'ün detaylarını görebilirsiniz, yukarıdaki gibi. A, B ve C işlemlerini ayrı ayrı ele alalım.

A işlemi, havuzdaki likiditeyi normale döndürerek 17.32 milyon USDT ile 18.60 milyon USDC'yi geri aldı;

İşlem B, paylaşıma hazırlık, kârın bir kısmını — 20.4 bin USDC'yi 105 ETH'ye çevirmek;

C işlemi, 100.558 ETH'yi doğrulayıcı bob-The-Builder.eth'e ödeyin.

Böylece, sandviç saldırısı sona erdi.

Şimdi yukarıda bahsedilen çok önemli bir soruya cevap verelim: Saldırganlar 109 bin USDC ile 18 milyon dolarlık bir saldırıyı nasıl gerçekleştirdi.

4. Saldırgan 18 milyon USDC havuz saldırısını nasıl gerçekleştirdi?

Saldırganın yalnızca 1,09 milyon USDC ana para ile 18 milyon dolarlık bir saldırı gerçekleştirebilmesinin sebebi, blockchain dünyasında sihirli ve özel bir mekanizmanın bulunmasıdır - Uniswap V3'ün Hızlı Takas (Flash Swap) mekanizması.

4.1 Flash Swap nedir?

Kısacası:

Şimşek Değişimi, kullanıcıların aynı işlemde önce Uniswap havuzundan varlık çekmesine ve ardından başka bir varlık (veya aynı varlık artı işlem ücreti) ile geri ödemesine izin verir.

Uniswap, tüm işlemin aynı işlem içinde tamamlanması şartıyla "önce al, sonra öde" uygulamasına izin verir. Lütfen bunun aynı işlem içinde tamamlanması gerektiğine dikkat edin. Bu şekilde tasarlanmıştır; Uniswap platformunun güvenliğini sağlamak için:

  • Sıfır Riskli Borç Alma: Uniswap, kullanıcıların havuzdan teminatsız bir şekilde geçici olarak fon çekmelerine izin verir (borç alma benzeri), ancak işlemin sonunda hemen geri ödenmesi gerekir.
  • Atomiklik (Atomicity): Tüm işlem atomik olmalıdır; ya tamamen başarılı olmalı (fonların iade edilmesi) ya da tamamen başarısız olmalıdır (işlem geri alınmalıdır).

Lightning Exchange'in tasarım amacı, zincir üzerinde arbitraj (Arbitrage) yapmak için daha etkili bir yol sunmaktı, ancak maalesef MEV saldırganları tarafından istismar edilerek piyasa manipülasyonunun bir aracı haline geldi.

4.2 Şimşek Değişimi, nasıl yardımcı oluyor?

Aşağıda resimle anlatım yaparak, bu saldırının hızlı değişimlerinin nasıl gerçekleştirildiğini adım adım anlamaya çalışalım, aşağıdaki resme bakın.

S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png

  • F1 saldırganı, kendi 701 WETH'sini kullanarak AAVE'den 1.09 milyon USDC borç aldı;
  • F2 saldırganı, önce Uniswap havuzundan 17.58 milyon USDT çekerek hızlı takas talebinde bulunur (bu sırada önceden ödeme yapmasına gerek yoktur). Saldırganın hesabı geçici olarak 17.58 milyon USDT artırılmıştır;
  • F3 saldırganı hızlı bir şekilde bu 17.58 milyon USDT'yi Curve havuzuna yatırdı, 17.55 milyon USDC'ye geri dönüştürdü. Saldırganın hesabındaki USDT 17.58 milyon azaldı, USDC 17.55 milyon arttı. Aşağıdaki resimden göreceğiniz gibi, saldırganın Curve'ü seçmesinin nedeni buradaki likiditenin oldukça yeterli olmasıdır; USDT 70.54 milyon, USDC ise 50.71 milyon var ve kayma oranı görece düşük.

o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png

  • F4 saldırganı, Curve ile dönüştürdüğü 17.55 milyon USDC'yi, kendisinin önceden hazırladığı 1.09 milyon USDC (Aave borçlanma gelirleri) ile birlikte, toplamda 18.64 milyon USDC'yi Uniswap'a bir kerede geri ödedi, hızlı değişim tamamlandı;

Bu işlemden sonra (İşlem 1) saldırganın hesap bakiyesi 1,09 milyon USDC azaldı çünkü Uniswap'a iade edilen 18,64 milyon USDC'nin sadece 17,55 milyonu Curve ile değiştirildi ve kalan 1,09 milyon USDC saldırganın kendi fonlarıydı.

Bunu fark etmiş olmalısınız, bu işlem aslında saldırganın 1.09 milyon kaybetmesine neden oldu. Ancak, sonraki işlem 3, aynı şekilde hızlı değişim yöntemiyle, sadece 1.09 milyon USDC'yi geri almakla kalmadı, ayrıca 200 binden fazla kazanç sağladı.

oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png

Aşağıda, İşlem 3 verilerine dayanarak adım adım bir analiz yapalım.

  • K1 saldırganı, Uniswap'tan 18.6 milyon USDC'yi Lightning Swap ile çıkardı;
  • K2 saldırganı, Uniswap'tan çektiği USDC'nin bir kısmı ile 17.3 milyon USDC'yi 17.32 milyon USDT ile değiştirdi;
  • K1 saldırgânı, Curve'den geri aldığı 17.32 milyon USDT'yi Uniswap'a geri verdi. Anlık takas tamamlandı. Dikkat etmeniz gereken nokta, saldırgânın K2 ile sadece 17.30 milyon USDC harcayarak 17.32 milyon USDT elde etmesidir. Geriye kalan 1.30 milyon (= 1860-1730) USDC'nin 1.09 milyonu kendi sermayesidir, geriye kalan 0.21 milyon USDC ise bu saldırının kârıdır.
  • K3 saldırganı, ana parayı AAVE'ye geri verdi, kendi 701 WETH'sini aldı, aynı zamanda 200.000 USDC'yi 105 ETH'ye dönüştürdü ve bunlardan 100.558 ETH'yi doğrulayıcıya bahşiş olarak gönderdi (yaklaşık 200.000 dolar), kendisi sadece 10.000 dolardan daha az kazanç bıraktı.

Belki de saldırganların neden doğrulayıcılara 200.000 dolara kadar karlarını teslim etmeye istekli olduklarına şaşıracaksınız.

4.3 Neden 200.000 dolar "bahşiş" vermek gerekiyor?

Aslında bu cömertlik değil, bir sandviç saldırısı olan MEV saldırısının başarılı olması için gerekli bir koşuldur:

  • Başarılı bir saldırının temeli, işlem sırasının hassas kontrolüdür ve işlem sırasını kontrol edenler doğrulayıcılardır (bobTheBuilder).
  • Doğrulayıcılar, saldırganların kurbanın işlemlerinin saldırı işlemleri arasında yer aldığından emin olmalarına yardımcı olmakla kalmaz, aynı zamanda daha kritik bir şekilde, doğrulayıcılar diğer rekabetçi MEV robotlarının saldırının düzgün bir şekilde tamamlanmasını kesintiye uğratamayacağını veya sıraya giremeyeceğini garanti edebilir.

Bu nedenle, saldırganlar saldırının başarılı olmasını sağlamak için büyük bir kısmını feda etmeyi tercih eder ve kendilerine bir miktar kar bırakırlar.

MEV saldırılarının da bir maliyeti olduğunu belirtmek gerekir, Uniswap yıldırım borsasında bir maliyet vardır ve Curve ticaretinde de bir maliyet vardır, ancak ücret oranı nispeten düşük olduğu için yaklaşık %0.01~0.05'tir, bu nedenle saldırı ile karşılaştırıldığında bahsetmeye değmez.

Son olarak bir hatırlatma, MEV saldırılarına karşı savunma aslında çok basit, sadece şunları yapmanız yeterli: kayma toleransını iyi ayarlayın, %1'i geçmesin; büyük işlemleri birkaç parçaya bölerek gerçekleştirin. Bu nedenle, DEX'te (merkeziyetsiz borsa) işlem yapmaktan korkmanıza gerek yok.

Sonuç: Karanlık Ormandaki Uyarılar ve İpuçları

Bu 215.000 dolarlık MEV saldırısı, şüphesiz blok zinciri dünyasında "karanlık orman" kuralının bir kez daha acımasız bir yansımasıdır. Bu, merkeziyetsiz ve izinsiz bir ortamda, mekanizma açıklarını kullanarak kazanç sağlama mücadelesinin karmaşıklığını canlı bir şekilde ortaya koymaktadır.

Yüksek düzeyde, MEV'in ortaya çıkışı, blok zinciri şeffaflığının ve programlanabilirliğinin iki ucu keskin kılıç etkisinin somutlaşmış halidir.

  • Bir yandan, tüm işlem kayıtları kamuya açık ve incelenebilir, bu da saldırı davranışlarının izlenip analiz edilmesini sağlar;
  • Öte yandan, akıllı sözleşmelerin karmaşık mantığı ve işlem yürütmenin belirginliği, zeki katılımcılara fırsatlar sunmaktadır.

Bu sadece basit bir hacker eylemi değil, aynı zamanda blok zinciri alt yapısının derin bir anlayışı ve kullanımıdır; bu, protokol tasarımının dayanıklılığını test eder ve katılımcıların risk farkındalığını zorlar.

MEV'yi anlamak, risklerini tanımak, bu fırsatlarla dolu ama aynı zamanda krizler barındıran dijital dünyada daha iyi yol almak için şarttır. Unutmayın, blockchain'in "karanlık ormanı" içinde, yalnızca kurallara saygı göstererek ve bilinci artırarak, bir sonraki yutulan av olmaktan kaçınabilirsiniz.

Bu, bu makale ile ulaşmayı umduğum etki.

View Original
The content is for reference only, not a solicitation or offer. No investment, tax, or legal advice provided. See Disclaimer for more risks disclosure.
  • Reward
  • Comment
  • Share
Comment
0/400
No comments
  • Pin