Een nieuwe gevaarlijke Linux-kwetsbaarheid ligt op de loer in niet-gepatchte distributies. Genaamd Dirty Pipe en gevolgd als CVE-2022-0847, de kwetsbaarheid bevindt zich in de kernel (sinds versie 5.8), het creëren van de mogelijkheid voor dreigingsactoren om willekeurige gegevens te overschrijven in alle read-online bestanden.
Dit zou dan een volledige overname van blootgestelde systemen mogelijk kunnen maken. Onderzoeker Max Kellermann zegt dat Dirty Pipe vergelijkbaar is met: de Dirty Cow-fout, onthuld in 2016, maar gemakkelijker te exploiteren. CVE-2016-5195, ook bekend als Dirty Cow and Kernel Local Privilege Escalation, werd gevonden in elke Linux-distributie die de afgelopen negen jaar is uitgebracht, tot 2016.
Hoe was vuile pijp? (CVE-2022-0847) ontdekt?
Zo vertelt Max Kellermann het verhaal:
Het begon allemaal een jaar geleden met een supportticket over corrupte bestanden. Een klant klaagde dat de toegangslogboeken die ze hadden gedownload niet konden worden gedecomprimeerd. En inderdaad, er was een beschadigd logbestand op een van de logservers; het kan worden gedecomprimeerd, maar gzip rapporteerde een CRC-fout. Ik kon niet uitleggen waarom het corrupt was, maar ik nam aan dat het nachtelijke splitsingsproces was gecrasht en een beschadigd bestand had achtergelaten. Ik heb de CRC van het bestand handmatig hersteld, sloot het ticket, en al snel het probleem vergeten.
De situatie bleef zich keer op keer voordoen. Elke keer dat het gebeurde, de inhoud van het bestand lijkt correct, met alleen de CRC aan het einde van het bestand verkeerd. Door verschillende corrupte bestanden bij de hand te hebben, kon de onderzoeker dieper analyseren, en zo een verrassend patroon van corruptie ontdekken.
tenslotte, ontdekte hij een fout "in de manier waarop de 'vlaggen'’ lid van de nieuwe pijpbufferstructuur ontbrak de juiste initialisatie in copy_page_to_iter_pipe en push_pipe-functies in de Linux-kernel en zou dus oude waarden kunnen bevatten,” zoals samengevat door Red Hat-onderzoekers in een afzonderlijk advies.
Dientengevolge, een niet-bevoorrechte lokale gebruiker zou de fout kunnen misbruiken om naar pagina's in de paginacache te schrijven die worden ondersteund door alleen-lezen bestanden, een escalatievoorwaarde voor bevoegdheden maken. De naam, vuile pijp, komt voort uit pijpleiding, wat in Unix-achtige computerbesturingssystemen een mechanisme is voor communicatie tussen processen via het doorgeven van berichten. In die zin, een pijplijn is een reeks processen die aan elkaar zijn geketend door hun standaardstromen, zodat de uitvoertekst van elk proces (stout) wordt direct als invoer doorgegeven (standaard) naar de volgende, volgens Wikipedia. https://nl.wikipedia.org/wiki/Pipeline_(Unix)
Hoe kan misbruik worden gemaakt van de Dirty Pipe-kwetsbaarheid??
Kellermann zegt dat het exploiteren van de CVE-2022-0847-fout de volgende stappen vereist::
1.Maak een pijp.
2.Vul de pijp met willekeurige gegevens (om de PIPE_BUF_FLAG_CAN_MERGE-vlag in alle ringvermeldingen in te stellen).
3.Laat de pijp leeglopen (de vlag laten staan in alle struct pipe_buffer-instanties op de struct pipe_inode_inforing).
4.Gegevens uit het doelbestand splitsen (geopend met O_RDONLY) in de pijp van net voor de doeloffset.
5.Schrijf willekeurige gegevens in de pijp; deze gegevens zullen de gecachte bestandspagina overschrijven in plaats van een nieuwe anomyous struct pipe_buffer te maken omdat PIPE_BUF_FLAG_CAN_MERGE is ingesteld.
Deze uitbuiting werkt ook met onveranderlijke bestanden op alleen-lezen btrfs-snapshots en op alleen-lezen koppelingen (inclusief CD-ROM mounts). “Dat komt omdat de paginacache altijd beschrijfbaar is (door de kernel), en schrijven naar een pijp controleert nooit de rechten,” voegde Kellermann toe.
De onderzoeker ook gemaakt en gedeeld zijn proof-of-concept code.
De kwetsbaarheid is al gepatcht in Linux-versies 5.16.11, 5.15.25, en 5.10.102. Google heeft ook vrijgelaten fixes voor de Android-kernel in februari 24, 2022.
Het is opmerkelijk dat gisteren, Maart 7, we schreven over nog een ernstig probleem met de Linux-kernel, die kunnen zijn misbruikt om uit een container te ontsnappen om willekeurige opdrachten op de host uit te voeren. De kwetsbaarheid wordt bijgehouden als CVE-2022-0492, en werd gedetailleerd door Palo Alto Unit 42 Netwerkonderzoekers.