Linux sistemlerinin vazgeçilmez bileşenlerinden biri olan Sudo kullanıcıların sınırlı erişim haklarına sahipken belirli sistem komutlarını veya görevleri geçici olarak yükseltilmiş ayrıcalıklarla gerçekleştirmelerine olanak tanır.
Ancak bu güçlü aracın içinde bulunan küçük bir hata, saldırganlara tüm sistemi ele geçirme imkânı sunabilir.
2025 Haziran’ında duyurulan ve Rich Mirch tarafından keşfedilen iki kritik zafiyet CVE-2025-32462 ve CVE-2025-32463 Sudo’nun yıllardır gözden kaçmış bazı mekanizmalarının istismar edilebileceğini ortaya koydu.
Bu makalemde bu zafiyetlerin nasıl çalıştığını hangi koşullarda tetiklenebileceğini ve nasıl giderilebileceğini ayrıntılı biçimde ele alıyoruz.
Sudo’nun İç Yapısına Kısa Bir Bakış
Sudo’nun temel işlevi /etc/sudoers
dosyasında tanımlı kurallar doğrultusunda bir kullanıcının belirli komutları hangi koşullarda çalıştırabileceğini denetlemektir.
Sudo:
- Kullanıcı adı,
- Komut adı,
- Argümanlar,
- Hostname (isteğe bağlı),
- Çalıştırılacak ortam (örneğin chroot) gibi birçok parametreyi değerlendirir.
Bu denetim sürecinde bir takım özel parametrler (-h
, -R
, -l
, -e
) belirli işlevleri yerine getirmek için kullanılır.
Ancak bu parametrelerin bazıları beklenmeyen etkileşimler doğurarak güvenlik açıklarına yol açabilir.
CVE-2025-32462: --host
Parametresi ile Yanlış Erişim Denetimi
Açığın Teknik Arka Planı
Bu açık sudo -h <hostname>
veya --host=<hostname>
parametresinin, sadece sudo -l
komutu ile sınırlı olması gerektiği halde diğer modlarda da etkili olabilmesinden kaynaklanır.
Sudo’nun iç işleyişinde runas_setup()
fonksiyonu sudoers_policy_main()
fonksiyonu çağrılmadan önce çalıştırılır. Bu da user_host
değişkeninin -h
parametresi ile değiştirilmesine neden olur.
Açığın ortaya çıktığı kod bloğu (sudo 1.9.17):
/* parse host override before sudoers_policy_main() */
if (ISSET(mode, MODE_LIST) && (host = find_longopt("host")) != NULL) {
user_host = host;
}
Ancak burada yapılan kontrol sadece MODE_LIST
için yapılmakta Bu da sudoedit
, run command
gibi diğer modlarda bu kontrolün eksik kalmasına neden oluyor.
Saldırı Senaryosu
Bir saldırgan /etc/sudoers
dosyasındaki hostname tanımlı bir kuralı istismar edebilir. Örneğin:
Host_Alias TESTHOST = testhost.example.com
User_Alias ADMINS = attacker
ADMINS TESTHOST = (ALL) NOPASSWD: ALL
Bu tanım “attacker” kullanıcısına yalnızca testhost.example.com
üzerinde tüm komutları parola sormadan çalıştırma yetkisi verir. Ancak zafiyet sayesinde saldırgan aşağıdaki komutu çalıştırarak root erişimi elde edebilir.
sudo -h testhost.example.com id
Ve bu, başka bir makineye değil, lokal makinede çalışır!
Güvenlik Açığının Özeti
- Etkilenen sürümler:
- Modern: 1.9.0 – 1.9.17
- Legacy: 1.8.8 – 1.8.32
- Risk Düzeyi: Orta – Sistem yapılandırmasına bağlı
- İstismar Koşulu:
/etc/sudoers
içinde host bazlı kural tanımlanmış olmalı
CVE-2025-32463: --chroot
ile NSS Tabanlı Kütüphane Yükleme
Açığın Teknik Arka Planı
Sudo 1.9.14 ile gelen yeni özellik olan --chroot
desteği, kullanıcının bir chroot
ortamında komut çalıştırmasına olanak tanır. Ancak bu işlem sırasında kritik bir hata yapıldı: chroot()
çağrısı, sudoers
politikası değerlendirildikten sonra yapılması gerekirken öncesinde gerçekleştirildi.
Bu da şu anlama gelir: Sudo, yeni kök dizin altındaki /etc/nsswitch.conf
dosyasını kullanarak kullanıcı kimlik bilgilerini çözümlerken (örn. getpwuid()
çağrısı), saldırganın tanımladığı LD_PRELOAD gibi mekanizmalarla yüklenebilen sahte kütüphaneleri çalıştırmasına olanak tanır.
Saldırı Senaryosu
Saldırgan aşağıdaki adımları izleyebilir:
- Kendi oluşturduğu
chroot
dizin ağacını/tmp/fake_root
altında hazırlar:
mkdir -p /tmp/fake_root/etc /tmp/fake_root/lib /tmp/fake_root/lib64
echo 'passwd: files' > /tmp/fake_root/etc/nsswitch.conf
2. Zararlı bir libnss_files.so.2
kütüphanesi oluşturur ve lib
klasörüne koyar.
3. Ardından aşağıdaki komutu çalıştırarak Sudo’yu bu ortamda çalıştırır:
sudo -R /tmp/fake_root whoami
4. Sudo bu kütüphaneyi yeni root olarak gördüğü /tmp/fake_root/lib/...
altından yükler ve saldırganın kodu root haklarıyla çalıştırılmış olur.
Güvenlik Açığının Özeti
- Etkilenen sürümler:
- Yalnızca 1.9.14 – 1.9.17
- Risk Düzeyi: Yüksek (LD_PRELOAD ile tam kontrol)
- İstismar Koşulu: NSS destekleyen sistemler (Ubuntu, Fedora, macOS Sequoia, vb.)
Hangi Sistemler Etkileniyor?
Dağıtım/Durum | Etkilenme Durumu |
---|---|
Ubuntu 22.04 / 24.04 | ✅ |
Debian 11/12 | ✅ |
Fedora 38+ | ✅ |
RHEL/CentOS 8+ | ✅ |
Alpine Linux | ❌ (NSS kullanılmaz) |
Arch Linux | ✅ |
macOS 13+ (Sequoia) | ✅ |
Güvenlik Önlemleri
1. Sudo Sürümünü Kontrol Edin
sudo -V | grep "Sudo version"
Güncel olmayan sistemler ivedilikle güncellenmelidir.
2. Güncelleme
Dağıtımınıza göre güncellemeyi uygulayın:
Debian/Ubuntu:
sudo apt update && sudo apt install sudo
RHEL/CentOS/Fedora:
sudo dnf update sudo
Arch:
sudo pacman -Syu sudo
3. Host Bazlı Kuralları Gözden Geçirin
/etc/sudoers
dosyasındaki host bazlı tanımlamaları minimumda tutun. Gereksizse kaldırın.
4. --chroot
Kullanımını Kısıtlayın
Çok kullanıcılı sistemlerde sudo -R
opsiyonunun kullanımını kontrol altına alın. Örneğin:
Defaults !use_chroot
Bu iki zafiyet Sudo gibi temel ve kritik bir güvenlik bileşeninde küçük yapılandırma hatalarının sistem güvenliğini nasıl tehlikeye atabileceğini bir kez daha gösteriyor.
Özellikle chroot kaynaklı zafiyet (CVE-2025-32463) root yetkilerinin tamamen ele geçirilmesiyle sonuçlanabilir ve bu nedenle yüksek önemde değerlendirilmelidir.
Tüm sistem yöneticilerine önerimiz en kısa sürede sudo paketini 1.9.17p1 veya daha güncel sürüme yükseltmeleri sudoers
yapılandırmalarını gözden geçirmeleri ve çok kullanıcılı ortamlarda bu tür istismar vektörlerine karşı proaktif denetimler uygulamalarıdır.