4 puan yazan GN⁺ 2024-04-16 | 4 yorum | WhatsApp'ta paylaş

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

 
tominam2 2024-04-16

Ah..

 
kuroneko 2024-04-16

Bu tür bir anahtar kullandığımı sanmıyorum ama yine de güncellemeyi yaptım.

 
dlehals2 2024-04-16

Bunu görünce hemen 0.81'e güncelledim haha

 
GN⁺ 2024-04-16
Hacker News görüşleri

Aşağıda Hacker News yorumlarının bir özeti yer alıyor:

  • PuTTY'nin kullandığı ECDSA P-521 anahtar üretim yönteminde bir güvenlik açığı bulundu. 521 bitlik modül kullanıldığında k değ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.
  • PuTTY geliştiricisi Simon Tatham'ın güvenlik açığını dürüst ve açık bir şekilde duyurması büyük takdir topladı. Bahane üretmeden veya küçümsemeden durumu olduğu gibi aktardı.
  • Güvenlik açığının nasıl keşfedildiğine dair arka plan açıklamasının yetersiz olduğu belirtiliyor.
  • Güncel Windows sürümlerinde OpenSSH varsayılan olarak yerleşik geldiği için artık PuTTY kullanmak zorunlu değil. Yine de kullanım alışkanlığı veya atalet nedeniyle kullanmaya devam eden çok kişi var.
  • Varsayılan ayarları kullanmayıp özellikle bu anahtar türünü seçen kişi sayısının fazla olmadığı düşünülüyor.
  • P521 host anahtarı kullanılıyorsa, istemci güncellendikten sonra anahtarın değiştirilmesi gerekebilir.
  • RNG veya modüler aritmetik gerektirmeyen EdDSA'ya geçiş düşünülmeye değer olabilir.
  • PuTTY adının, pencere camını sabitlemekte kullanılan macun anlamındaki putty'den geldiğini geç fark ettiğini söyleyenler var.
  • PuTTY'nin neden SHA-512 hash sonucunu q ile 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.
  • 521 bitlik rastgele sayı yerine en üstteki 9 biti 0 olan bir sayı kullanıldığında 60 imzadan sonra özel anahtarın sızdığı söyleniyor; bunun hangi prensiple gerçekleştiği merak ediliyor.