Bir Linux sunucusu için mükemmel kabus senaryosu, saldırganın tek yapması gerekenin sunucunun Secure Shell (SSH) portuna ulaşmak, içeri süzülmek ve sunucuyu ele geçirmek olduğu durumdur. Popüler hafif Linux sunucusu Alpine Linux'un başına gelen tam olarak buydu. Üstüne tuz biber ekercesine, bu olay Alpine Linux'un GitLab uygulamasındaki güvenlik açığı boyutundaki kurşunu atlatmasından sadece günler sonra meydana geldi.

Güvenlik mühendisi Gregory Bryant'ın LinkedIn gönderisinde açıkladığı gibi: "Çoğu kimlik doğrulama atlatması karmaşık mantık zincirlerinden kaynaklanır, ancak dünkü Alpine Linux OpenSSH güvenlik açığı (CVE-2026-123158) tek bir karaktere indirgeniyor: *."

Alpine Linux'u (veya musl tabanlı başka bir dağıtımı) varsayılan openssh-server paketiyle (Pluggable Authentication Modules, yani PAM olmadan) ve PasswordAuthentication etkinleştirilmiş halde çalıştırıyorsanız, bir saldırgan 257 ila 1024 bayt uzunluğunda bir parola göndererek parolası devre dışı bırakılmış veya yalnızca anahtar kullanan hesaplara giriş yapabilir.

Alpine Linux, standart C kütüphanesinin (libc) hafif bir sürümü olan musl'u kullanan tek işletim sistemi değil. Musl kullanan ve potansiyel olarak savunmasız olan diğer işletim sistemleri arasında Adélie Linux; Void Linux; Sabotage Linux; bir Android varyantı olan OpenWrt; ve gömülü Linux dağıtımları oluşturmak için kullanılan Yocto Project yer alıyor.

Ticari gömülü Linux dağıtımı Wind River Linux'u üreten Wind River da konuyu inceliyor. Bir şirket temsilcisi bana şunları söyledi: "Wind River güvenliği ciddiye alır. Bildirilen güvenlik açığını aktif olarak inceliyor ve potansiyel etkisini değerlendiriyoruz. Gerektiğinde uygun adımları atacağız."

Perde arkasında, OpenSSH PAM olmadan derlendiğinde, parolaları C kütüphanesinin crypt() işlevini kullanarak parola denemesini hash'leyerek doğrular. Ardından sonucu hesabın saklanan parola alanıyla karşılaştırır. Şimdiye kadar her şey yolunda.

Ancak bir anahtar 256 bayttan uzun olduğunda, musl'un crypt() işlevi hata göstergesi olarak * dizesini döndürür. Bu da parolası olmayan herhangi bir hesap için parola alanında bulunan şeydir, örneğin yalnızca anahtar kullanan bir hesap. Böylece "hash" eşleşir ve giriş başarılı olur, saldırgan içeri girer.

Bunu istismar etmek için bir saldırganın yalnızca böyle bir hesabın adına ihtiyacı vardır. Saldırganın ayrıca makinede 5 veya 6 parola hash'ine sahip en az bir başka hesaba ihtiyacı vardır ve ardından 257 ila 1.024 bayt uzunluğunda bir parola göndermesi gerekir. Alpine'a göre, parolası olan bir kullanıcı, tüm parolasız hesapların erişilebilir olması için yeterlidir.

glibc'nin crypt() işlevini kullanan Linux sistemlerinde, ki neredeyse hepsi böyledir, aynı deneme hata durumunda NULL döndürür ve sshd bunu zaten reddeder, bu nedenle Debian, Ubuntu, Fedora vb. etkilenmez.

Sorunu ortaya çıkaran grup *sshole'a göre, bu 2016'dan beri gizlenen bir yan etkidir.

Alpine, kontrol ettiği her sürümün etkilendiğini söyledi: 3.21'den 3.24'e, edge ve daha eski 3.16 ila 3.20 dalları. Maruz kalma aşağıdakileri gerektirir:

Root çoğu durumda doğrudan maruz kalmaz. Yaklaşık Alpine 3.16'dan beri temel imajda root:* olarak gönderilir, ancak OpenSSH'nin varsayılan PermitRootLogin prohibit-password ayarı bunu engeller. Örneğin doas aracılığıyla root olabilen başka bir hesap, yine de saldırgana root'a giden bir yol sunar.

Alpine, resmi tiny-cloud imajlarının 3.18.11 ila 3.24.3 sürümlerini özellikle savunmasız olarak işaretledi. Bunlar, * parola alanına sahip bir alpine kullanıcısı ve parolasız doas ile gelir. İlk önyüklemede güvenlidirler, ancak makinede herhangi bir 6 hash'i oluştuğunda istismar edilebilir hale gelirler. Bu, bir yönetici konsol parolası belirlediğinde veya kullanıcı verileri hash'lenmiş parolaya sahip bir kullanıcı eklediğinde olabilir, yani esasen hepsi.

Alpine, Perşembe günü 3.21.10, 3.22.8, 3.23.8 ve 3.24.4 sürümlerini yayınladı ve güvenlik değişiklikleri arasında OpenSSH düzeltmesi de vardı. Ayrıca 3.16'ya kadar her sürüm için düzeltilmiş paketler yayınladı. Alpine 3.21, 1 Kasım'da destek sonuna ulaştı.

Yeni yayınlanan OpenSSH 10.6p2, sshd'deki sorunu önler. Alpine'ın kararlı dalları aynı sorun için bir yama taşır. apk upgrade -U -a komutunu çalıştırmalı ve ardından sshd'yi yeniden başlatmalısınız.