İki oy, milyonlarca USDT ve neredeyse boş bir havuz: X100'e yapılan saldırının analizi

İki oy, milyonlarca USDT ve neredeyse boş bir havuz: X100'e yapılan saldırının analizi

0.000001 token'lık bir fark, X100 senatosunda iki koltuk kazanmaya yetti; bunun ardından yaklaşık 4.85M USDT meşru havuzdan çıktı.

31 Eki 2026

İlk işlemde, başlatıcı cüzdan bir flaş kredi geri ödendikten sonra yaklaşık 4.75M USDT aldı; oylama için kullanılan mevduatlar ise kilitli kaldı. 24 Ekim 2026 tarihinde, ödünç alınan USDT, X100 senatosundaki üç koltuktan ikisini almaya yetecek kadar X token satın almak için kullanıldı. Elde edilen çoğunluk, yürütücü sözleşme tarafından kontrol edilen likidite aracılığıyla hazine işlemlerini hemen onayladı. Alınan X token'ların satılması, kredinin geri ödenmesini ve kalan fonların ödenmesini mümkün kıldı. Üç ana işlem boyunca, alıcılara yaklaşık 4.848M USDT ödendi. İki ek işlem dahil edildiğinde, meşru havuzdan net USDT çıkışı yaklaşık 4.849M USDT'ye ulaştı.

Temel mekanizma, geçmiş işlem kayıtlarıyla doğrulanmaktadır. İzleme, belirtilen kesim noktasına kadar alınan fonların bireysel rotalarını kapsamaktadır; nihai servis adresi, blokzincir gezgini içindeki bir etiketle tespit edilmiştir.

İlk işlem - ödünç alınan bir pay, senato kontrolünü, hazine varlıklarına erişimi ve alıcıya ödeme yapma imkânını sağlıyor. Görselleştirme: CertiK
İlk işlem - ödünç alınan bir pay, senato kontrolünü, hazine varlıklarına erişimi ve alıcıya ödeme yapma imkânını sağlıyor. Görselleştirme: CertiK

Adresler ve rolleri

Aşağıdaki tüm adresler Ethereum ağındadır. Roller, hesapları kontrol eden kişilerin kimliklerini değil, hesapların gözlemlenen davranışlarını tanımlamaktadır.

AdresBelirlenen rol
0x100a2c7f45fd48e217fdce72e658dc78fd43a100X token'ı; altı ondalık basamak
0x79f35a33fe2813414851c4ae8daeacd14d822a46Freezer: mevduatları, senato yetkilerini ve hazine varlıklarını tutar
0xcd5762ac6013fa762782ac1797ab09152c1028e8Hazine DEX modülü
0x0d85edd90c94053fc5997551b1baa8a77aa02fa0Meşru X/USDT havuzu
0x7ec2afdf3ec5964899894f8d58afa95cbb8ffd63İlk işlemin göndericisi ve USDT alıcısı
0x37541fc4a6f1ec86889ba506f51dc39f2bedd10aİlk işlemin yürütücü sözleşmesi; X token'ları elinde tuttu

Arka plan

X100 kullanıcıları, X token'larını Freezer sözleşmesinde kilitler. Senato, kayıtlı hesapları mevcut kilitli token miktarlarına göre sıralar. Hazine likiditesini ve takasları içeren işlemleri onaylamak için üçte iki oy yeterlidir. Kayıt ücretleri, kilitli mevduatlardan ayrı olarak tahsil edilir.

Freezer, kullanıcı mevduatlarının yanı sıra hazine X token'larını da tutar. Bir işlem yürütüldükten sonra sözleşme, dondurulmuş fonlara ilişkin yükümlülüklerini karşılamak için yeterli X kalıp kalmadığını kontrol eder. Ayrı bir token limiti, piyasaya sürülebilecek varlık miktarını sınırlar. Likidite pozisyonlarının geri çekilmesi, bu limit altında yer açar. Ancak bu önlemlerin hiçbiri tek başına hazine işlemlerinin adil koşullarda gerçekleştirildiğini garanti etmez.

Saldırının nasıl gerçekleştiği

Saldırgan, akıllı sözleşmenin kaynak kodundaki bir güvenlik açığından yararlanmayı mümkün kılan karmaşık bir dizi eylem gerçekleştirdi.

1. Senato kontrolünün ele geçirilmesi

