Er is een techniek onthuld om misbruik te maken van een kwetsbaarheid in het tty-subsysteem van de Linux-kernel

Onderzoekers van het Google Project Zero-team publiceerden een methode voor het misbruiken van een kwetsbaarheid (CVE-2020-29661) in de implementatie van de TIOCSPGRP ioctl-handler uit het tty-subsysteem van de Linux-kernel, en onderzochten ook in detail de beschermingsmechanismen die dergelijke beveiligingsmechanismen zouden kunnen blokkeren. kwetsbaarheden.

De bug die het probleem veroorzaakte, werd op 3 december vorig jaar in de Linux-kernel opgelost. Het probleem doet zich voor in kernels tot en met versie 5.9.13, maar de meeste distributies hebben het probleem opgelost in updates van kernelpakketten die vorig jaar werden aangeboden (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Een soortgelijke kwetsbaarheid (CVE-2020-29660) werd gelijktijdig gevonden bij de implementatie van de TIOCGSID ioctl-oproep, maar is ook al overal verholpen.

Het probleem wordt veroorzaakt door een fout bij het instellen van vergrendelingen, wat leidde tot een raceconditie in de drivers/tty/tty_jobctrl.c-code, die werd gebruikt om gebruik-na-gratis-voorwaarden te creΓ«ren die vanuit de gebruikersruimte werden geΓ«xploiteerd door middel van ioct-manipulaties door TIOCSPGRP aan te roepen. Er is een werkende exploit gedemonstreerd voor escalatie van bevoegdheden op Debian 10 met kernel 4.19.0-13-amd64.

Tegelijkertijd richt het gepubliceerde artikel zich niet zozeer op de techniek om een ​​werkende exploit te creΓ«ren, maar eerder op welke tools er in de kernel aanwezig zijn om zich tegen dergelijke kwetsbaarheden te beschermen. De conclusie is niet geruststellend; methoden zoals geheugensegmentatie in de heap en controle van geheugentoegang nadat deze is vrijgegeven, worden in de praktijk niet gebruikt, omdat ze leiden tot prestatievermindering, en op CFI (Control Flow Integrity) gebaseerde bescherming, die blokkeert exploits in de latere stadia van een aanval, moet worden verbeterd.

Als je bedenkt wat op de lange termijn een verschil zou maken, valt het gebruik van geavanceerde statische analysatoren of het gebruik van geheugenveilige talen zoals Rust- en C-dialecten met rijke annotaties (zoals Checked C) op om te controleren status tijdens de bouwfase: sloten, objecten en wijzers. Beveiligingsmethoden omvatten ook het activeren van de paniek_on_oops-modus, het omschakelen van kernelstructuren naar de alleen-lezen-modus en het beperken van de toegang tot systeemaanroepen met behulp van mechanismen zoals seccomp.

Bron: opennet.ru

Voeg een reactie