Simone Margaritelli, de auteur van de OpenSnitch firewall en de netwerk analyzer bettercap, heeft informatie onthuld over eerder aangekondigde kritieke kwetsbaarheden waarmee op afstand GNU/Linux-, Solaris-, FreeBSD-distributies en enkele andere BSD-systemen kunnen worden aangevallen. De publicatie was oorspronkelijk gepland voor 6 oktober, maar door een informatielek moest de publicatie vervroegd worden, voordat de meeste distributies hun pakketupdates konden voorbereiden. De kwetsbaarheden raken de CUPS afdrukkerserver en maken het mogelijk om op afstand code op het systeem uit te voeren zonder authenticatie.
De onderzoeker die het probleem heeft ontdekt, heeft een werkend prototype van de exploit ontwikkeld, dat gebruikmaakt van een combinatie van verschillende kwetsbaarheden en waarmee op afstand code kan worden uitgevoerd met de rechten van het CUPS printopdrachtverwerkingsproces (meestal de gebruiker 'lp'). De exploit stelt een aanvaller in staat om onopgemerkt de printerinstellingen van de gebruiker te vervangen of een nieuwe printer toe te voegen die is gekoppeld aan de actieve aanvallers IPP-server, die een speciaal opgemaakt PPD-printerbeschrijving aanbiedt. Het verwerken van deze PPD tijdens het opstarten van een afdruktaak leidt ertoe dat de code van de aanvaller wordt uitgevoerd (de slachtoffers moeten de afdruktaak op de vervangende of door de aanvaller gewijzigde printer starten).
Systemen met zijn kwetsbaar voor aanval server CUPS printing en een actieve cups-browsed proces, dat netwerkverbindingen op poort 631 (UDP) accepteert. De aanval kan ook vanuit een lokaal netwerk worden uitgevoerd, waarin protocollen zoals server zeroconf, mDNS of DNS-SD voor afdrukken worden gebruikt. Alleen de configuraties van cups-browsed waarin in het bestand /etc/cups/cups-browsed.conf in de parameter BrowseRemoteProtocols de waarde "cups" is opgegeven, zijn kwetsbaar. In distributies met systemd kan het gebruik van de cups-browsed service worden gecontroleerd met de opdracht "sudo systemctl status cups-browsed".
De kwetsbaarheid manifesteert zich in alle afdruksystemen die zijn gebaseerd op CUPS, waarin kwetsbare versies van de pakketten cups-filters, libcupsfilters, libppd en cups-browsed worden gebruikt. Oplossingen zijn tot nu toe alleen beschikbaar in de vorm van patches (1, 2, 3) ā de actuele versies cups-filters 2.0.1, libcupsfilters 2.1b1, libppd 2.1b1 en cups-browsed 2.0.1 zijn kwetsbaar. In de distributies blijft het probleem onopgelost; updates kunnen worden gevolgd op de volgende pagina's: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Als tijdelijke bescherming kan de toegang tot UDP-poort 631 voor externe netwerken worden geblokkeerd, de service cups-browsed worden uitgeschakeld of kan de instelling BrowseRemoteProtocols op "none" worden gezet totdat de update is geĆÆnstalleerd.
GeĆÆdentificeerde kwetsbaarheden:
- CVE-2024-47176 ā een kwetsbaarheid in het proces cups-browsed, dat een netwerk-socket creĆ«ert die verbindingen op poort 631 accepteert, gekoppeld aan alle beschikbare netwerkinterfaces in het systeem en IPP-verzoeken "Get-Printer-Attributes" van externe systemen accepteert. Door manipulatie van deze service kan een door de aanvaller gecontroleerde printer aan het systeem worden toegevoegd en kan deze worden geĆ«xploiteerd door de PPD-configuratie door te geven van kwetsbaarheden in andere CUPS-componenten.
- CVE-2024-47177 ā een kwetsbaarheid in de foomatic-rip handler van de cups-filters, die het mogelijk maakt om code uit te voeren door de FoomaticRIPCommandLine-parameter in het PPD-bestand door te geven, welke de aanvaller kan verstrekken door middel van de hierboven beschreven kwetsbaarheid in cups-browsed. De in de FoomaticRIPCommandLine-parameter opgegeven shell-commando's worden letterlijk uitgevoerd, zonder rekening te houden met de mogelijkheid dat de parameter door een buitenstaander kan worden ingesteld. Bijvoorbeeld, om naar het bestand /tmp/VULNERABLE te schrijven, kan "FoomaticRIPCommandLine: "echo 1 > /tmp/VULNERABLE" worden opgegeven.
- CVE-2024-47175 ā een kwetsbaarheid in libppd, veroorzaakt door het ontbreken van controle op de geldigheid van de waarde ppdCreatePPDFromIPP2 bij het schrijven van IPP-kenmerken naar een tijdelijk PPD-bestand. Het probleem stelt een aanvaller in staat om willekeurige gegevens in het resulterende PPD-bestand te injecteren door kenmerken bij te voegen met behulp van het regelovergangsymbool. Bijvoorbeeld, de controle kan worden omzeild en samen met toegestane kenmerken kan de FoomaticRIPCommandLine-parameter worden toegevoegd om de hierboven genoemde kwetsbaarheid in cups-filters te exploiteren.
- CVE-2024-47076 - kwetsbaarheid in de libcupsfilters bibliotheek van het cups-filters pakket, gerelateerd aan het ontbreken van controle op de waarden cfGetPrinterAttributes5 die door een externe IPP-server worden geretourneerd, wat een aanvaller in staat stelt om willekeurige IPP-attributen in andere CUPS-subsystemen te verwerken, bijvoorbeeld bij het genereren van PPD-bestanden.
Het aanvalsscenario op CUPS bestaat uit de volgende stappen:
- Het opzetten van een eigen IPP-server door de aanvaller.
- Het verzenden van een UDP-pakket naar het slachtoffer met een link naar de printer die is gekoppeld aan de door de aanvaller draaiende IPP-server.
- Na ontvangst van dit pakket maakt het systeem van het slachtoffer verbinding met de IPP-server van de aanvaller en vraagt het printerattributen op.
- In antwoord op het verzoek van het slachtoffer retourneert de IPP-server van de aanvaller een PPD-bestand met attributen, waaronder het attribuut FoomaticRIPCommandLine. Dit attribuut wordt gekoppeld aan een van de geldige attributen, met behulp van het teken '\n' in ƩƩn regel (bijvoorbeeld, 'cupsPrivacyURI: "https://www.google.com/\n*FoomaticRIPCommandLine: "'), wat het mogelijk maakt om de controle te omzeilen en leidt tot de registratie van FoomaticRIPCommandLine als een afzonderlijk attribuut tijdens het opslaan van de verkregen gegevens in een tijdelijk bestand.
- Als gevolg van de verwerking van de verzonden attributen in het systeem van het slachtoffer wordt een PPD-bestand aangemaakt: ... *cupsSNMPSupplies: False *cupsLanguages: "en" *cupsPrivacyURI: "https://www.google.com/" *FoomaticRIPCommandLine: "echo 1 > /tmp/I_AM_VULNERABLE" *cupsFilter2: "application/pdf application/vnd.cups-postscript 0 foomatic-rip" *cupsSingleFile: True *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -" ...
- Bij het afdrukken naar de door de aanvaller geĆÆnstalleerde printer op het systeem van het slachtoffer zal het commando "echo 1 > /tmp/I_AM_VULNERABLE" worden uitgevoerd.
De onderzoeker die de kwetsbaarheden heeft ontdekt, merkt op dat hij enkele dagen nodig had voor het vinden van de kwetsbaarheid, maar daarna volgde een langdurige correspondentie van 22 dagen met de ontwikkelaars van het OpenPrinting-project, in een poging hen te overtuigen van de ernst van het probleem en de noodzaak om patches voor te bereiden. De discussie verzandde in debatten over de vraag of de gesignaleerde problemen überhaupt moesten worden opgelost, en de situatie kon pas worden omgebogen na het creëren van enige publieke opschudding over het ontdekken van het kritieke probleem. Het is ook interessant om te zien dat gevoelige informatie, verstrekt aan CERT, waaronder een vertrouwelijk rapport en exploit, openbaar is verschenen op het forum breachforums.st, ondanks het opgelegde embargo op de openbaarmaking van informatie.
Bron: opennet.ru