14:11:47 UTC'de, 26,263,022 numaralı bloğa dahil edilen ilk işlem, Aave'den 1,942,457.637245 USDT borç aldı ve yaklaşık 38,200 X token satın aldı. İki yardımcı hesap her biri 19,000.000001 X kilitledi ve aday gösterilmek için ayrı ayrı 100 X ödedi.

Bundan önce, sıralamada ikinci sırada 19,000 X'e sahip bir katılımcı bulunuyordu.

Oylama mevcut sıralamaya dayandığından ve bir kararın yürütülmesi belirli bir bekleme süresi gerektirmediğinden, yeni çoğunluk işlemi aynı işlem içinde gerçekleştirdi.

2. Yetkilerin hazine varlıklarına dönüştürülmesi

Elde edilen çoğunluk, işlemin kendisi tarafından oluşturulan ve kontrol edilen likidite aracılığıyla 400,000 X'in yaklaşık 35.68 USDT ile takasını onayladı. Yürütücü sözleşme yaklaşık 399,987 X aldı ve ardından meşru piyasada yaklaşık 131,703 X'i yaklaşık 6.693M USDT karşılığında sattı.

Aave, yaklaşık 971.23 USDT'lik bir finansman ücreti dahil olmak üzere yaklaşık 1.943M USDT aldı. Başlatıcı cüzdan yaklaşık 4.75M USDT aldı ve yürütücü sözleşme yaklaşık 268,284 X'i elinde tuttu. Oylama için kullanılan mevduatlar kilitli kaldı: alınan fonlar, token'ların kilidini açmadan kredinin geri ödenmesini mümkün kıldı. Ödeme kayıtları, aynı paranın hareketindeki ardışık aşamaları göstermektedir; bu tutarlar toplanamaz, çünkü bu durum kayıpların iki kez sayılmasına neden olur.

3. Yetkilerin yeniden kazanılması ve yeniden kullanılması

14:35:59'de, ikinci işlem, iki adet 19,000.000002 X yatırımı oluşturmak ve ilk katılımcı çiftini yerinden etmek için Morpho'dan 1.95M USDT'lik bir flaş kredi kullandı. Hazine likidite pozisyonlarından yapılan beş çekim, bir sonraki kendi kendine takastan önce limit altında yer açarak yaklaşık 50,000 X geri döndürdü. Kredi geri ödendikten sonra, alıcı yaklaşık 96,382 USDT ve 9,895 X aldı.

14:40:47'de, üçüncü işlem, yeni kilitli token edinmeden, ikinci operasyondan kalan yardımcı sözleşmelerin zaten sahip olduğu yetkileri kullandı. Bunu yapmak için 300 USDT'lik bir flaş kredi aldı ve büyük bir hazine likidite pozisyonunu çekti. Nihai ödeme yaklaşık 1,909 USDT ve 549,916 X tuttu. Geçmiş sözleşme çağrıları, operasyonun teklif sunmak ve zaten elde edilmiş senato koltuklarıyla oy kullanmak için yardımcı hesapları kullandığını gösteriyor. Bitquery'ye göre, bu yeniden kullanım, yönetişime erişim açan yardımcı sözleşme fonksiyonlarının hangi adreslerin bunları çağırabileceğini kısıtlamaması nedeniyle mümkün oldu. Ancak bu erişim kontrolü açıklaması bu analiz kapsamında bağımsız olarak doğrulanmadı. Farklı başlatıcı cüzdanlar, tek başına, arkalarında farklı kişilerin olduğunu kanıtlamaz.

14:40:59 ve 14:41:23'te iki işlem daha gerçekleşti. Bu işlemler, havuzdan net USDT çıkışını yaklaşık 168.61 USDT artırdı. Her iki işlem de aynı adresten gönderildi ve sıra numaraları (nonce'lar) birbirini takip ediyordu.

Ana işlemAlıcıya ödenen USDTMeşru havuzdan net USDT çıkışı
Birinci4,749,726.0969734,750,733.001112
İkinci96,381.88349196,381.884163
Üçüncü1,909.3587581,873.897121
Üç ana işlem için toplam4,848,017.3392224,848,988.782396

