Het eBPF-subsysteem, waarmee je handlers kunt uitvoeren voor het traceren, analyseren van de werking van het subsysteem en verkeersbeheer, wordt uitgevoerd binnen de kernel. Linux Er is een kwetsbaarheid (CVE-2021-29154) ontdekt in een speciale virtuele machine met JIT-compilatie, waardoor een lokale gebruiker zijn eigen code op kernelniveau kan uitvoeren. Het probleem blijft bestaan tot en met versie 5.11.12 en is nog niet verholpen in de distributies.Debian, Ubuntu(RHEL, Fedora, SUSE, Arch). De oplossing is beschikbaar als patch.
Volgens de onderzoekers die de kwetsbaarheid ontdekten, hebben ze een werkend exploitprototype ontwikkeld voor 32- en 64-bits x86-systemen dat door een gebruiker zonder beheerdersrechten kan worden gebruikt. Red Hat merkt op dat de ernst van het probleem afhangt van de toegang van de gebruiker tot de eBPF-systeemoproep. In RHEL en de meeste andere distributies is dit bijvoorbeeld niet mogelijk. Linux In de standaardconfiguratie kan de kwetsbaarheid worden misbruikt als BPF JIT is ingeschakeld en de gebruiker CAP_SYS_ADMIN-rechten heeft. Als tijdelijke oplossing wordt aanbevolen BPF JIT uit te schakelen met het commando: echo 0 > /proc/sys/net/core/bpf_jit_enable
Het probleem wordt veroorzaakt door een fout bij het berekenen van de offset voor vertakkingsinstructies tijdens het genereren van machinecode door de JIT-compiler. Bij het genereren van vertakkingsinstructies wordt met name geen rekening gehouden met de mogelijkheid dat de offset na de optimalisatiefase verandert. Deze fout kan worden gebruikt om afwijkende machinecode te genereren en deze op kernelniveau uit te voeren.
Het is opmerkelijk dat dit niet de enige kwetsbaarheid in het eBPF-subsysteem is. Eind maart werden er nog twee kwetsbaarheden in de kernel geïdentificeerd (CVE-2020-27170, CVE-2020-27171), die het mogelijk maken om eBPF te gebruiken om de bescherming tegen Spectre-klasse kwetsbaarheden te omzeilen. Deze kwetsbaarheden maken het mogelijk om de inhoud van het kernelgeheugen te bepalen door voorwaarden te creëren voor speculatieve uitvoering van bepaalde bewerkingen. Een Spectre-aanval vereist de aanwezigheid van een bepaalde reeks opdrachten in geprivilegieerde code die leidt tot speculatieve uitvoering van instructies. Er zijn verschillende manieren gevonden om dergelijke instructies te genereren door BPF-programma's te manipuleren die ter uitvoering zijn aangeboden.
Kwetsbaarheid CVE-2020-27170 wordt veroorzaakt door manipulaties van pointers in de BPF-verificatie, wat leidt tot speculatieve toegang buiten de toegestane geheugengrenzen. Kwetsbaarheid CVE-2020-27171 houdt verband met een integer underflow-fout bij het verwerken van pointers, wat eveneens leidt tot speculatieve toegang buiten de toegestane geheugengrenzen. Deze problemen zijn reeds verholpen in kernelversies 5.11.8, 5.10.25, 5.4.107, 4.19.182 en 4.14.227, en zijn ook opgenomen in kernelupdates voor de meeste distributies. LinuxOnderzoekers hebben een prototype van een exploit ontwikkeld waarmee een gebruiker zonder beheerdersrechten gegevens uit het kernelgeheugen kan halen.
Bron: opennet.ru
