Razkrita je bila tehnika za izkoriščanje ranljivosti v podsistemu tty jedra Linuxa

Raziskovalci ekipe Google Project Zero so objavili metodo za izkoriščanje ranljivosti (CVE-2020-29661) pri implementaciji obdelovalnika ioctl TIOCSPGRP iz podsistema tty jedra Linuxa, podrobno pa so preučili tudi zaščitne mehanizme, ki bi lahko blokirali tovrstno ranljivosti.

Napaka, ki je povzročala težavo, je bila odpravljena v jedru Linuxa 3. decembra lani. Težava se pojavi v jedrih do različice 5.9.13, vendar je večina distribucij odpravila težavo v posodobitvah paketov jedra, ki so bili na voljo lani (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Podobna ranljivost (CVE-2020-29660) je bila istočasno najdena pri implementaciji klica TIOCGSID ioctl, vendar je bila tudi že povsod odpravljena.

Težavo povzroča napaka pri nastavitvi zaklepanja, ki vodi do dirkalnega pogoja v kodi drivers/tty/tty_jobctrl.c, ki je bila uporabljena za ustvarjanje pogojev uporabe po brezplačnem izkoriščanju iz uporabniškega prostora prek manipulacij ioct s klicem TIOCSPGRP. Za eskalacijo privilegijev v Debianu 10 z jedrom 4.19.0-13-amd64 je bilo dokazano delujoče izkoriščanje.

Hkrati se objavljeni članek ne osredotoča toliko na tehniko ustvarjanja delujočega izkoriščanja, temveč na to, katera orodja obstajajo v jedru za zaščito pred tovrstnimi ranljivostmi. Ugotovitev ni tolažilna, metode, kot sta segmentacija pomnilnika v kopici in nadzor dostopa do pomnilnika po njegovi sprostitvi, se v praksi ne uporabljajo, saj vodijo v zmanjšanje zmogljivosti, in zaščita na osnovi CFI (Control Flow Integrity), ki blokira podvige v kasnejših fazah napada, potrebuje izboljšavo.

Ko razmišljamo o tem, kaj bi dolgoročno vplivalo, izstopa uporaba naprednih statičnih analizatorjev ali uporaba jezikov, ki varujejo pomnilnik, kot sta Rust in narečja C z bogatimi opombami (kot je Checked C) za preverjanje stanje med fazo gradnje ključavnice, objekti in kazalci. Metode zaščite vključujejo tudi aktiviranje načina panic_on_oops, preklop struktur jedra v način samo za branje in omejevanje dostopa do sistemskih klicev z uporabo mehanizmov, kot je seccomp.

Vir: opennet.ru

Dodaj komentar