Üçüncü ödeme de daha önce hazineden alınan USDT'yi kullandı. Bu nedenle ödeme tutarı, bu işlemin doğrudan neden olduğu havuz fonlarındaki azalmayı aşıyor. Sonraki iki işlem de eklendiğinde, beş işlemin tümünde havuzdan toplam çıkış yaklaşık 4,849,157.396718 USDT'ye ulaşıyor. Ödünç alınan fonlar, ödemeler, takaslar ve adreslerde kalan varlıklar kısmen aynı para akışlarıyla ilgilidir. Satılmayan X tokenleri dolar tahminine dahil edilmemiştir.

4. Elde edilen fonların takası ve taşınması

İlk alıcı yaklaşık 4.75M USDT'yi 2,022.016 ETH ile takas etti. Ardından konsolide edici bir adres, zaten elinde bulunan fonlarla birlikte bu ETH'yi aldı ve dört parti halinde 400 ETH gönderdi. Veri kesim noktasında, 26 Ekim, 01:20:23 UTC itibarıyla, kontrol edilen beş tutma adresi, bu dönüşümden gelen fonlarla ilgisi olmayan küçük bakiyeler dahil, yaklaşık 2,022.857 ETH tutuyordu.

İkinci alıcı yaklaşık 96,382 USDT'yi 40.908 ETH ile takas etti. İki ara adres, Etherscan'in ChangeNOW Dep olarak etiketlediği bir adrese yaklaşık 40.900 ETH taşıdı. Fon takibi burada sona eriyor: müşterinin kimliği, sonraki ödemeler ve paranın nihayetinde nakde çevrilip çevrilmediği doğrulanmamıştır.

Fonların doğrulanmış rotaları ve bulundukları adresler. Görselleştirme: CertiK
Fonların doğrulanmış rotaları ve bulundukları adresler. Görselleştirme: CertiK
100 kat pump, $75M kredi ve bir blokzincir geri alma: Tectonic'te ne oldu?5 Eyl 2026Devamını oku

Güvenlik açığı

Yönetişim kontrolünü ele geçirmenin maliyeti, ne varlıkların piyasa değeriyle ne de oy kullanmak için gereken yatırım miktarıyla neredeyse hiç ilişkili değildi. Oy yatırımları kilitli kalmasına rağmen, elde edilen çoğunluk, kontrolü satın almak için kullandığı krediyi geri ödemeye yetecek kadar likit fon çekebildi.

Bu durumu mümkün kılan üç tasarım özelliği:

  • Yetkiler, yeni bir yatırım yapıldıktan hemen sonra ortaya çıkıyordu. Freezer._stakeOf ve Senate._tally fonksiyonları, mevcut kilitli token miktarını ve katılımcıların sıralamasını kullanıyordu. Bir teklifin geçerlilik süresi, yürütülebileceği zaman dilimini sınırlıyordu, ancak incelenen yürütme yolunda yürütmeden önce minimum bir bekleme süresi yoktu. İki yeni hesap çoğunluğu elde etti ve bunu hemen kullandı.
  • Geçerli bir teklif için verilen oylar, kendi kendine işlemlere izin veriyordu. DEX modülü, ilgili tokenlerin izinli olup olmadığını ve havuzun var olup olmadığını kontrol ediyor, ardından teklifte belirtilen minimum getiriyi kabul ediyordu. İşlem koşullarının adil olup olmadığına dair bağımsız bir kontrol sağlamıyor ve yürütücü tarafından kontrol edilen likiditenin kullanılmasını dışlamıyordu. Böylece resmi olarak onaylanmış bir operasyon, hazine varlıklarının operasyonun kendisi tarafından belirlenen koşullarda çekilmesini mümkün kıldı.
  • Miktar kontrolleri yalnızca daha dar bir koşulu korudu. Dondurulmuş fonların toplam tutarının karşılandığına dair kontrol, kayıtlı X token yükümlülüklerinin uyumlu kalmasını sağladı. Aynı zamanda, likidite pozisyonlarının geri çekilmesi, piyasada varlık dağıtımı üzerindeki limit altında alan açtı. Bu kontrollerden hiçbiri hazine değerindeki kabul edilebilir kayıpları sınırlamadı. Buna ek olarak, yardımcı sözleşmeler, önceki bir operasyonda zaten elde edilmiş yetkilerin yeniden kullanılmasına izin verdi.

Müdahale ve geri kazanım

Toplanan materyaller, fonların iade edildiğine veya güvenlik açığının etkin şekilde giderildiğine dair bağımsız bir doğrulama içermiyor. Kayıtlı kesim noktasında meşru havuzda yaklaşık 1.97 USDT kalmıştı ve kontrol edilen üç yürütme ve ödeme adresinde yaklaşık 826,902 X bulunuyordu. Bu likit olmayan X bakiyeleri, kurumuş bir piyasanın durumuna dayanarak güvenilir biçimde dolar cinsinden değerlendirilemez.

