Modülü bir yabancı nişanladı
Bir Gnosis Safe, restake edilmiş ETH cinsinden 7,8 milyon dolar kaybetti — Safe bozuk olduğu için değil, etkin bir modülün, gelişigüzel bir keeper'ın onu saldırganın kendi havuzuna nişanlamasına izin verdiği için. Sınıf eski. Ders, bir hedefin nereden gelmesine izin verdiğinde.
15 Eylül 2026’da bir Ethereum kullanıcısı, çok imzalı bir cüzdandan restake edilmiş ETH cinsinden yaklaşık 7,8 milyon dolar kaybetti. Akılda kalıcı bir sürpriz var —bir front-running botu parayı saldırganın kendisinden önce aldı— ama sürpriz ders değil. Ders, ondan önceki dört saniye: cüzdanın, kendisine hiçbir şey söyleyememesi gereken biri tarafından söylenen şeyi tam olarak yaptığı an.
Saldırının biçimi şöyle, çünkü bu bir akıllı hesabı boşaltmanın en yaygın yollarından biri ve kusurlu kısım her zaman doğru görünür.
Aslında ne oldu
Kurban, bir Gnosis Safe içinde, Aave ile sarmalanmış hâliyle yaklaşık 2.900 rsETH —bir likit restaking token’ı— tutuyordu. Saldırganın hiçbir zaman bir anahtarı olmadı.
Bunun yerine, hesabın etkinleştirdiği bir Uniswap V4 likidite modülünü —saldırganın az önce oluşturduğu bir havuza— nişanlamak için bir halka açık keeper çağrısı kullandı. O havuz kötü niyetli bir hook taşıyordu. Hook, pozisyonu serbestçe transfer edilebilir rsETH’e açtı ve modül, Safe’in yetkisiyle hareket ederek onu taşıdı.
Kusur, hedefin nereden geldiğinde
Restaking’i ve hook’ları çıkarın, geriye tek bir madde kalır. Güvenilir bir modüle, çağıranı tarafından bir hedef —hangi havuz, hangi sözleşme— verildi ve modül bu hedefe kendi ayrıcalıklı bağlamının içinden hareket etti. Yaptığı doğrulama yetmiyordu, çünkü saldırgan paranın nereye gideceğine karar veren tek şeyi seçebiliyordu.
Yönlendirilecek havuz. Çağrı anında, herkesin çağırabileceği halka açık bir keeper tarafından seçilen bir sözleşme adresi.
Bir hedefe karar veren hiçbir şey. Mekân, sahibin kurduğu bir listeden adlandırılır; alıcı her zaman hesaptır; çağrıyı modül oluşturur.
Hedefini çağıranından alan bir modül, çağıranın onu doğru nişanlayacağına güvenen bir modüldür. Halka açık bir keeper yolunda ise çağıran halktır. Saldırgan zorla girmedi. Direksiyon eline verildi ve kibar olması rica edildi.
Sürpriz, güzel olduğu için
Exploit işlemi halka açık mempool’a —onaylanmamış işlemlerin açıkta beklediği bekleme odasına— girdi. Yoink adında genelleştirilmiş bir front-running botu bekleyen boşaltmayı gördü, daha yüksek bir ücretle kopyaladı ve aynı blokta önce çalıştırdı. Asıl saldırgan hiçbir şey alamadı.
Bu bir DeFiLoops hesabında olabilir mi?
Bizim yerimizdeki bir okuyucunun gerçekten sorduğu soru bu, o yüzden dürüst cevap şu: belirli hamle —güvenilir bir modülü bir saldırganın sözleşmesine nişanlamak— bir DeFiLoops hesabına karşı ifade edilemez; şansla değil, tasarımla. Kontrollerimiz daha özenli olduğu için değil. Çünkü ajana nişanlayacağı bir hedef hiçbir zaman verilmez.
- Yönlendirilecek havuzu / sözleşmeyi seçmek
- Öyle bir alan yok. Ajan tipli parametreler verir; adaptör çağrıyı oluşturur ve hedefi seçer.
- Bir mekânı adresle adlandırmak
- Reddedilir. Mekânlar sahibin kurduğu kümeden adlandırılır, asla talimattaki bir adres olarak değil.
- Ödemeyi kendine yönlendirmek
- Alıcı hesaba zorlanır, hesaptan okunur — asla talimattan alınmaz.
- Bu hesabı kastettiğini kanıtlamak
- Sahip hesaptan okunur. Ajanın geçerli bir imzası, doğru hesabın ya da doğru hedefin kastedildiğinin kanıtı değildir.
Daha derin neden bir seviye yukarıda. Üretimdeki bir DeFiLoops hesabı ajana hiçbir doğrudan çağrı yolu vermez. Boşaltılan Safe’in, çağıran tarafından seçilen bir çağrıyı çalıştırabilen bir modülü vardı. Bizim ajanımız bir çağrı oluşturamaz. Bir miktar, listeden adlandırılmış bir mekân, bir aralık verir — ve beyaz listedeki bir adaptör işlemi kurar. Sağlanan bir sözleşme yoktur, çünkü ajan hiçbir zaman bir tane sağlamaz.
Saldırganın planı, adım adım
Sahip anahtarını çalmak dışındaki en güçlü gerçekçi saldırganı varsayın: elinde ajan anahtarı var, yani hesabın günlük talimatlarını imzalayan anahtar. Deneyeceği şey ve her adımın nerede bittiği şöyle.
- Bir modülü kontrol ettiğin bir havuza nişanla
Çağıranından havuz alan bir modül yok. Ticaret, mekânı sahibin kurduğu kümeden okuyan adaptörlerden geçer. Saldırganın oluşturduğu bir havuz o kümede değildir ve talimattaki bir adres keyfî bir çağrı olarak reddedilir.
- Doğrudan bir çağrıya geri dön ve kendi hedefini seç
Üretimde geri dönülecek bir doğrudan çağrı yolu yok. Kurulu değil. Hamlenin yazılacağı bir yer yok.
- Meşru bir adaptörden geç ve fonları yönlendir
Alıcı hesaba zorlanır, sahip hesaptan okunur, mekân sahibin kümesinden gelir ve harcama dönem başına sınırlıdır. Her hedefi talimat değil, adaptör belirler.
- Kendi modülünü kur ya da hesabın kökünü değiştir
O seçiciler reddedilir. Ajan, Safe’i boşaltan türden yeniden yönlendirilebilir bir modülü asla kuramaz, sahip olamaz ya da hesabı devredemez.
- Bu sırada sahip ajanı iptal eder
Kimsenin iş birliğini gerektirmeyen tek bir işlem; ve o anahtardan gelen her gelecekteki talimat, hedefi incelenmeden önce reddedilir. Çalınan anahtar, sahip harekete geçtiği an ölür.
Çalınmış bir ajan anahtarı, üretimdeki bir hesaba karşı, hiçbir şeyi bir saldırgana nişanlayamaz ve kontrolü ele geçiremez. Güvenlik iddiasının tamamı bu ve tam da bu saldırıya karşı geçerli.
Neyi iddia etmiyoruz
Orada biten bir güvenlik yazısı bir şey satıyordur. Dürüst sınırın üç kenarı var ve hiçbiri bu saldırı değil.
Kendi güvenimizi değiştiren kısım
Guard’ın bunu engellediğini kanıtlamaya koyulduk. O kanıtı yazmak, hâlihazırda sahip olduğumuz testlerin bunu kanıtlamadığını ortaya çıkardı — bir katman erken, hesabın tesisatında revert ediyorlardı ve test çatısı yanlış revert’i gevşek eşleştirdiği için geçiyorlardı. Koruma gerçekti. Ona dair kanıt ise tiyatroydu.
Koruduğu şeyi kırdığında başarısız olamayan bir güvenlik testi zayıf bir test değildir. Bir süstür ve hiç test olmamasından daha tehlikelidir, çünkü kapsam gibi okunur.
Bu yüzden kanıtı doğrudan guard’a karşı yeniden kurduk, her çağrının reddedilmesinin tam nedenini iddia ederek; sonra her kontrolü kasten kırıp ilgili testin başarısız olmasını izledik. Öz-referans satırını kaldırmak kendi testini düşürüyor. İptal yolunu etkisizleştirmek bir başkasını düşürüyor. Bir sınırın tuttuğuna inanmak ile bunu bilmek arasındaki fark budur.
Böyle bir iddiayı nasıl değerlendirmeli
Bu sayfaya güvenmek zorunda değilsin. Gerçek bir sınırı bir filtreden ayıran soru her zamanki soru: ajan, ya da geçmekte olan bir keeper, neyi yazabilir?
Cevap bir hedef içeriyorsa —bir havuz, bir sözleşme, çağıranın seçtiği bir adres— o zaman etrafındaki her koruma, bir yabancının seçtiği hedef ile paranın arasında duran bir kontroldür ve kontroller, birilerinin daha önce hayal ettiği saldırılara karşı yargılanır. Eylül boşaltması, çağıranın seçtiği bir hedefin bedelidir.
Cevap tipli parametreler ve başka hiçbir şey ise, bu yazıdaki saldırının ineceği bir yer yoktur, çünkü sömürdüğü şey —adlandırabileceğin bir hedef— hiçbir zaman verilmemiştir.
Kaynaklar: PeckShieldAlert ve Blockaid izleme raporları (15 Eylül 2026), PANews, Odaily, Foresight News ve BlockBeats tarafından aktarıldı; zincir üstü işlemler Etherscan üzerinden. Rakamlar ve mekanizma o an raporlandığı şekildedir ve analiz ilerledikçe revize edilebilir.