Angriff auf UNIX-Systeme: Angriffe über CUPS, Teil I
Zusammenfassung
- CVE-2024-47176:
cups-browsed <= 2.0.1 bindet an UDP INADDR_ANY:631 und kann dadurch Get-Printer-Attributes-IPP-Anfragen an eine vom Angreifer kontrollierte URL auslösen
- CVE-2024-47076:
cfGetPrinterAttributes5 in libcupsfilters <= 2.1b1 validiert oder bereinigt die von einem IPP-Server zurückgegebenen IPP-Attribute nicht, sodass vom Angreifer kontrollierte Daten an das CUPS-System übergeben werden können
- CVE-2024-47175:
ppdCreatePPDFromIPP2 in libppd <= 2.1b1 validiert oder bereinigt IPP-Attribute beim Schreiben in eine temporäre PPD-Datei nicht, wodurch vom Angreifer kontrollierte Daten eingeschleust werden können
- CVE-2024-47177:
foomatic-rip in cups-filters <= 2.0.1 erlaubt über den PPD-Parameter FoomaticRIPCommandLine die Ausführung beliebiger Befehle
Auswirkungen
- Ein entfernter, nicht authentifizierter Angreifer kann die IPP-URL eines bestehenden Druckers durch eine bösartige URL ersetzen oder einen neuen Drucker installieren und beim Start eines Druckauftrags beliebige Befehle ausführen
Einstiegspunkte
- WAN / öffentliches Internet: Ein entfernter Angreifer sendet UDP-Pakete an Port 631. Keine Authentifizierung erforderlich
- LAN: Ein lokaler Angreifer kann zeroconf-/mDNS-/DNS-SD-Ankündigungen fälschen und über denselben Codepfad RCE erreichen
Betroffene Systeme
- die meisten GNU/Linux-Distributionen
- einige BSD-Systeme
- Google Chromium / ChromeOS (möglicherweise)
- Oracle Solaris
- weitere
Gegenmaßnahmen
- den Dienst
cups-browsed deaktivieren und entfernen
- die CUPS-Pakete des Systems aktualisieren
- falls das System nicht aktualisiert werden kann, UDP-Port 631 und sämtlichen DNS-SD-Datenverkehr blockieren
Einführung
- Vor einigen Wochen wurde beim Einrichten von Ubuntu auf einem neuen Laptop der Befehl
netstat -anu ausgeführt, um Dienste zu prüfen, die auf UDP-Ports lauschen
- Dabei wurde festgestellt, dass
cups-browsed auf Port 631 per UDP auf allen Netzwerkschnittstellen lauscht und antwortet
cups-browsed dient dazu, neue Drucker automatisch zum System hinzuzufügen
Was ist cups-browsed?
cups-browsed ist Teil des CUPS-Systems, entdeckt neue Drucker und fügt sie automatisch dem System hinzu
- Die Standardkonfigurationsdatei ist auskommentiert und erlaubt Verbindungen von beliebigen Quellen
Stack-Buffer-Overflow und Race Conditions
cups-browsed ist nicht in die Abdeckung von oss-fuzz einbezogen
- In der Funktion
process_browse_data können ein Stack-Buffer-Overflow und Race Conditions auftreten
- Diese Probleme wurden den Entwicklern und CERT gemeldet, sind aber noch nicht gepatcht
Zurück zu found_cups_printer
- Die Funktion
found_cups_printer extrahiert eine URL aus dem Paket und übergibt sie an die Funktion cfGetPrinterAttributes
- Diese URL verbindet zu einem vom Angreifer kontrollierten Server
Internet Printing Protocol (IPP)
- IPP ist ein Protokoll für die Kommunikation zwischen Client-Geräten und Druckern
- Gibt ein Angreifer kontrollierte Druckerattribute zurück, kann so ein Drucker zum System hinzugefügt werden
Zusammenfassung von GN⁺
- Dieser Artikel beschreibt, wie sich Schwachstellen im CUPS-System ausnutzen lassen, um Remote Code Execution zu erreichen
- Es gibt verschiedene mit CUPS verbundene Schwachstellen, durch die ein Angreifer die Kontrolle über ein System übernehmen kann
- Diese Schwachstellen sind noch nicht gepatcht; Nutzer sollten daher den CUPS-Dienst deaktivieren oder Updates einspielen
- Andere Projekte mit ähnlicher Funktion sind
LPRng und neuere Versionen von CUPS
Noch keine Kommentare.