Dirty Pipe: een kwetsbaarheid waardoor gegevens kunnen worden overschreven

Dat maakte onlangs het nieuws bekend er is een kwetsbaarheid vastgesteld in de Linux-kernel en die al is gecatalogiseerd onder CVE-2022-0847 en die ze hebben genoemd als "Vuile pijp".

Deze kwetsbaarheid genaamd "Dirty Pipe"maakt het mogelijk om de inhoud van de cache te overschrijven van de pagina voor elk bestand, inclusief bestanden die zijn ingesteld op alleen-lezen, geopend met de O_RDONLY-vlag, of zich bevinden op bestandssystemen die alleen-lezen zijn aangekoppeld.

Aan de praktische kant, de kwetsbaarheid kan worden gebruikt om code in willekeurige processen te injecteren of corrupte gegevens in geopende bestanden. U kunt bijvoorbeeld de inhoud van het bestand Authorized_keys voor het sshd-proces wijzigen.

Over vuile pijp

Het is vergelijkbaar met de kritieke kwetsbaarheid Dirty COW geïdentificeerd in 2016 en Dirty Pipe staat op hetzelfde niveau als Dirty COW wat betreft gevaar, maar dat deze veel gemakkelijker te bedienen is.

Dirty Pipe werd geïdentificeerd tijdens de analyse van klachten over periodieke schade aan archieven gedownload via het netwerk op een systeem dat gecomprimeerde bestanden downloadt van een logserver (37 schade in 3 maanden op een geladen systeem), die werden voorbereid met behulp van de splice()-bewerking en naamloze buizen.

Kwetsbaarheid manifesteert zich sinds Linux-kernelversie 5.8, uitgebracht in augustus 2020.

Op een andere manier gezien kunnen we zeggen dat het aanwezig is in Debian 11, maar het heeft geen invloed op de basiskernel in Ubuntu 20.04 LTS, terwijl voor RHEL 8.x en openSUSE/SUSE 15 kernels oorspronkelijk gebaseerd zijn op oude branches, maar het is mogelijk dat de wijziging die het probleem veroorzaakt aan hen is overgedragen (er zijn nog geen exacte gegevens).

De kwetsbaarheid is te wijten aan het ontbreken van initialisatie van de waarde "buf->flags" in de code van de functies copy_page_to_iter_pipe() en push_pipe(), ondanks dat het geheugen niet wordt gewist wanneer de structuur wordt toegewezen, en met bepaalde manipulaties met naamloze pipes, "buf->flags" kan een waarde van een andere bewerking bevatten. Met deze functie kan een niet-bevoorrechte lokale gebruiker het uiterlijk van de PIPE_BUF_FLAG_CAN_MERGE-waarde in de vlag bereiken, waardoor ze gegevens in de paginacache kunnen overschrijven door simpelweg nieuwe gegevens naar een speciaal voorbereide naamloze pijp te schrijven.

voor een aanval kan worden gedaan, hebt u een doelbestand nodig dat leesbaar moet zijn en aangezien toegangsrechten niet worden gecontroleerd bij het schrijven naar een pipe, kan een vervanging worden uitgevoerd op de paginacache, zelfs voor bestanden die zich op alleen-lezen partities bevinden (bijvoorbeeld voor c CD-ROM-bestanden).

Hiermee zal het proces, na het vervangen van de informatie in de paginacache, bij het lezen van de gegevens uit het bestand, niet de echte gegevens ontvangen, maar de vervangen.

Er wordt gezegd dat de Dirty Pipe-bewerking komt neer op het maken van een naamloze pijp en deze te vullen met willekeurige gegevens om de PIPE_BUF_FLAG_CAN_MERGE-vlag in te stellen op alle ringstructuren die ermee verbonden zijn.

De gegevens worden dan uit de pipe gelezen, maar de vlag blijft ingesteld op alle instanties van de pipe_buffer-structuur in de pipe_inode_info-ringstructuren. Er wordt dan een aanroep naar splice() gedaan om de gegevens van het doelbestand in een naamloze pijp te lezen, beginnend bij de vereiste offset. Bij het schrijven van gegevens naar deze naamloze pijp, zal de vlag PIPE_BUF_FLAG_CAN_MERGE de gegevens in de paginacache overschrijven in plaats van een nieuwe instantie van de structuur pipe_buffer te maken.

Eindelijk Als u er meer over wilt weten, u kunt de details in de originele notitie controleren In de volgende link.

Ook als u geïnteresseerd bent in kunnen volgen of weten over de publicatie van updates van pakketten in de hoofddistributies, kunt u dit vanaf deze pagina's doen: DebianSUSEUbuntuRHELFedoraGentooBoog Linux.

Er wordt vermeld dat de voorgestelde kwetsbaarheidsfix beschikbaar is in Linux Kernel-versies 5.16.11, 5.15.25 en 5.10.102 en dat de fix ook is opgenomen in de kernel die op het Android-platform wordt gebruikt.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.