Kwetsbaarheden in het eBPF-subsysteem die code-uitvoering op Linux-kernelniveau mogelijk maken

Er zijn twee nieuwe kwetsbaarheden geïdentificeerd in het eBPF-subsysteem, waarmee je handlers binnen de Linux-kernel kunt uitvoeren in een speciale virtuele machine met JIT. Beide kwetsbaarheden maken het mogelijk om uw code met kernelrechten uit te voeren, buiten een geïsoleerde virtuele eBPF-machine. Informatie over de problemen is gepubliceerd door het Zero Day Initiative-team, dat de Pwn2Own-wedstrijd leidt, waarbij dit jaar drie aanvallen op Ubuntu Linux werden gedemonstreerd die gebruik maakten van voorheen onbekende kwetsbaarheden (of de kwetsbaarheden in eBPF verband houden met deze aanvallen wordt niet gerapporteerd) .

  • CVE-2021-3490 - Het beveiligingslek wordt veroorzaakt door een gebrek aan 32-bits controle op buitengrenzen bij het uitvoeren van bitsgewijze AND-, OR- en XOR-bewerkingen in eBPF ALU32. Een aanvaller kan van deze fout profiteren door gegevens buiten de grenzen van de toegewezen buffer te lezen en te schrijven. Het probleem met XOR-bewerkingen doet zich voor vanaf kernelversie 5.7-rc1, en AND en OR - vanaf 5.10-rc1.
  • CVE-2021-3489 - Het beveiligingslek wordt veroorzaakt door een fout in de implementatie van de ringbuffer en is te wijten aan het feit dat de functie bpf_ringbuf_reserve niet de mogelijkheid heeft gecontroleerd dat de grootte van het toegewezen geheugengebied kleiner zou kunnen zijn dan de werkelijke grootte van de ringbuf. Het probleem doet zich voor sinds release 5.8-rc1.

De status van het patchen van kwetsbaarheden in distributies kan worden gevolgd op deze pagina’s: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Fixes zijn ook beschikbaar als patches (CVE-2021-3489, CVE-2021-3490). Of het probleem kan worden misbruikt, hangt af van de vraag of de eBPF-systeemoproep toegankelijk is voor de gebruiker. In de standaardconfiguratie in RHEL vereist misbruik van het beveiligingslek bijvoorbeeld dat de gebruiker over CAP_SYS_ADMIN-rechten beschikt.

Afzonderlijk kunnen we een andere kwetsbaarheid in de Linux-kernel opmerken: CVE-2021-32606, waardoor een lokale gebruiker zijn rechten naar het rootniveau kan verhogen. Het probleem is duidelijk zichtbaar sinds Linux-kernel 5.11 en wordt veroorzaakt door een race condition bij de implementatie van het CAN ISOTP-protocol, dat het mogelijk maakt om de socketbindingsparameters te wijzigen vanwege het ontbreken van het instellen van de juiste vergrendelingen in de isotp_setsockopt()-functie bij het verwerken van de vlag CAN_ISOTP_SF_BROADCAST.

Nadat de ISOTP-socket is gesloten, blijft de binding met de ontvangende socket van kracht, die de structuren kan blijven gebruiken die aan de socket zijn gekoppeld nadat het bijbehorende geheugen is vrijgegeven (use-after-free vanwege de aanroep van isotp_rcv() toegang krijgen tot een reeds vrijgemaakte isotp_sock-structuur). Door gegevensmanipulatie kunt u de verwijzing naar de functie sk_error_report() overschrijven en uw code op kernelniveau uitvoeren.

Bron: opennet.ru

Voeg een reactie