Kritische Linux-RCE in CUPS – Was wir wissen und wie Sie sich vorbereiten können
Zusammenfassung
Eine kritische REC-Schwachstellenkette (Remote Code Execution), die vermutlich viele Unix-ähnliche Hosts betrifft, wurde am 26. September 2024 aufgedeckt .
Das Common Unix Printing System (CUPS) ist eine besonders anfällige Komponente, insbesondere cups-browsed.
Für eine erfolgreiche Ausnutzung ist eine Kette von vier Schwachstellen erforderlich: CVE-2024-47176, CVE-2024-47076, CVE-2024-47175 und CVE-2024-47177.
In diesem Blogbeitrag stellt Akamai Details zur Schwachstelle bereit, analysiert die technische Offenlegung und gibt Empfehlungen dazu, wie sich Unternehmen effektiv auf die Risiken vorbereiten und diese minimieren können, während sie auf einen Patch warten.
Einführung
Am 23. September 2024 hat Sicherheitsforscher Simone Margaritelli über Social Media Details zu einer bevorstehenden Offenlegung von Schwachstellen geteilt. In seinem Beitrag beschrieb Margaritelli eine kritische Schwachstelle, die er den Entwicklern drei Wochen zuvor offengelegt hatte – eine nicht authentifizierte RCE-Schwachstelle, die potenziell alle GNU-/Linux-Rechner betreffen kann.
Am 26. September 2024 wurde eine vollständige technische Offenlegung veröffentlicht. Insgesamt gibt es vier Schwachstellen:
CVE-2024-47176 in cups-browsed, die eine Anfrage an eine von einem Angreifer kontrollierten Adresse auslöst
CVE-2024-47076 in libcupsfilters, die die vom Server des Angreifers zurückgegebenen Daten weder validiert noch bereinigt, sondern direkt an den Rest des CUPS-Systems weiterleitet
CVE-2024-47175 in libppd, wobei Eingaben erneut nicht bereinigt, sondern in eine temporäre Datei geschrieben werden
CVE-2024-47177 in cups-filters, die die Ausführung eines willkürlichen Befehls ermöglicht
Unser Ziel mit diesem Blogbeitrag ist es, Unternehmen bei der Vorbereitung zu unterstützen, damit der Behebungsprozess so reibungslos wie möglich läuft. Zu diesem Zweck bieten wir eine technische Zusammenfassung der Angriffskette und einige Schritte zur Risikominderung (in Form von Segmentierungsempfehlungen), die Netzwerkadministratoren anwenden können, während sie auf den Patch warten.
Wie kann man sich vorbereiten?
Damit ein Angreifer eine RCE-Schwachstelle ausnutzen kann, sind zwei Elemente erforderlich: eine anfällige Software und (natürlich) Remotezugriff. Da wir wissen, dass die anfällige Komponente CUPS ist, können wir sie einfach patchen (sobald der Patch verfügbar wird) oder einige Schritte zur Schadensbegrenzung speziell für diese Komponente anwenden. Wir sind jedoch der Ansicht, dass die beste Vorgehensweise darin besteht, diese Gelegenheit zu nutzen, um das Thema Remote-Zugriff breiter anzugehen.
Beginnen wir jedoch mit dem dringenderen Problem.
CUPoious-Schwachstellen und potenzielle Exploits
Gegenstand unseres Gesprächs, also die anfällige Komponente, ist CUPS, ein Dienst, über den ein Computer als Druckserver fungieren kann. Er ist sehr beliebt und findet sich auf einer Vielzahl von Unix-ähnlichen Computern.
Dieser Dienst ist weit verbreitet und ist sicherlich ein lohnenswertes Angriffsziel, da er von Natur aus mit anderen Rechnern (und möglicherweise dem Internet) in Kontakt steht. Frühere Schwachstellen in Druckdiensten, wie z. B. CVE-2021-34527 (PrintNightmare) oder sogar CVE-2010-2729 haben die möglichen Auswirkungen dieses Angriffsvektors demonstriert.
Schon vor der „offiziellen“ Offenlegung haben wir angenommen, dass CUPS die anfällige Komponente ist. Bei der Inspektion von Margaritellis GitHub-Kontosind wir auf ein interessantes Detail gestoßen: einen Fork des Apple-CUPS-Repositorys vom 17. September 2024 – ein paar Tag e vor Margaritellis erstem Beitrag (Abbildung 1).
Es gibt auch ein Problem auf dem cups-browsed -GitHub, in dem Margaritelli (@evilsocket) zitiert wird und das wahrscheinlich eine Nachwirkung der Hauptschwachstelle ist. (Es gibt dort auch einige interessante Kommentare, also bringen Sie Popcorn mit. )
Exploit-Analyse
Der Angriff ist nicht besonders komplex, erfordert aber zur erfolgreichen Ausführung mehrere Schritte. Abbildung 2 zeigt unsere Zusammenfassung des Prozesses; wir empfehlen Ihnen jedoch, den vollständigen Offenlegungs-Blogbeitrag zu lesen, der eine ausführlichere Erklärung enthält.
Schritt 1: Zuerst hört der cups-browsed-Daemon UDP-Verbindungen ab, die an Port 631 eingehen. Der Zweck besteht darin, erkannte Drucker zum System hinzuzufügen. Ein Angreifer, der mit dem Daemon kommuniziert, kann den Computer des Opfers zwingen, eine schädliche Adresse als legitimen Drucker zu registrieren; das ist CVE-2024-47176.
Schritt 2: Der nächste Teil geschieht bei der Registrierung des schädlichen „Druckers“. Im Rahmen der Registrierung sendet libcupsfilters eine ausgehende Anfrage an den Angreifer, der dann Druckerattribute über das Internet Printing Protocol (IPP) anfordert. Als Teil dieser Attribute können Drucker spezifische PPD-Dateien ( PostScript Printer Description ) definieren, die bei Verwendung die Funktionen des Druckers auf legitime Weise definieren. Dies wird dann in eine PPD-Datei geschrieben – ungefiltert und unbegrenzt. Das sind CVE-2024-47076 und CVE-2024-47175.
Wir verfügen jetzt also über eine schädliche PPD-Datei. Aber wie führen wir damit Befehle aus?
Schritt 3: Hier kommt die cupsFilter2-Anweisung in der PPD ins Spiel, die verschiedene Filter (ausführbare Dateien) ausführt, wenn ein neuer Druckauftrag erstellt wird. Wir verwenden die Filteranweisung, um den Filter foomatic-rip auszuführen, der für eine willkürliche Befehlsinjektion anfällig ist. Das ist CVE-2024-47177.
Ein genaueres Bild
Mithilfe von Shodan konnten wir erkennen, dass bei etwa 75.000 Rechnern weltweit CUPS über das Internet zugänglich ist; in den meisten Fällen wird der Standardport 631 verwendet (Abbildung 3).
Der folgende Filter kann dazu verwendet werden, Shodan für die Suche nach exponierten CUPS-Servern zu verwenden:
product:"CUPS (IPP)"
Zusätzliche Einblicke
Mithilfe der einzigartigen Traffic-Einblicke von Akamai konnten wir feststellen, dass der CUPS-Dienst auf einer Vielzahl von Plattformen läuft, darunter Ubuntu, macOS, CentOS, Debian, Fedora, OpenShift, Oracle Linux Server, Red Hat, Rocky Linux, SUSE, openSUSE, AlmaLinux, Amazon Linux und weitere.
Bei insgesamt 10,1 % der Linux-Rechner im Akamai-Ökosystem ist Port 631 (der CUPS-Port) offen. Allerdings empfangen nur 3 % dieser Rechner regelmäßig externen Datenverkehr über diesen Port.
Auch wenn diese Zahlen darauf hindeuten, dass der Dienst nicht häufig extern zugänglich ist, ist es für Unternehmen dennoch wichtig, ihre eigene Anfälligkeit zu bewerten und ihre Sicherheitsrichtlinien entsprechend zu überprüfen.
Analyse des Internet-Traffics
Eine der häufigsten Methoden für Angreifer, um Unternehmen zu schädigen, ist die Nutzung von Diensten, die über das Internet zugänglich sind. CUPS ist nur ein Beispiel für einen solchen Service, aber das Problem endet offensichtlich nicht damit. Auch hier haben wir die Traffic-Erkenntnisse von Akamai genutzt, um den Gefährdungsstatus verschiedener Dienste in Tausenden von Unternehmen zu bewerten.
Laut den Daten von Akamai sind ca. 5,4 % der Linux-Rechner über das Internet zugänglich und empfangen eingehenden Datenverkehr von externen Quellen (Abbildung 4).
Bei der Überprüfung von Netzwerkrichtlinien, die sich auf diesen Traffic auswirken, haben wir festgestellt, dass 19,3 % dieser Geräte standardmäßig eingehenden Internet-Traffic erlauben – das heißt, dass keine spezifischen Netzwerkrichtlinien vorhanden sind, um den Fluss des eingehenden Traffics einzuschränken oder zu kontrollieren.
Da die exponierten Dienste leicht zu einem Angriffsvektor werden können, ist es für Unternehmen von entscheidender Bedeutung, ihre Zugriffskontrollen zu überprüfen und zu verschärfen.
Empfehlungen
Da die Schwachstelle noch nicht öffentlich ist und es keinen Patching-Zeitplan gibt, ist die beste Möglichkeit, sich auf diese Offenlegung vorzubereiten, alle Anfälligkeiten in Ihrem Netzwerk aufzudecken – beispielsweise mit einer Liste aller Linux-Rechner, deren Internetnutzung oder sogar deren Verwendung von CUPS. Anschließend sollten Sie dasselbe mit Ihren Segmentierungsrichtlinien tun.
Nachdem Sie eine Übersicht erstellt haben, empfehlen wir die Anwendung von Segmentierungsrichtlinien, um die Reichweite möglicher Angriffe einzuschränken. Das ist unabhängig von der aktuellen Situation eine gute Praxis, da laterale Netzwerkbewegung in Linux nicht auf SSH oder RCE beschränkt ist.
Ermittlung der CUPS-Verwendung in Ihrem Unternehmen
Um festzustellen, ob CUPS auf Ihren Rechnern läuft, können Sie nach Dienst- und Prozessnamen suchen. Laut unseren Beobachtungen, die eine Vielzahl von Unix-Systemen und -Distributionen umfassen, können die folgenden Prozesse auf den Einsatz von CUPS hinweisen:
cups-browsed (der betroffene Prozess)
cupsd
cancel.cups
lpq.cups
cupsfilter
lpc.cups
lp.cups
cupsaccept
cups-lpd
lpstat.cups
lpr.cups
cupsctl
Unternehmen, die osquery einsetzen, können die folgenden Abfragen verwenden, um potenzielle CUPS-Anwendungen auf ihren Systemen zu identifizieren (Kunden mit Akamai Guardicore Segmentation können diese Abfragen über die Insight-Funktion ausführen).
Finden Sie Geräte, die Port 631 abhören:
SELECT pid, port, protocol, family, address, path
FROM listening_ports
WHERE port = 631
Erkennen Sie laufende Prozesse, die mit CUPS in Verbindung stehen könnten:
SELECT name, parent, cwd, cmdline, pid, start_time, path
FROM processes
WHERE path LIKE '%cups%'
Aufdecken der Internetverbindung
Sie können Scandienste wie Shodan verwenden, um Dienste zu identifizieren, die über das Internet zugänglich sind, einschließlich CUPS.
Kunden mit Akamai Guardicore Segmentation können den Internetverbindungsfilter auf der Registerkarte „Reveal“ (Aufdecken) verwenden, um all ihre Dienste und Rechner zu visualisieren, die Traffic aus dem Internet empfangen (Abbildung 5).
Mit Segmentierung Reichweite einschränken
Bedenken Sie folgendes Szenario: Die Schwachstelle wird aufgedeckt; sie ist nicht das, was wir erwartet haben oder worauf wir vorbereitet waren; jemand erstellt einen funktionierenden Exploit und ein Cyberkrimineller nutzt ihn, um in Ihr Netzwerk einzudringen.
Und was dann? Kann der Angreifer einfach auf den Domaincontroller zugreifen, das gesamte Netzwerk infizieren, seine Botnets, Cryptominer, Ransomware oder Trojaner installieren und unentdeckt entkommen? Oder muss er sich stärker anstrengen, komplexe Aufklärungsscans durchführen, mehrere laterale Netzwerkbewegungen durchführen und generell proaktiv vorgehen – was Ihnen die Möglichkeit geben würde, den Angriff zu entdecken und darauf zu reagieren?
Es kommt immer wieder zu Angriffen und genau deshalb ist die Segmentierung so wichtig. Wenn es heute nicht diese RCE ist, dann ist es morgen ein anderer Zero-Day -Angriff. Flache Netzwerke sind leichte Ziele. Doch wenn wir den Angreifern das Leben schwer machen, geben sie vielleicht auf (und suchen sich einfachere Ziele). Oder wir zwingen sie dazu, genug Zeit zu investieren und genug Aktionen durchzuführen, um Fehler zu machen und entdeckt zu werden.
Gesteigerte Sicherheit in 2 Schritten
Es gibt zwei relativ einfache Schritte, die Ihre Sicherheit enorm steigern können: die Implementierung einer DMZ und die Segmentierung Ihrer Anwendungsserver.
Einrichtung einer DMZ: Server, die über das Internet verfügbar sind, sind von Natur aus mit einem höheren Risiko behaftet. Deshalb sollten sie keinen vollständigen Zugang zum restlichen Netzwerk haben. Die Implementierung einer DMZ für diese Server, die sicherstellt, dass die Server nicht auf die sensibleren Teile des Netzwerks zugreifen können, macht Angreifern das Leben sehr viel schwerer.
Segmentierung von Anwendungsservern: In der Regel ist es möglich, ähnliche Anwendungsserver gemeinsam zu segmentieren und ihren ein- und ausgehenden Traffic auf Grundlage ihrer Anwendungslogik zu beschränken.
Nehmen wir zum Beispiel den CUPS-Server: Wir kennen seinen Port (UDP 631), seinen Prozess (cupsd) und wir wissen, dass er technisch gesehen nur Traffic zu den tatsächlichen Druckern erzeugen sollte. Auf dieser Grundlage können wir ein Anwendungssegment für diese CUPS-Server erstellen, das bestimmten eingehenden Traffic zulässt, aber den meisten Traffic blockiert.
Auf diese Weise kann ein Angreifer, der CUPS erfolgreich ausnutzt, um in den Server einzudringen, nur auf den Drucker zugreifen – und ein „böswilliger Druckauftrag“ ist keine sonderlich beängstigende Bedrohung.
Mehr erfahren
Es gibt noch weitere Lösungen, die ein Unternehmen durch Segmentierung schnell und erfolgversprechend anwenden kann, um seine Sicherheit zu erhöhen. Weitere Informationen finden Sie in unserem Blogbeitrag zu praktischer Segmentierung.