CUPS-kwetsbaarheden maken uitvoer van externe code mogelijk op Linux, maar er is een addertje onder het gras

Onder bepaalde omstandigheden kunnen aanvallers een reeks kwetsbaarheden in meerdere componenten van het open-source printf systeem CUPS combineren om willekeurige code op afstand uit te voeren op kwetsbare machines.

Bijgehouden als CVE-2024-47076 (libcupsfilters), CVE-2024-47175 (libppd), CVE-2024-47176 (cups-browsed) en CVE-2024-47177 (cups-filters) en ontdekt door Simone Margaritelli, hebben deze beveiligingsfouten geen invloed op systemen in hun standaardconfiguratie.

CUPS (afkorting van Common UNIX Printing System) is het meest gebruikte printf systeem op Linux-systemen, en het wordt ook algemeen ondersteund op apparaten met Unix-achtige besturingssystemen zoals FreeBSD, NetBSD en OpenBSD en hun afgeleiden.

Een van de componenten is de cups-browsed daemon, die het lokale netwerk doorzoekt naar geadverteerde netwerk- of gedeelde printers en deze beschikbaar maakt om af te drukken op de machine. Dit is vergelijkbaar met hoe Windows en Macs het netwerk kunnen doorzoeken naar externe netwerkprinters om naar te printen.

Margaritelli ontdekte dat als de cups-browsed daemon is ingeschakeld, wat niet bij de meeste systemen het geval is, het luistert naar UDP-poort 631. Het zal ook standaard externe verbindingen van elk apparaat in het netwerk toestaan om een nieuwe printer te maken.

Hij ontdekte dat hij een kwaadaardige PostScript Printer Description (PPD) printer kon maken die handmatig geadverteerd kon worden naar een blootgestelde cups-browsed service die draait op UDP-poort 631.

Dit zorgt ervoor dat de externe machine automatisch de kwaadaardige printer installeert en deze beschikbaar maakt voor afdrukken. Als de gebruiker op die blootgestelde server naar de nieuwe printer print, wordt de kwaadaardige opdracht in de PPD lokaal op de computer uitgevoerd.

De opdracht om uit te voeren bij het afdrukken wordt toegevoegd via een foomatic-rip filter, dat opdrachten op een apparaat uitvoert zodat een printf opdracht correct wordt uitgevoerd.

Commands added using the foomatic-rip filter
Opdrachten toegevoegd met behulp van het foomatic-rip filter (Simone Margaritelli)

Beperkte wereldwijde impact

Hoewel dit een keten voor uitvoerbare code op afstand is, moet vanaf het begin worden opgemerkt dat aanvallers enkele obstakels moeten overwinnen om de kwetsbaarheden te exploiteren en daadwerkelijk code op afstand uit te voeren.

De eerste is dat de doelgerichte systemen de cups-browsed daemon moeten hebben ingeschakeld, die meestal niet standaard is ingeschakeld, om hun UDP-poorten op een netwerk bloot te leggen. Vervolgens moet de aanvaller een gebruiker misleiden om af te drukken vanaf een kwaadaardig printerserver op hun lokale netwerk die plotseling op hun machine verschijnt.

“Het is een keten van bugs die afhankelijk zijn van het spoofen van een printer in je lokale netwerk die automatisch wordt toegevoegd via netwerkontdekking als het überhaupt is ingeschakeld – meestal niet in de standaardconfiguratie. Dan is er een niet-geverifieerde variabele die wordt gebruikt om andere kwetsbaarheden in het CUPS-systeem te misbruiken om code uit te voeren, maar alleen wanneer een printf opdracht wordt geactiveerd,” zei Ilkka Turunen, Field CTO bij Sonatype.

“Goed nieuws dan – het is een RCE maar met verschillende mitigaties, inclusief het feit dat de aanvaller in staat moet zijn om via UDP verbinding te maken met een computer die op netwerkinvoer breed is uitgeschakeld en de service is meestal niet standaard ingeschakeld. Het lijkt erop dat de werkelijke impact laag is.”

Om deze redenen heeft Red Hat de fouten beoordeeld als “Belangrijk” in termen van ernst in plaats van kritiek.

Hoewel uit tests van BleepingComputer bleek dat de meeste van onze Linux-servers de service niet standaard hadden ingeschakeld, had een van onze Ubuntu-VM’s dit wel. Anderen merkten ook op Twitter op dat cups-browsed standaard was ingeschakeld op hun Linux-apparaten.

Geen patches, maar er zijn mitigerende maatregelen beschikbaar

Hoewel patches nog in ontwikkeling zijn, deelde Red Hat mitigerende maatregelen die van beheerders vereisen om te stoppen met het uitvoeren van de cups-browsed service en te voorkomen dat deze wordt gestart bij een herstart met behulp van de volgende commando’s om de exploitatie keten te doorbreken:


sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed

Red Hat-gebruikers kunnen ook de volgende opdracht gebruiken om te weten te komen of cups-browsed op hun systemen draait:


sudo systemctl status cups-browsed

Als het resultaat “Active: inactive (dead)” aangeeft, dan is de exploitatie keten onderbroken en is het systeem niet kwetsbaar. Als het resultaat “running” of “enabled” aangeeft, en de directive “BrowseRemoteProtocols” de waarde “cups” bevat in het configuratiebestand /etc/cups/cups-browsed.conf, dan is het systeem kwetsbaar.

---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
Opzoek naar de laatste updates uit onze securitylog?
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----