deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

SlowMist: Ele Geçirilen Altı Qubic Ağ Başlığı Cüzdan Seed'lerini Yeniden Oluşturmaya Yetti

Güvenlik firması SlowMist, Qubic cüzdan seed'lerinin JavaScript'in Math.random() fonksiyonuyla üretildiğini ve aynı değerlerin şifrelenmemiş ağ başlıkları üzerinden sızdığını, bunun saldırganların 2,94 trilyon QU boşaltmasına imkân tanıdığını açıkladı.

SlowMist: Ele Geçirilen Altı Qubic Ağ Başlığı Cüzdan Seed'lerini Yeniden Oluşturmaya Yetti

Güvenlik firması SlowMist, saldırganların 1.404 Qubic cüzdanından yaklaşık 2,94 trilyon QU'yu nasıl boşaltabildiğini açıkladı; bu hırsızlık 18 Ekim'de proje tarafından duyurulmuştu. Basis Desk'in aktardığı ve 20 Ekim'de yayımlanan SlowMist analizine göre, cüzdan özel anahtar seed'lerini JavaScript'in Math.random() fonksiyonuyla üretiyor ve aynı rastgele sayı akışı, şifrelenmeden iletilen ağ paketi başlıklarına sızıyordu.

Seed üretimi nasıl başarısız oldu

SlowMist, Qubic Wallet'in 55 karakterlik hesap seed'lerini Math.random()'dan alınan harflerle oluşturduğunu tespit etti. V8 motorlarında bu fonksiyon xorshift128+ üzerinde çalışır; bu, hiçbir zaman kriptografi için tasarlanmamış hızlı bir algoritmadır. Bunun sonucu, 55 karakterlik biçimin nominal olarak 258,5 bit ima etmesine rağmen eldeki gerçek entropinin en fazla 64 bit olmasıdır. İkinci bir koruma katmanı da yoktu: türetilen karakterler, araya parola ya da donanım entropisi karıştırılmadan doğrudan özel anahtara dönüştürülüyordu. Üretecin çıktısını tahmin etmek, anahtarı tahmin etmek anlamına geliyordu.

Ağ üzerinden sızma

Bu açığın uzaktan istismar edilebilir hale gelmesinin nedeni, cüzdanın ağ trafiğini oluştururken de aynı rastgele sayı akışını kullanmasıydı. SlowMist, dejaVu adlı bir request header'ının Math.random()'dan kesilmiş değerlerle doldurulduğunu bildirdi. Bu başlıklar, TLS korumasının varsayılan web köprüsünde sona ermesinin ardından eşlere düz metin TCP üzerinden gönderilen bakiye ve tick isteklerinin içinde taşıyordu; bu yüzden yol üzerinde konumlanan herkes bunları okuyabilirdi.

Altı gözlem ve on beş milisaniye

Art arda altı dejaVu değerini yakalamak her şeyi çözmeye yetti. Araştırmacılar kesilmiş değerleri aralık kısıtlamalarına dönüştürüp Z3 çözücüsüne verdiler; çözücü, PRNG'nin tam 128 bitlik iç durumunu yaklaşık 15 milisaniyede kurtardı. Durum bir kez bilindiğinde, çıktılar hem geriye hem ileriye doğru hesaplanabiliyordu; seed üretiminde kullanılan değerler de dahil. Bakiye sorguları hesabın public key'ini de ortaya çıkardığı için, bir gözlemci aday seed'ler üretebilir, bunları çevrimdışı doğrulayabilir ve cüzdanı boşaltmak için imzaları taklit edebilirdi. Basis Desk, yetkisiz transferler tespit edildiğinde Qubic'in ağı duraklattığını not ediyor.

Neden önemli

Bu olay, birbirini güçlendiren iki bağımsız zafiyetin ders kitabı örneğidir. Anahtar malzemesi için Math.random() kullanmak köklü bir anti-pattern'dir ve aynı akışı üçüncü tarafların görebildiği veriler için yeniden kullanmak, yerel bir tasarım kusurunu, sıradan trafiğin pasif gözleminden fazlasını gerektirmeyen uzaktan bir saldırıya dönüştürdü. Cüzdan ve uygulama geliştiricileri için çıkarımlar somut: anahtarları yalnızca crypto.getRandomValues gibi kriptografik olarak güvenli bir kaynaktan türetin, rastgele sayı akışlarını amaca göre izole edin ve TLS bir aracıda sona erdiğinde uçtan uca şifrelemenin sürdüğünü varsaymayın. Rakamlar ayrıca kısıtlı rastgeleliğin pratikte ne kadar az güvenlik sağladığını gösteriyor. Nominal olarak 258,5 bit ölçülen bir anahtar uzayı, yol üzerindeki herhangi bir gözlemcinin yakalayabileceği altı başlık değerinden standart bir çözücünün milisaniyeler içinde kurtardığı 128 bitlik bir iç duruma çöktü.

  • #security
  • #cryptography
  • #javascript
  • #cryptocurrency
  • #blockchain

İlgili yazılar