PuTTY açığı vuln-p521-bias keşfedildi
(chiark.greenend.org.uk)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_keysdosyaları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
- Tüm OpenSSH
Etkilenen anahtar türleri
- Etkilenen tek anahtar türü 521 bit ECDSA'dır
- Windows PuTTYgen'de
Key fingerprintkutusunun başındaecdsa-sha2-nistp521görünüyorsa, Windows Pageant'e yüklendiğindeNIST p521olarak açıklanıyorsa ya da SSH protokolünde veya anahtar dosyasındaecdsa-sha2-nistp521ile başlayan bir kimliğe sahipse bu anahtar etkilenir - Diğer boyutlardaki ECDSA ve diğer anahtar algoritmaları etkilenmez
- Özellikle Ed25519 etkilenmez
- Windows PuTTYgen'de
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
nonceveyakharfi olarak bilinir
- Bu değer, kriptografide tek kullanımlık bir değeri ifade eden
- Saldırgan kullanılan
kdeğerini tahmin edebilirse veya aynıkile ü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 yüzden PuTTY, rastgele sayı kullanmadan
- 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ı
qmoduna indirgeme şeklinde çalışıyor - P521 dışındaki tüm durumlarda, 512 bitlik sayıyı
qmoduna indirgemekten kaynaklanan sapma ihmal edilebilir düzeydedir - Ancak P521 için
q521 bit olduğundan, yani 512 bitten büyük olduğundan, 512 bitlik bir sayıyıqmoduna indirgemek hiçbir etki yaratmaz- Sonuç olarak üstteki 9 biti her zaman 0 olan
kdeğerleri elde edilir
- Sonuç olarak üstteki 9 biti her zaman 0 olan
- 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.