1 puan yazan GN⁺ 2024-07-02 | 1 yorum | WhatsApp'ta paylaş

Özet

  • OpenSSH'de güvenlik açığı keşfi: OpenSSH sunucusunda (sshd) sinyal işleyici yarış durumu nedeniyle uzaktan kod çalıştırma (RCE) açığı bulundu. Bu açık, varsayılan yapılandırmada sshd'yi etkiliyor.
  • Açığın kökeni: Bu açık, 2006'da bildirilen CVE-2006-5051'in yeniden ortaya çıkmış bir hali olup, Ekim 2020'de OpenSSH 8.5p1'de yapılan bir kod değişikliği nedeniyle oluştu.
  • Açığın etkisi: glibc tabanlı Linux sistemlerinde uzaktan istismar edilebilir ve sshd'nin ayrıcalıklı kodunu etkileyerek root yetkileriyle uzaktan kod çalıştırmaya yol açabilir.
  • Açığın istismar yöntemi: Bu açığı istismar etmek için belirli kod yollarının bulunması ve bunların doğru anda kesintiye uğratılması gerekiyor. Bunun için eski OpenSSH sürümlerinden başlanıp en yeni sürümlere kadar genişletildi.
  • Yama ve hafifletme: Açığı gidermek için yama ve hafifletme yöntemleri sunuluyor.

SSH-2.0-OpenSSH_3.4p1 Debian 1:3.4p1-1.woody.3 (Debian 3.0r6, 2005)

Teori

  • SIGALRM işleyicisi: Bu sürümün SIGALRM işleyicisi packet_close() çağırıyor; bu da buffer_free(), ardından xfree() ve free() çağrılarına yol açıyor. free() asenkron sinyal açısından güvenli değil.
  • malloc kod analizi: malloc kodunda, free() çağrısının SIGALRM ile kesilip SIGALRM işleyicisi içinde yeniden çağrılması durumunda açığın istismar edilebileceği bir yol bulundu.

Uygulama

  • Saldırı yöntemi: DSA açık anahtarını ayrıştıran koddaki free() çağrısı kesintiye uğratılıyor ve bu durum SIGALRM işleyicisi içinde istismar edilerek uzaktan kod çalıştırma elde ediliyor.
  • Yarış durumunu kazanma: Bu yarış durumunu kazanmak için yaklaşık 10.000 deneme gerekiyor ve ortalama olarak yaklaşık 1 hafta sürüyor.

Zamanlama

  • Zamanlama stratejisi: Ağ gecikmesini en aza indirmek için son bayt son anda gönderiliyor ve round-trip time izlenerek zamanlama ayarlanıyor. Bu sayede yarış durumunu kazanma olasılığı artırılıyor.

SSH-2.0-OpenSSH_4.2p1 Debian-7ubuntu3 (Ubuntu 6.06.1, 2006)

1. teori

  • SIGALRM işleyicisi: Bu sürümün SIGALRM işleyicisi packet_close() çağırmıyor ve malloc işlevi her zaman kilit aldığı için başka bir çözüm gerekiyor.
  • PAM kullanımı: PAM'in pam_end() işlevinin asenkron sinyal açısından güvenli olmadığı tespit edildi ve bunun istismar edilebileceği yollar araştırıldı.

2. teori

  • pam_start() analizi: pam_start() kesintiye uğrarsa PAM yapısı tutarsız bir durumda kalabiliyor ve bu durum SIGALRM işleyicisi içinde istismar edilebiliyor.
  • House of Mind tekniği: Saldırı için House of Mind tekniği kullanılarak bellek tahsisi manipüle ediliyor ve root yetkileriyle uzaktan kod çalıştırma elde ediliyor.

Uygulama

  • Saldırı yöntemi: Uzun kullanıcı adları kullanılarak bellek tahsisi manipüle ediliyor ve birden fazla pam_start() çağrısı üzerinden yarış durumunu kazanma olasılığı artırılıyor.

Zamanlama

  • Zamanlama stratejisi: Önceki Debian sürümünde kullanılan zamanlama stratejisi yeniden kullanılarak yarış durumunu kazanma olasılığı artırılıyor. Ortalama olarak 1-2 gün sürüyor.

SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u2 (Debian 12.5.0, 2024)

Teori

  • SIGALRM işleyicisi: Bu sürümün SIGALRM işleyicisi syslog() çağırıyor; bu da asenkron sinyal açısından güvenli olmayan işlevleri tetikliyor.
  • glibc analizi: glibc'nin syslog() işlevi malloc çağırıyor ve bu da asenkron sinyal açısından güvenli değil. Ayrıca glibc'nin malloc işlevi tek iş parçacıklı durumda kilit kullanmıyor.

Yama ve hafifletme

  • Yama: Açık OpenSSH geliştiricilerine bildirildi ve bunu gidermek için bir yama sağlandı.

GN⁺ görüşü

  • Güvenliğin önemi: OpenSSH son derece kritik bir güvenlik yazılımı ve bu açık çok nadir görülen bir örnek.
  • Açığın istismar zorluğu: Bu açığın istismarı çok hassas zamanlama ve çok sayıda deneme gerektiriyor.
  • Alternatif çözümler: OpenSSH dışında da çeşitli güvenlik çözümleri bulunuyor ve bunları birlikte kullanmak faydalı olabilir.
  • Teknik zorluk: Bu araştırma çok yüksek düzeyde teknik zorluk içeriyor ve güvenlik araştırmacılarına büyük ilham verebilir.
  • Açığın hafifletilmesi: En güncel güvenlik yamalarının uygulanması ve güvenlik ayarlarının güçlendirilmesi önemli.

1 yorum

 
GN⁺ 2024-07-02
Hacker News yorumları
  • RCE düzeltmesi neredeyse bir ay önce kamuya açık şekilde "gizlice" yapıldı

    • PerSourcePenalties etkinleştirildiğinde sshd(8), çocuk ön-kimlik doğrulama oturumu süreçlerinin çıkış durumunu izler
    • İstemci tekrar tekrar kimlik doğrulamayı denediğinde veya sshd çöktüğünde ceza kaydeder
    • Bu yama ikili mimariyi değiştirerek belirli güvenlik açığını ortadan kaldırıyor ve tüm exploit sınıfını hafifletiyor
  • Hatayı ortaya çıkaran diff içinde fonksiyon şu şekilde yeniden düzenlenmiş

    • Orijinal fonksiyon: sigdie(const char *fmt,...)
    • Yeniden düzenlenen fonksiyon: sshsigdie(const char *file, const char *func, int line, const char *fmt, ...)
    • #ifdef eksik
    • Daha fazla kişi pull request'i inceleseydi önlenebilirdi
  • OpenSSH sürüm notlarında ilginç bir yorum

    • 32-bit Linux/glibc sistemlerde ASLR ile birlikte başarılı exploit gösterildi
    • 64-bit sistemlerde de mümkün görünüyor
  • OpenBSD, SIGALRM işleyicisinin syslog_r() çağırması nedeniyle bu güvenlik açığından etkilenmiyor

    • syslog()'un asenkron sinyal güvenli sürümünü kullanıyor
    • Sinyal işleyicisi içindeki kod miktarını en aza indiren bir refactoring gerekiyordu
  • musl'un syslog(3) uygulamasını inceleyince, glibc'nin aksine kolayca exploit edilemediği görülüyor

    • Her şey stack üzerinde veya yeniden girişe karşı korumalı statik değişkenlerde bulunuyor
  • FreeBSD için bir yama çıktı ve glibc kullanmadığı için büyük olasılıkla etkilenmiyor

  • sshd_config dosyasında 'LoginGraceTime 0' ayarlanması sorunu hafifletebilir

    • Bu, hizmeti hizmet reddi saldırılarına açık hale getirir ama uzaktan kod çalıştırmayı önler
  • Debian 12 için yama çıktı, Debian 11 etkilenmiyor

  • OpenSSH sürüm notları ve minimal yama bağlantısı paylaşıldı

  • Bağımsız bir bakış açısından, tek bir güvenlik açığını bulmanın tek başına yeterli olması gerektiği düşünülüyor

    • İnsanlar ancak tüm zincir bulunduğunda bunu ciddiye alma veya ödül ödeme eğiliminde oluyor