Güvenlik araştırmacısı Ozgun Kultekin, OpenSSH protokolünde "*sshole" olarak adlandırılan ve saldırganların parola ile girişi engellenmiş Linux hesaplarına giriş yapmasına olanak tanıyan yeni bir güvenlik açığı ortaya çıkardı. Bu açık, özellikle musl C kütüphanesine dayanan sistemlerde görülmekte olup Alpine Linux ve OpenWrt gibi popüler dağıtımları risk altına sokmaktadır.
Açığın teknik çalışma mekanizması
Linux sistemlerindeki geleneksel koruma, parola ile girişi engellemek için /etc/shadow dosyasındaki parola özetinin (hash) bir yıldız işareti (*) ile değiştirilmesine dayanır. 2016 yılında ortaya çıkan kullanıcı adı numaralandırma (Username Enumeration) açıklarını önlemek amacıyla OpenSSH geliştiricileri, sistemin hesap durumundan bağımsız olarak sunucudan standart bir yanıt dönmesini sağlamak için geçerli bir hash değeri olmayan hesaplar için bile şifreleme (hashing) işlemi gerçekleştirecek şekilde sistemi modifiye ettiler.
Sorun, musl C kütüphanesinin, özellikle crypt() fonksiyonunun, şifreleme işlemi başarısız olduğunda (bu durum özellikle girilen parola uzunluğu 256 baytı aştığında gerçekleşir) değer olarak yıldız işareti (*) döndürmesinden kaynaklanmaktadır. Bu durum, hatalı denemeden elde edilen değerin, devre dışı bırakılmış hesap için /etc/shadow dosyasında saklanan değerle eşleşmesine neden olur ve OpenSSH'ı kandırarak giriş işlemine izin vermesini sağlar.
Bu haber neden önemli?
Bu açığın asıl tehlikesi, bulut bilişim ortamlarında tam kök (Root) yetkilerine erişime yol açabilmesidir. Araştırmacı, AWS ve Azure platformlarında kullanılan resmi Alpine Linux imajlarının, parola gerektirmeyen doas yetkilerine sahip "alpine" adlı varsayılan bir hesap içerdiğini ve bunun saldırganın açığı kullanarak sunucunun tam kontrolünü ele geçirmesine olanak tanıyabileceği konusunda uyardı.
İstismar koşulları ve etkilenen sistemler
Bu açık tüm sistemleri etkilememektedir; glibc kütüphanesine dayalı (Debian, Ubuntu, Fedora gibi) veya PAM kimlik doğrulaması kullanan sistemler güvende kalmaya devam etmektedir. İstismarın başarılı olması için aşağıdaki koşulların sağlanması gerekir:
- OpenSSH'ın musl kütüphanesine dayalı bir sistemde (Alpine Linux, OpenWrt, Buildroot veya Yocto gibi) çalışıyor olması.
- PAM kimlik doğrulamasının devre dışı bırakılmış olması (Alpine Linux'taki openssh-server paketinde varsayılan ayardır).
- SSH ayarlarında parola kimlik doğrulamasının (Password Authentication) etkinleştirilmiş olması.
- Yıldız işareti (*) kullanılarak parolası devre dışı bırakılmış en az bir hesabın bulunması.
Korunma ve doğrulama yöntemleri
OpenSSH geliştiricileri, bu açığı kesin olarak gideren 10.6p2 sürümünü yayınladı. Sistem yöneticilerinin OpenSSH paketlerini derhal güncellemeleri önerilmektedir. Acil güncellemenin mümkün olmadığı durumlarda, yapılandırma dosyasında PasswordAuthentication no ayarı yapılarak ve servis yeniden başlatılarak parola kimlik doğrulamasının devre dışı bırakılmasıyla riskler azaltılabilir.
Sistemin saldırıya uğrama olasılığını kontrol etmek için, Alpine Linux'ta aşağıdaki komut kullanılarak devre dışı olduğu varsayılan hesaplara yapılan başarılı girişler için kimlik doğrulama günlükleri incelenebilir:
grep "Accepted password" /var/log/messages