Freezer, dondurulmuş mevduatlar üzerindeki kayıtlı yükümlülükleri hâlâ karşılıyordu ve senato, ikinci operasyon sırasında elde edilen ve sözleşmelerce kontrol edilen iki koltuğa hâlâ sahipti. Gözlemlenen dağıtım limitinden önce yalnızca 0.000002 X kalmıştı. Ancak bu anlık görüntü, yönetişim kontrolünün geri kazanıldığını veya mekanizmasının düzeltildiğini kanıtlamıyor.

Geriye dönüp bakınca: kontrolün bedeli

Yönetişim mekanizmalarına yönelik diğer saldırılar, kontrolü ele geçirmek için ne kadar paraya ihtiyaç duyulduğunu, bu kontrolün hangi yetkileri sağladığını ve varlıkların değerinin ne kadarının fiilen gerçekleştirildiğini karşılaştırmayı mümkün kılıyor.

OlayTarihBildirilen zarar
BonkDAO2026 6 Temmuz4.426 trilyon BONK taşındı, yaklaşık $19.3M değerinde
Term Finance2026 23 AğustosETH ve USDC cinsinden yaklaşık $8.46M
Astroport / Neutron2026 22 EylülToplam varlık değerinde yaklaşık $9.4M; likit varlıklarda $1.96M
Arkadiko2026 22 EkimArkadiko'nun boşaltılmasının bir parçası olarak yaklaşık $1.09M

Bu vakalar ve tahminler yayımlanmış raporlara dayanmaktadır; her saldırıdaki eylemlerin tam sırası bağımsız olarak yeniden oluşturulmamıştır. Hesaplamalarda farklı değerleme yaklaşımları kullanılmıştır ve belirtilen token değeri, tek başına, bunların karşılık gelen tutar için satılabileceğini kanıtlamaz.

Finansal maruziyet. BonkDAO vakasında oylama tokenleri iade edilmiş, Arkadiko vakasında ise DIKO tokenleri yeniden satılmıştır. Bu durum, mevduatların kilitli kaldığı X100 durumundan farklıdır. Kontrolü ele geçirmek için gereken sermaye ile sonrasında risk altında kalan fonlar farklı göstergelerdir. Bu vakalarda kontrolü ele geçirmenin tam net maliyeti bağımsız olarak yeniden oluşturulmamıştır. Raporlara göre, Term Finance'te kontrol, yönetişim tokeni etrafındaki bir sarmalayıcı (wrapper) aracılığıyla, yalnızca az sayıda bu tür token ihraç edilmiş şekilde ele geçirilmiş; yürütme ise oylama döneminin ardından gerçekleşmiştir.

Yetkiler. Yayımlanan verilere göre, Astroport / Neutron'daki olaylar dizisi, sözleşme yöneticilerinin on bir kez yeniden atanmasını ve ardından on kötü amaçlı taşıma işlemi ile varlık çekimlerini içeriyordu. Arkadiko'da, çağıranın izinlerini kontrol etmeyen genel para çekme ve basım (minting) fonksiyonlarına sahip ayrıcalıklı bir sözleşme onaylanmıştı. X100'de ise çoğunluk, bunun yerine hazinenin kendi kendine ticaretini onayladı. Bu vakaların tümünde, oy hakları varlıkları kontrol etmenin farklı yollarına erişim sağladı.

Gerçekleştirilebilir değer. Çalınan BONK'un yalnızca bir kısmı bir borsaya taşındı; tokenlerin bir borsa adresine yatırılması, tek başına, satıldıklarını kanıtlamaz. X100, olası geliri güvenilir biçimde belirlenemeyen satılmamış X tokenlerini elinde tuttu. Arkadiko'da USDA tokenlerinin yakılması, teminatsız arzı azalttı ancak teminatı geri getirmedi. Hazine tokenlerinin tahmini değeri, ihraç edilen token miktarı ve bir satıştan fiilen elde edilen fonlar farklı göstergelerdir.

#Tether#Hackleme#Ethereum#DeFi
X100 havuzundan neredeyse $4.85M çıktı: beş işlemin ortaya koyduğu gerçekler