
CVE-2026-34990 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो CUPS 2.4.16 में CUPS_CREATE_LOCAL_PRINTER और कैप्चर किए गए लोकल ऑथ टोकन के माध्यम से मनमानी फ़ाइल राइट के जरिए लोकल प्रिविलेज एस्केलेशन है।
CUPS 2.4.16 में CUPS_CREATE_LOCAL_PRINTER के माध्यम से मनमानी फ़ाइल लेखन द्वारा स्थानीय विशेषाधिकार वृद्धि।
CUPS file:// पथ पर सेट device-uri के साथ स्थानीय प्रिंटर बनाने की अनुमति देता है। document-format: application/vnd.cups-raw और compression: gzip के साथ एक प्रिंट जॉब सबमिट करने पर cupsd जॉब डेटा को डीकंप्रेस करता है और उसे सीधे उस पथ पर लिखता है — उस उपयोगकर्ता के रूप में जिसके रूप में cupsd चलता है (आमतौर पर root या एक उच्च-विशेषाधिकार प्राप्त सेवा खाता)।
एडमिन संचालन के लिए आवश्यक स्थानीय प्रमाणीकरण टोकन को localhost पर एक नकली IPP सर्वर की ओर ipptool के cups-create-local-printer.test को इंगित करके कैप्चर किया जा सकता है। जब CUPS प्रमाणीकरण के लिए कनेक्ट होता है, तो यह Authorization: Local <token> हेडर भेजता है, जिसे आप CUPS द्वारा सत्यापित करने से पहले इंटरसेप्ट कर लेते हैं।
cups-create-local-printer.test के साथ ipptool चलाएँ — CUPS प्रमाणीकरण के लिए अपना स्थानीय प्रमाणीकरण टोकन भेजता है401 WWW-Authenticate: Local trc="y" के साथ उत्तर देंdevice-uri: file:///etc/sudoers.d/<user>-pwn के साथ एक प्रिंटर बनाने के लिए टोकन का उपयोग करेंsudo -n /bin/bashcreate_local_printer कॉल रेस के दौरान अपना सॉकेट खुला रखता है — यह प्रिंटर पंजीकरण को इन-फ़्लाइट बनाए रखता है जबकि एडमिन ऑप्स और प्रिंट जॉब लैंड होते हैं।
cups-create-local-printer.test के साथ स्थापित ipptool (मानक CUPS इंस्टॉल)# writes /etc/sudoers.d/<your-username>-pwn by default
python3 exploit.py
# custom target
CUPS_TARGET=/etc/sudoers.d/youruser-pwn CUPS_ATTACKER=youruser python3 exploit.py
अपने वास्तविक उपयोगकर्ता नाम का उपयोग करने के लिए स्क्रिप्ट में SUDOERS_LINE को संपादित करें — डिफ़ॉल्ट aporter है।
एक्सप्लॉइट 12 बार तक प्रयास करता है। प्रत्येक प्रयास स्थिति को रीसेट करने के लिए प्रिंटर को हटाता और फिर से बनाता है।
केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए।