Dirty Frag-kwetsbaarheden, die de paginacache wijzigen om root-rechten te verkrijgen in elke Linux-distributie

In de Linux-kernel zijn twee kwetsbaarheden ontdekt die wezenlijk vergelijkbaar zijn met de onlangs onthulde Copy Fail-kwetsbaarheid, maar zich manifesteren in andere subsystemen — xfrm-ESP en RxRPC. De reeks kwetsbaarheden heeft de codenaam Dirty Frag gekregen (soms ook wel Copy Fail 2 genoemd). Deze kwetsbaarheden stellen een niet-geprivilegieerde gebruiker in staat om root-rechten te verkrijgen door gegevens van een proces in de pagina-cache te overschrijven. Er is een exploit beschikbaar die werkt op alle actuele Linux-distributies. Informatie over de kwetsbaarheid is onthuld voordat er patches werden gepubliceerd, maar er is een omweg beschikbaar om het probleem te blokkeren.

Dirty Frag omvat twee verschillende kwetsbaarheden: de eerste in de xfrm-ESP-module, die wordt gebruikt om versleutelingsoperaties in IPsec te versnellen met het ESP (Encapsulating Security Payload) protocol, en de tweede in de RxRPC-driver, die een familie van AF_RXRPC-sockets en de gelijknamige RPC-protocol implementeert, die bovenop UDP werkt. Elke kwetsbaarheid afzonderlijk maakt het mogelijk om root-rechten te verkrijgen. De kwetsbaarheid in xfrm-ESP heeft zich in de Linux-kernel gemanifesteerd sinds januari 2017, terwijl de kwetsbaarheid in RxRPC sinds juni 2023 bestaat. Beide problemen zijn veroorzaakt door optimalisaties die directe schrijfbewerking in de pagina-cache mogelijk maken.

Om de kwetsbaarheid in xfrm-ESP te exploiteren, moet de gebruiker rechten hebben om namespaces te maken, en voor de kwetsbaarheid in RxRPC moet het mogelijk zijn om de kernelmodule rxrpc.ko te laden. Bijvoorbeeld, in Ubuntu is het voor een niet-bevoorrechte gebruiker verboden om namespaces te maken volgens de AppArmor-regels, maar de rxrpc.ko-module wordt standaard geladen. In sommige distributies is de rxrpc.ko-module niet aanwezig, maar wordt het maken van namespaces niet geblokkeerd. De onderzoeker die het probleem heeft ontdekt, heeft een gecombineerde exploit ontwikkeld die het mogelijk maakt om het systeem via beide kwetsbaarheden aan te vallen, waardoor het probleem in alle belangrijke distributies kan worden geƫxploiteerd. De werking van de exploit is bevestigd in Ubuntu 24.04.4 met kernel 6.17.0-23, RHEL 10.1 met kernel 6.12.0-124.49.1, openSUSE Tumbleweed met kernel 7.0.2-1, CentOS Stream 10 met kernel 6.12.0-224, AlmaLinux 10 met kernel 6.12.0-124.52.3 en Fedora 44 met kernel 6.19.14-300.

Zoals bij de Copy Fail-kwetsbaarheid, worden de problemen in xfrm-ESP en RxRPC veroorzaakt door het uitvoeren van gegevensdecryptie ter plaatse met behulp van de splice()-functie, die gegevens tussen bestandshandvaten en pijpen (pipe) doorgeeft zonder te kopiƫren, door referenties op elementen in de paginacache door te geven. De offsets voor de schrijfoperatie werden berekend zonder de juiste controles die rekening houden met het gebruik van directe referenties naar elementen in de paginacache, wat het mogelijk maakte om 4 bytes op de gekozen offset te overschrijven door speciaal gevormde verzoeken te versturen en de inhoud van elk bestand in de paginacache te wijzigen.

Alle leesoperaties van bestanden geven in eerste instantie de inhoud uit de paginacache terug. In het geval van wijzigingen in de gegevens in de paginacache zullen leesoperaties van het bestand resulteren in het teruggeven van niet werkelijk op de opslag opgeslagen informatie, maar in plaats daarvan vervangende gegevens. Het misbruik van de kwetsbaarheid omvat het wijzigen van de paginacache voor een uitvoerbaar bestand met de suid root-vlag. Bijvoorbeeld, om root-rechten te krijgen, kan het uitvoerbare bestand /usr/bin/su worden gelezen om het in de paginacache te plaatsen, waarna men kan proberen zijn eigen code in de in de paginacache geladen inhoud van dat bestand te injecteren. Het volgende uitvoeren van de 'su'-utility zal ervoor zorgen dat een gewijzigde kopie uit de paginacache in het geheugen wordt geladen in plaats van het originele uitvoerbare bestand van de opslag.

De onthulling van informatie over kwetsbaarheden en de gecoördineerde release van updates om de problemen op te lossen was gepland voor 12 mei, maar vanwege de informatielekkage moest de informatie over de kwetsbaarheid eerder worden gepubliceerd dan de correcties. Eind april werden er patches voor rxrpc, ipsec en xfrm gepubliceerd op de openbare netdev mailinglijst, zonder te vermelden dat ze verband hielden met het verhelpen van de kwetsbaarheid. Op 5 mei accepteerde de maintainer van de IPsec-subsystemen een wijziging met het voorgestelde herstel voor de module xfrm-esp in de git-repository netdev, waarvan de beschrijving in grote lijnen herhaalde wat het probleem was dat leidde tot de Copy Fail-kwetsbaarheid in de algif_aead-module. Een van de beveiligingsonderzoekers raakte geïnteresseerd in deze correctie, slaagde erin een werkende exploit te creëren en publiceerde deze, niet wetende dat er een embargo was opgelegd op het onthullen van informatie over het probleem tot 12 mei.

Updates met bugfixes voor de Linux-kernel en kernelpakketten zijn nog niet gepubliceerd in de distributies, maar er zijn probleemoplossende patches beschikbaar — xfrm-esp en rxrpc. CVE-identifiers zijn niet toegewezen, wat het volgen van pakketupdates in de distributies bemoeilijkt. Als tijdelijke oplossing voor de beveiliging kunnen de kernelmodules esp4, esp6 en rxrpc geblokkeerd worden: sh -c Ā«printf ā€˜install esp4 \/bin\/false\ninstall esp6 \/bin\/false\ninstall rxrpc \/bin\/false\n’ > \/etc\/modprobe.d\/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>\/dev\/null; trueĀ»

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster