
PoC لـ Polkit
PoC لـ Polkit
Policy Toolkit (أو Polkit) منذ إطلاقه في عام 2009، يسمح لأي مهاجم دون صلاحيات الجذر بالحصول بسهولة على وصول إداري على أي نظام لينكس يحتوي على حزمة Polkit. لسوء الحظ (أو لا)، فهو مثبت بشكل افتراضي في معظم توزيعات لينكس. مما جعل هذه الثغرة منتشرة على نطاق واسع.
لحسن الحظ (أو لا)، لا يمكن استغلال هذه الثغرة عن بُعد، مما يجعلها ثغرة تصعيد صلاحيات محلية (LPE).
Polkit هو جزء من معظم أنظمة التفويض في لينكس. عندما يتم تنفيذ أي إجراء يتطلب إذنًا إداريًا، يحدد Polkit ما إذا كان لديك الصلاحيات اللازمة لتنفيذ الإجراء. وهو مدمج في systemd (بديل init). في الواقع، يُعرف Systemd باسم "sudo الخاص بـ systemd"، وفقًا لـ THM.
عند التفاعل مع Polkit يمكننا استخدام pkexec (البرنامج الذي يحتوي على الثغرة Pwnkit). كمثال، عندما نحاول تنفيذ useradd باستخدام pkexec في جلسة واجهة رسومية، تظهر نافذة تطلب بيانات الاعتماد. في سطر الأوامر يمكننا الحصول على شيء مشابه لهذا:
user@user:~$ pkexec useradd test1
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run '/usr/sbin/useradd' as the super user
Authenticating as: user,,, (user)
Password:
من الواضح أن Canonical قد أصدرت إصدارات مصححة من هذه الحزمة في مدير الحزم APT. إذا لم يتم نشر إصدارات مصححة في أي توزيعة، فما عليك سوى إزالة بت SUID من pkexec.
sudo chmod 0777 'which pkexec'