1 Punkte von GN⁺ 2024-09-27 | Noch keine Kommentare. | Auf WhatsApp teilen

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.

Noch keine Kommentare.