Açık Nasıl Çalışıyor?
Sorunun teknik kökü, Alpine Linux'un dayandığı C kütüphanesi olan musl ile OpenSSH'nin parola doğrulama mekanizması arasındaki etkileşimde yatıyor. OpenSSH sunucusu (sshd), PAM (Pluggable Authentication Module) arayüzü kullanılmadan parola denetimi yaptığında, girilen parolayı crypt() fonksiyonuyla hash'leyerek saklanan değerle karşılaştırıyor. Parola atanmamış hesaplarda bu saklanan alan yalnızca * karakterinden oluşuyor; bu değer bir hash için gereken rastgele ön ek (salt) barındırmaya yetecek uzunlukta olmadığından sshd, başka bir hesabın salt değerini ödünç alıyor.İşte bu noktada musl devreye giriyor: musl'un crypt() uygulaması, $5$ ve $6$ hash türleri için 256 baytı aşan parolaları reddediyor ve hata sinyali olarak * döndürüyor. Bu * değeri, hesabın saklanan * alanıyla birebir örtüştüğünden sshd girişi kabul ediyor. Saldırganın yapması gereken tek şey, 257 ile 1.024 bayt arasında herhangi bir parola göndermek.
OpenSSH projesinden Damien Miller, bu davranışın musl'da Ağustos 2012'de yapılan iki ayrı değişiklikten ve OpenSSH'de Temmuz 2016'da CVE-2016-6210'u gidermek amacıyla eklenen salt ödünç alma mekanizmasından kaynaklandığını açıkladı. Açığı keşfeden Özgün Kültekin ise sorunun o tarihten bu yana var olduğunu belirtiyor.
Hangi Sistemler Etkileniyor?
Alpine'ın güvenlik danışma belgesi, bir sunucunun risk altında sayılabilmesi için dört koşulun aynı anda sağlanması gerektiğini açıklıyor. Bunlar sırasıyla şunlar: PAM desteği olmadan derlenmiş openssh-server paketinin ya da UsePAM no ayarıyla openssh-server-pam paketinin kullanılması; PasswordAuthentication değerinin varsayılan olan yes olarak kalması; en az bir hesabın parola alanında * bulunması ve sistemdeki başka bir yerel hesabın $5$ veya $6$ ile başlayan bir parola hash'ine sahip olması.Alpine üzerinde parola atanmamış hesap kategorisine girenler arasında adduser komutuyla parola belirlenmeden oluşturulan anahtar tabanlı kullanıcılar, musl-nscd aracılığıyla dizin servisinden gelen kullanıcılar, yaklaşık Alpine 3.16'dan bu yana temel imajda root:* biçiminde gönderilen root hesabı ve resmi bulut imajlarındaki alpine kullanıcısı yer alıyor. Root hesabı, varsayılan PermitRootLogin prohibit-password ayarı sayesinde doğrudan hedef alınamıyor; ancak açığa maruz kalan bir hesap doas gibi araçlarla root ayrıcalığı kazanabiliyorsa bu koruma işe yaramıyor.
Tiny-cloud imajlarının 3.18.11 ile 3.24.3 sürümleri arasında alpine kullanıcısına parolasız doas yetkisi tanındığı belirtiliyor. Bu imajlar ilk açılışta güvende olsa da sistemde herhangi bir $6$ hash oluştuğu anda —örneğin bir yönetici konsol parolası belirlediğinde— saldırıya açık hale geliyor. Saldırgan alpine hesabına giriş yapıp doas ile root olabiliyor.
Öte yandan glibc tabanlı Linux sistemleri, PAM üzerinden parola denetimi yapan sistemler ve Linux dışı işletim sistemleri bu açıktan etkilenmiyor. sshd çalıştırmayan konteynerler, PasswordAuthentication no ayarlı sistemler ve cloud-init aracılığıyla yapılandırılan bulut imajları da güvende. Ayrıca Kültekin, OpenWrt ve Buildroot gibi musl tabanlı diğer sistemlerin de kontrol edilmesi gerektiğini vurguluyor; ancak OpenWrt'nin varsayılan SSH çözümü olan Dropbear'ın bu açıktan etkilenmediğini de ekliyor.
Düzeltme ve Geçici Önlemler
Alpine üzerinde düzeltme, paket güncellemesi ve ardından sshd'nin yeniden başlatılmasından oluşuyor; çünkü paket yükseltmesi çalışan sshd sürecini otomatik olarak yeniden başlatmıyor. Bunun için sırasıyla apk upgrade -U -a ve rc-service sshd restart komutlarının çalıştırılması gerekiyor. 3.21.10, 3.22.8, 3.23.8 ve 3.24.4 nokta sürümleri düzeltilmiş paketi zaten içeriyor; destek süresi dolmuş olan 3.16 ile 3.21 arası dallar için de düzeltme paketi yayımlandı. OpenSSH'yi kaynaktan derleyenler için ise 10.6p2 sürümü ilgili değişikliği içeriyor.Güncelleme hemen yapılamıyorsa parola girişini devre dışı bırakmak saldırıyı durduruyor. Bunun için önce SSH anahtarıyla girişin çalıştığından emin olunması, mevcut oturum açık tutularak PasswordAuthentication no ayarının yapılması, sshd -t komutuyla yapılandırmanın doğrulanması ve ardından sshd'nin yeniden başlatılması öneriliyor. Damien Miller, etkilenen sistem yöneticilerine bu ayarı derhal uygulamalarını ya da bu sistemler için SSH'yi kapatmalarını tavsiye etti.
Danışma belgesi ayrıca /var/log/messages dosyasında parola atanmamış hesaplar için Accepted password içeren sshd satırlarının aranmasını öneriyor. Şüpheli giriş ihtimali göz ardı edilemiyorsa makine ele geçirilmiş kabul edilmeli; doas kullanımı, yakın zamanda oluşturulan kullanıcılar, dosyalar ve yetkili anahtarlar gözden geçirilmeli.
Düzeltmenin Teknik Özü ve Yayımlanma Hızı
10.6p2'deki kod değişikliği, saklanan parola alanı dört karakterden kısaysa sshd'nin eşleşmeyi reddetmesini sağlıyor. OpenSSH ekibi bunu bir geçici çözüm olarak nitelendiriyor ve asıl sorunun sshd dışında yattığını belirtiyor. Açığa bugüne kadar herhangi bir CVE tanımlayıcısı atanmadı.Miller, ekibinin açığı bu hafta öğrendiğini ve düzeltmeyi olabildiğince hızlı yayımladığını açıkladı. Yayın duyurusunda uzun süreli gizlilik dönemlerini artık tehlikeli bulduklarını ve esas olarak saldırganlara yarar sağladığını ifade etti; bunun nedenini de yapay zeka ajanlarının aynı hataları bazen saatler içinde yeniden keşfettiğini son dönemde gözlemlemelerine bağladı.

Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yazılım ve Uygulamalar
Yorumlar (0)
Yorum yapmak için giriş yapmalısınız.