
CUPS 2.4.16 Lokale Rechteausweitung über lokales Admin-Token-Leck und file:// beliebiges Dateischreiben (CVE-2026-34990)
CUPS 2.4.16 enthält eine Schwachstelle zur lokalen Rechteausweitung (ebenfalls erfasst als GHSA-c54j-2vqw-wpwp).
Weltweit beschreibbarer Socket — /run/cups/cups.sock ist weltweit
beschreibbar, wodurch jeder lokale Benutzer IPP-Anfragen an den
CUPS-Daemon (der als root läuft) senden kann.
Lokales Token-Leck — CUPS-Create-Local-Printer kann missbraucht
werden, um das Local-Autorisierungstoken preiszugeben, indem
device-uri auf einen vom Angreifer kontrollierten IPP-Server
gerichtet wird.
Beliebiges Schreiben von Dateien — Mit dem erbeuteten Token kann ein
Angreifer einen Drucker mit device-uri=file:///etc/sudoers.d/<user>
erstellen, wodurch CUPS (als root) beliebige Inhalte an jeden Pfad auf
der Festplatte schreiben kann.
# Basic usage
python3 cups_pwn.py --user lowpriv
# Custom sudoers path
python3 cups_pwn.py --user lowpriv --sudoers /etc/sudoers.d/custom
# After success
sudo -i
🧠 Funktionsweise
text
┌─────────────────────────────────────────────────────────────────┐
│ 1. Start fake IPP server on 127.0.0.1:9189 │
│ 2. Send CUPS-Create-Local-Printer with device-uri=ipp://... │
│ 3. CUPS connects to our fake server → sends Local token │
│ 4. Extract the token │
│ 5. Create printer with device-uri=file:///etc/sudoers.d/... │
│ 6. Print gzip payload with "user ALL=(ALL) NOPASSWD: ALL" │
│ 7. CUPS writes the payload as root │
│ 8. sudo -n id → root │
└─────────────────────────────────────────────────────────────────┘
🛡️ Haftungsausschluss
Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und
Schulungszwecke bereitgestellt. Verwenden Sie es nicht gegen Systeme, die
Ihnen nicht gehören oder für die Sie keine ausdrückliche Genehmigung zum
Testen haben. Der Autor ist nicht verantwortlich für jeglichen Missbrauch
oder Schaden, der durch dieses Tool verursacht wird.
📚 Referenzen
GHSA-c54j-2vqw-wpwp
CVE-2026-34990
CUPS Security Advisories
📄 Lizenz
MIT — siehe LICENSE-Datei.
text
### Ficheiro 3: `LICENSE`
```bash
nano LICENSE