· kaynak dev.to (home feed)
Drift'in 285 milyon dolarlık hack'i: Solana'nın durable nonce'larına banka yatırılan phishing'le ele geçirilmiş imzalar
Saldırganlar Drift'in beş üyeli güvenlik konseyinin iki imzasını phishing ile ele geçirdi, sonra önceden imzalanmış transaction'ları haftalar sonra Solana'nın durable nonce'ları aracılığıyla çalıştırdı — imzalı transaction'lara son kullanma tarihi tanımayan bir özellik.

Ne oldu
1 Nisan 2026'da Solana üzerinde kurulmuş bir perpetuals trading protokolü olan Drift, yaklaşık 285 milyon dolar kaybetti. dev.to'da yayınlanan (aslında xroot.dev'de olan) teknik bir yazıya göre saldırgan ne bir smart contract'ı ne de bir key server'ı ele geçirdi. Bunun yerine, birkaç hafta boyunca Drift'in güvenlik konseyindeki beş üyeden ikisini transaction imzalamaları için kandırdı, sonra bekledi. İstediği anda, iki önceden imzalanmış transaction'ı dört slot arayla yayınladı.
Yazıya göre yayınlanan post-mortem bulgusunu tek bir cümleye indiriyor: geri dönüşün olmayan nokta transaction'lar çalıştığında değil, imzalar verildiğinde yaşandı. Bunu mümkün kılan mekanizma, çoğu kullanıcının adını hiç duymadığı bir Solana özelliğiydi — durable nonce.
Durable nonce'ların kaldırdığı güvenlik ağı
Her sıradan Solana transaction'ı güncel bir blockhash taşır ve yalnızca yaklaşık 150 slot boyunca — güncel slot süreleriyle kabaca bir dakika — kabul edilir, diye açıklıyor yazı. Bu kısa pencere örtük bir garantidir: geçen hafta teslim ettiğiniz bir imza bu hafta bir eyleme dönüşemez, çünkü onu saran transaction çoktan bayatlamıştır.
Durable nonce, blockhash'i system program'ın sahibi olduğu 80 baytlık bir on-chain hesapta saklanan bir değerle değiştirir. Bu değer açıkça ilerletilene kadar geçerli kalır; dolayısıyla ona referans veren bir transaction süresiz olarak geçerliliğini korur. İmzalı baytları elinde tutan kişi onu yarın ya da altı ay sonra çalıştırabilir.
Yazıya göre mekanik
Bu transaction'ları birkaç kural yönetir. İlk instruction, nonce hesabının authority'si tarafından imzalanmış AdvanceNonceAccount olmalıdır; çalıştırıldığında değeri döndürür, böylece aynı imzalı baytlar iki kez çalışamaz. Hesap ayrıca son ilerletmedeki ücret oranını kaydeder ve runtime, çalıştırma sırasında bu oranı tahsil eder — bir nonce, imza başına ücreti de geçerlilikle birlikte sabitler. Bir nonce slot başına en fazla bir kez ilerletilebilir; bu yüzden paralel önceden imzalanmış transaction'ların her birinin kendi nonce hesabı olmalıdır.
12 Ağustos 2026'dan beri, diye ekliyor yazı, runtime normalde çift çalıştırmayı engelleyen status cache'te nonce transaction'larını izlemeyi bıraktı; çünkü nonce'un döndürülmesinin kendisi replay korumasıdır. RPC node'ları nonce hareket edene kadar bir nonce transaction'ını yeniden denemeye devam eder; kötü niyetli göndericilerin retry kuyruklarını ölümsüz transaction'larla doldurmasını önlemek için node'lar yapay bir kesim noktası — mevcut blok yüksekliği artı 150 — uygular; bu noktadan sonra yeniden deneme durur, ancak transaction'ın kendisi geçerli kalmaya devam eder.
Meşru bir özelliğin silaha dönüştürülmesi
Buradaki hiçbir şey bir zafiyet değil. Yazı amaçlanan kullanımları sıralıyor: hardware ve offline imzalama, üyeleri günler boyunca farklı zaman dilimlerinde imzalayan multisig'ler, planlı hazne ödemeleri ve bir grubun offline imzalanıp kademeli olarak yayınlandığı cold-key saklama. Her biri, saldırganın tarafından bakıldığında, Drift operasyonunun bir tanımıdır.
Tehlike nonce hesabının kendisi değil, imzacısının göremediği bir yerde duran imzalı transaction'dır. Sızdırılmış blockhash tabanlı bir transaction bir dakika içinde bayatlar; sızdırılmış nonce tabanlı olan ise kimlik rotasyonlarından ve donanım değişiminden geçerek süren açık uçlu bir yetkidir. Cüzdan önizlemeleri transaction'ları yalnızca imza anında değerlendirir — haftalar önce imzalanmış ama gönderilmemiş bir transaction'ı ortaya çıkaramazlar ve o çalıştırılana kadar on-chain hiçbir yanı yoktur.
Kapatma düğmesi ve bir denetim rutini
Önceden imzalanmış bir transaction belirli bir nonce değerine bağlı olduğundan, nonce authority'sinden gelen tek bir AdvanceNonceAccount instruction'ı o nonce'a karşı gönderilmemiş her transaction'ı geçersiz kılar. Hesabı kapatmak da işe yarar ve rent bedelini geri öder; yazı bunu bayt başına 5.080 lamport oranıyla yaklaşık 0,00106 SOL olarak veriyor.
Bu, hazineler için somut bir kontrol listesi doğuruyor: authority'si sizin anahtarlarınıza ait olan her 80 baytlık, system'a ait nonce hesabını sayın, her birine karşı kimin imzaladığını ve imzalanan her transaction'ın çalışıp çalışmadığını belirleyin ve tam olarak hesabını veremediğiniz her nonce'u döndürün.
Yazıdan iki uç durum göze çarpıyor. Eski nonce'ları güncel formata taşıyan UpgradeNonceAccount hiç imza gerektirmez — herkes onu herhangi bir hesaba karşı gönderebilir, ancak değer ilerletmez. Ve hesabı tam olarak 80 bayt olmayan bir nonce transaction'ı, çalıştırılmadan önce blok üreticisi tarafından hiçbir hata, ücret veya log kaydı olmadan düşürülür — biri kaybolduğunda ilk kontrol edilecek şey budur.
Neden önemli
Drift'in konseyi private key kaybetmedi; asla bayatlamayan transaction'lara eklenmiş, çoktan vermiş oldukları imzaların kontrolünü kaybettiler. Multisig yönetişimi kullanan her kuruluş — özellikle offline imzalama veya durable nonce'ların söz konusu olduğu yerlerde — imzacılarının dokunduğu her nonce hesabını ateşlenmeyi bekleyen canlı, tarihsiz bir yetki olarak görmelidir. Bu hesapları saymak ve bir operasyon tamamlandığında nonce'ları döndürmek, görünmez sürekli bir riski yönetilebilir hale getirir. Daha geniş ders Solana'nın ötesine de uzanır: imza tabanlı yetkilendirmede onay anı ile etki anı tasarım gereği birbirinden ayrılabilir ve güvenlik süreçleri bunun olacağını varsaymak zorundadır.
- #solana
- #security
- #blockchain
- #multisig
- #web3
İlgili yazılar
- Cloudflare, tarayıcıların gözünden kaçan sekiz kötü niyetli JavaScript payload'unu yapay zekâ modelinin yakaladığını açıkladı
- eBPF ve Rust eğitimi, dosya açma ani yükselişlerinde fidye yazılımını öldüren bir dedektör inşa ediyor
- DAVID ihlalinin ardından ShinyHunters yüz binlerce Florida sürücü kaydını yayınladı