PuTTY aracında NIST P521 eğrisi ECDSA özel anahtar imza üretimi açığı
- PuTTY 0.68 ile 0.80 arasındaki tüm sürümlerde, NIST P521 eğrisini kullanan ECDSA özel anahtarlarla imza üreten kodda ciddi bir açık bulunuyor
- PuTTY veya Pageant, SSH sunucusuna kimlik doğrularken anahtardan imza ürettiğinde ortaya çıkıyor
- Bu açığa CVE-2024-31497 atanmış durumda
- Ruhr University Bochum'dan Fabian Bäumer ve Marcus Brinkmann tarafından keşfedildi
Açığın etkisi
- Bu açığın etkisi, özel anahtarın açığa çıkmasıdır
- Saldırganın birkaç düzine imzalı mesaj ve açık anahtarı elinde bulundurması, özel anahtarı kurtarması için yeterli bilgiyi sağlar
- Bu sayede kullanıcıymış gibi imza sahteciliği yaparak bu anahtarı kullanan tüm sunuculara giriş yapabilir
- Bu tür imzaları elde etmek için saldırganın, anahtar kullanılarak kimlik doğrulanan bir sunucuyu kısa süreliğine ele geçirmesi veya anahtarı barındıran bir Pageant kopyasına kısa süreli erişim sağlaması yeterlidir
- Ancak bu imzalar, SSH bağlantısını pasif olarak dinleyen bir saldırgana maruz kalmaz
- Bu tür bir anahtarınız varsa derhal kullanımdan kaldırmanız önerilir
- Tüm OpenSSH
authorized_keys dosyalarından ve diğer SSH sunucularındaki aynı dosyalardan eski açık anahtarı kaldırarak, ele geçirilmiş anahtarın imzalarının artık değer taşımamasını sağlamalısınız
- Ardından yerine yeni bir anahtar çifti oluşturun
Etkilenen anahtar türleri
- Etkilenen tek anahtar türü 521 bit ECDSA'dır
- Windows PuTTYgen'de
Key fingerprint kutusunun başında ecdsa-sha2-nistp521 görünüyorsa, Windows Pageant'e yüklendiğinde NIST p521 olarak açıklanıyorsa ya da SSH protokolünde veya anahtar dosyasında ecdsa-sha2-nistp521 ile başlayan bir kimliğe sahipse bu anahtar etkilenir
- Diğer boyutlardaki ECDSA ve diğer anahtar algoritmaları etkilenmez
- Özellikle Ed25519 etkilenmez
Hatanın ayrıntıları
- Tüm DSA imza şemaları, imzalama sırasında rastgele bir değer üretmek zorundadır
- Bu değer, kriptografide tek kullanımlık bir değeri ifade eden
nonce veya k harfi olarak bilinir
- Saldırgan kullanılan
k değerini tahmin edebilirse veya aynı k ile üretilmiş iki imza bulabilirse özel anahtarı hemen kurtarabileceği iyi bilinir
- Bu nedenle yüksek kaliteli rastgelelik kaynağı olmayan sistemlerde DSA imzası üretmek risklidir
- PuTTY Windows üzerinde geliştirildiği için başlangıçta kriptografik bir rastgele sayı üreticisi yoktu
- Bu yüzden PuTTY, rastgele sayı kullanmadan
k üretmek için deterministik bir yöntem kullanıyordu
- Temel teknik, imzalanacak mesajı ve özel anahtarı birlikte girdi olarak alan güvenli bir hash hesaplamaktır
- Bu teknik bugün ana akım hâline gelmiştir ve RFC 6979 bunun nasıl yapılacağını belgeleyen somut ve iyi bilinen bir yöntemdir
- Ancak PuTTY 2001'den beri aynı işi yapıyordu ve RFC ancak 2013'te yayımlandığı için bu spesifikasyonu izlemiyordu
Açığın nedeni
- PuTTY'nin tekniği, bir SHA-512 hash'i oluşturup ardından bunu DSA sisteminde kullanılan grup sırası
q moduna indirgeme şeklinde çalışıyor
- P521 dışındaki tüm durumlarda, 512 bitlik sayıyı
q moduna indirgemekten kaynaklanan sapma ihmal edilebilir düzeydedir
- Ancak P521 için
q 521 bit olduğundan, yani 512 bitten büyük olduğundan, 512 bitlik bir sayıyı q moduna indirgemek hiçbir etki yaratmaz
- Sonuç olarak üstteki 9 biti her zaman 0 olan
k değerleri elde edilir
- Bu sapma, anahtar kurtarma saldırısını mümkün kılar
Açığın düzeltilmesi
- Bu açığı gidermek için PuTTY, tüm DSA ve ECDSA anahtar türlerinde önceki
k üretim sistemini tamamen bırakıp RFC 6979 tekniğine geçti
- Ed25519 gibi EdDSA anahtarları zaten farklı bir sistem kullandığından değişmedi
- Ancak bu durum, eski
k üreticisiyle imza üretildiğinde mevcut P521 özel anahtarları hakkında bilgi sızdırılmış olduğu gerçeğini değiştirmez
GN⁺ görüşü
- Bu açık nispeten yakın zamanda keşfedilmiş olsa da, görünüşe göre 2001'den beri kullanılan yöntemdeki bir sorundan kaynaklanıyor. En başta standardı izlemeyen özel bir uygulama yaklaşımının taşıdığı riski gösteren bir örnek olarak görülebilir.
- Bu açık yalnızca belirli bir anahtar türünü etkiliyor olsa da, bu anahtarı daha önce kullandıysanız ciddi bir sorun olabilir; bu nedenle etkilenen anahtarları derhal kullanımdan kaldırmak önemlidir.
- Açık kaynak projelerde kriptografiyle ilgili bölümlerin standartlara uyması ve dış denetime tabi tutulması gerekiyor gibi görünüyor. Özellikle rastgele sayı üretimi çok önemli olduğundan, işletim sistemine veya doğrulanmış kütüphanelere dayanmak daha güvenli olacaktır.
- PuTTY, SSH, Telnet ve Rlogin protokollerini destekleyen yaygın kullanılan bir açık kaynak terminal emülatörüdür ve bağlantı bilgilerini kaydetme özelliği sayesinde pratik kullanım sunar. Bundan sonra güvenlik açığı yamalarına aktif şekilde yanıt vermek gerekli görünüyor.
- macOS veya Linux'ta PuTTY yerine kullanılabilecek terminaller arasında varsayılan terminal uygulamaları veya iTerm2 bulunur. Windows'ta ise Windows Terminal, PowerShell ve Cmder alternatif olarak değerlendirilebilir.
4 yorum
Ah..
Bu tür bir anahtar kullandığımı sanmıyorum ama yine de güncellemeyi yaptım.
Bunu görünce hemen 0.81'e güncelledim haha
Hacker News görüşleri
Aşağıda Hacker News yorumlarının bir özeti yer alıyor:
kdeğerinin de 521 bit rastgele olması gerekirken, PuTTY yalnızca 512 bit rastgelelik kullanıyor ve en üstteki 9 bit 0 ile dolduruluyor. Bu durum, lineer cebir yoluyla özel anahtarın sızmasına neden olabilir.qile modüler işleme soktuğu anlaşılamıyor. Gereken bitler kadar kesip kullanmak ya da mesaj ile özel anahtarı ayrı ayrı hashleyip sonra birleştirmek daha iyi bir yaklaşım gibi görünüyor.