Kopieerfout: De Linux-kwetsbaarheid die root-toegang mogelijk maakt via paginacaching

Belangrijkste punten:
  • De aanvaller opent een AF_ALG-socket en vraagt ​​het authenticatiealgoritme op.
  • De aanvaller gebruikt splice() om de socket te vullen met pagina's uit de cache van het doelbestand (bijv. /usr/bin/su). Deze pagina's worden vervolgens onderdeel van de uitvoer-hashlijst (schrijfbaar).
  • De aanvaller verstuurt een bericht (sendmsg) met kwaadaardig ontworpen Associated Authenticated Data (AAD), waarbij bytes 4-7 de gegevens bevatten die ze willen schrijven (bijvoorbeeld kwaadaardige code).
  • Wanneer de decryptie wordt geactiveerd, neemt authencesn die 4 bytes uit de AAD en schrijft ze tijdelijk naar het einde van de buffer. Dankzij in-place optimalisatie wijst dit einde van de buffer direct naar de bestandscachepagina.
  • De cryptografische bewerking mislukt (de versleutelde tekst is ongeldig), maar de schrijfbewerking van 4 bytes heeft al plaatsgevonden en wordt nooit teruggedraaid.
  • De aanvaller herhaalt het proces om zijn code te injecteren. Wanneer /usr/bin/su wordt uitgevoerd, laadt de kernel de aangepaste versie uit het geheugen en voert de geïnjecteerde code uit met rootrechten.

kopieerfout

De beveiliging van Linux staat voor een nieuwe uitdaging na de ontdekking van de kwetsbaarheid CVE-2026-31431, ook wel "Copy Fail" genoemd door de onderzoekers van Xint Code. Dit ontwerpprobleem is verre van een theoretische fout. Het stelt een lokale gebruiker zonder privileges in staat om zijn of haar rechten te verhogen en volledige toegang te verkrijgen. als supergebruiker op een voorspelbare en stille manier.

De onderzoekers vermelden dat deze kwetsbaarheid met succes is misbruikt in toonaangevende distributies zoals Ubuntu, Amazon Linux, RHEL en SUSE, wat bevestigt dat elk systeem dat een kernelversie nieuwer dan 4.14 gebruikt en onderhoudt Het inschakelen van ondersteuning voor AF_ALG-sockets is potentieel kwetsbaar. bij deze aanval.

In-place bewerkingen en pagina-cache-overloop

Wat de uitspraak betreft, wordt vermeld dat dit Het gaat terug op een optimalisatie die in 2017 werd geïntroduceerd in de cryptografische API van de kernel (AF_ALG). Deze wijziging Ik wilde onnodig bufferen elimineren. Het uitvoeren van geauthenticeerde versleutelingsbewerkingen (AEAD) rechtstreeks in dezelfde geheugenruimte, wat bekend staat als "in-place" bewerkingen.

El Een cruciaal probleem ontstaat wanneer deze optimalisatie wordt gecombineerd met de splice()-functie. Deze methode draagt ​​gegevens over tussen bestandsdescriptors door directe verwijzingen naar de kernelpagina-cache over te dragen in plaats van de gegevens fysiek te kopiëren. Bij het aanvragen van decryptie werd de geheugenstructuur zo geconfigureerd dat de bestemmingsbuffer, die een tijdelijke ruimte voor de gebruiker zou moeten zijn, uiteindelijk direct gekoppeld werd aan de cachepagina's die de systeembestandsgegevens bevatten.

Authenticatie en schrijven buiten de geheugenlimieten

El De uiteindelijke oorzaak van de kwetsbaarheid ligt in het afwijkende gedrag van het authenticatiealgoritme. In tegenstelling tot andere cryptografische routines die de grenzen van hun bestemmingsbuffers strikt respecteren, Dit specifieke algoritme gebruikt de geheugenruimte van de gebruiker als tijdelijk werkgebied. (kladblok) om bytevolgordes te herschikken tijdens de berekening van de authenticatietag.

Tijdens dit proces schrijft het algoritme vier bytes buiten de vastgestelde limiet voor het uitvoergebied. Dankzij in-place optimalisatie en de referentieketen die door splice() wordt gecreëerd,Deze ogenschijnlijk onschuldige tekst overschrijdt de grens van het geheugen van de gebruiker. en komt direct terecht op de kernelcachepagina die is gekoppeld aan het bestand dat wordt verwerkt.

Deze reeks logische fouten Het geeft de aanvaller de mogelijkheid om willekeurig vier bytes op specifieke cacheposities te overschrijven. pagina's voor elk bestand dat het kan lezen. Door een reeks berekende verzoeken te verzenden, Een aanvaller kan kwaadaardige code injecteren. in de in-memory versie van kritieke uitvoerbare bestanden met de suid-bit ingesteld, zoals de gebruikerswisseltool.

Aangezien alle leesbewerkingen eerst de paginacache raadplegen, wordt de volgende keer dat het legitieme hulpprogramma wordt aangeroepen, Het systeem voert de geïnjecteerde code vanuit het geheugen uit, waardoor direct rootrechten worden verleend. zonder ooit het fysieke bestand op de harde schijf te wijzigen. Nog verontrustender is dat, omdat containerisolatie de paginacache van de onderliggende host deelt, deze kwetsbaarheid een directe toegangspoort vormt om te ontsnappen uit gevirtualiseerde omgevingen zoals Kubernetes-clusters en het primaire knooppunt te compromitteren.

Noodoplossingen en maatregelen ter beperking van de schade

Gezien de ernst van deze uitspraak, de Onderhoudsteams hebben noodupdates uitgebracht. waar de definitieve oplossing ligt in Herstel de in-place optimalisatie in het bestand algif_aead.c en scheid de bron- en bestemmingsgeheugenlijsten strikt van elkaar. Om te voorkomen dat pagina's uit de cache in beschrijfbare paden terechtkomen.

Deze patches zijn al geïntegreerd in kernels 6.18.22, 6.19.12 en 7.0 en worden teruggeporteerd naar de long-term support branches. Voor beheerders die hun servers niet direct kunnen herstarten of bijwerken, wordt aangeraden de kernelmodule algif_aead uit te schakelen als deze extern is gecompileerd, of het aanmaken van AF_ALG-sockets sterk te beperken met behulp van beveiligingsbeleid zoals SELinux, een bescherming die bijvoorbeeld huidige Android-apparaten tegen deze dreiging heeft beschermd.

Als u tot slot meer wilt weten, kunt u de details vinden via de volgende link.


Voeg dit toe als voorkeursbron in Google.