Güvenlik araştırmacıları, OpenSSH’nin ProxyCommand özelliğinde, istemci sistemlerde uzaktan kod yürütülmesini sağlamak için kullanılabilecek kritik bir kusuru ortaya çıkardılar.
CVE-2025-61984 olarak takip edilen güvenlik açığı, ProxyCommand dizesi genişletilirken kullanıcı adlarındaki kontrol karakterlerinin yetersiz filtrelenmesinden kaynaklanıyor.
Bash ve diğer kabuklardaki kusuru gösteren bir kavram kanıtlama istismarı şimdi yayınlandı ve bu, karmaşık SSH proxy yapılandırmaları kullanan yöneticiler için acil endişelere yol açtı.
Güvenlik Açığı Ayrıntıları
Sorun, ssh(1)’in ~/.ssh/config dosyasındaki ProxyCommand yönergesini nasıl işlediğinden kaynaklanmaktadır.
Uzak kullanıcı adını eklemek için %r jetonunu kullanırken, yeni satır gibi kontrol karakterleri çıkarılmaz, bu da bir saldırganın exec çağrısını kesintiye uğratan satır sonları eklemesine ve istemci tarafında rastgele komutlar yürütmesine olanak tanır.
Yerleşik kabukta bir sözdizimi hatası tetiklendiğinde, hatalı biçimlendirilmiş yürütme satırı iptal edilir ve yürütme, kötü amaçlı yüklerin çalışabileceği bir sonraki satırda devam eder.
Etkilenen Ürünler | Darbe | Kullanım Önkoşulları | CVSS 3.1 Puanı |
OpenSSH ≤ 10.0p1 (istemci) | Uzaktan kod yürütme | %r kullanarak ProxyCommand ile kullanıcı SSH yapılandırması | 8.1 (Yüksek) |
Kavram Kanıtı ve Suistimal
Yayınlanan konsept kanıtı Bash, balık ve csh kabuklarındaki kullanımı gösteriyor.
Bash’e $ enjekte ediliyor[*] bir exec çağrısı sırasında, exec’i durduran ancak sonraki komutların çalıştırılmasına izin veren bir sözdizimi hatası üretir. Örneğin:
bash -xc "$(printf 'exec $[*]\necho compromised')"
Bu, ilk hatadan sonra “güvenliği aşılmış” ifadesini yazdırır. Balıklarda da benzer davranışlar (exec cat \$p[0]) ve csh (exec $[)saldırgantarafındankontroledilenkomutdosyalarınınyürütülmesinisağlar[)enableexecutionofattacker-controlledscripts
Etkileşimli olmayan kabuklar varsayılan olarak ayrıştırma hatalarında iptal edildiğinden Zsh bu özel teknikten etkilenmez.
Yaygın bir saldırı vektörü, %r genişletmesinden yararlanan kötü amaçlı bir Git alt modül URL’sidir.
Bir kullanıcı, hazırlanmış bir .gitmodules girişi ve eşleşen bir SSH proxy yapılandırması ile bir depoyu klonladığında, enjekte edilen kontrol karakterleri, proxy komutunun bağlanmadan önce rastgele kod yürütmesine neden olur.
Azaltma ve Öneriler
Birincil çözüm, OpenSSH’yi kullanıcı adlarındaki kontrol karakterlerine açıkça izin verilmeyen 10.1p1 veya sonraki bir sürüme yükseltmektir.
Hemen yükseltme yapamayan yöneticiler, SSH istemci yapılandırmalarında %r belirtecini alıntılayarak riski azaltabilir:
ProxyCommand /usr/bin/nc -X connect -x proxy:8080 '%r@%h:%p'
Bu, yeni satır enjeksiyonunu önler. Ek kapsamlı savunma önlemleri arasında Git alt modülleri için SSH aktarımının aşağıdaki yollarla kısıtlanması yer alır:
git config --global protocol.ssh.allow user
ve filtrelenmemiş SSH kullanıcı adlarını ileten URL işleyicilerinden kaçınmak.
Bu kusurun farkındalığı, %r içeren proxy komutları üreten Teleport gibi bulut ağ geçidi çözümleri de dahil olmak üzere, SSH proxy’lerini kullanan ortamlar için özellikle önemlidir.
Uygun filtreleme ve sürüm güncellemeleri, uzaktan kod yürütmenin bu sinsi yöntemine karşı koruma sağlayacaktır.
Anında Güncellemeler Almak ve GBH’yi Google’da Tercih Edilen Kaynak Olarak Ayarlamak için bizi Google Haberler, LinkedIn ve X’te takip edin.