Google Project Zero'i teadlased avaldasid meetodi Linuxi tuuma tty-alam süsteemi TIOCSPGRP ioctli töötleja haavatavuse (CVE-2020-29661) ära kasutamiseks ning arutlesid üksikasjalikult kaitsemehhanismide üle, mis võiksid selliseid haavatavusi tõkestada.
Probleemi põhjustav viga parandati Linuxi tuumas juba eelmise aasta 3. detsembril. Probleem ilmneb tuumades enne versiooni 5.9.13, kuid enamik distributsioonidest on probleemi lahendanud tuuma paketitaaskasutusvärskendustes, mis pakuti juba eelmisel aastal (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Sarnane haavatavus (CVE-2020-29660) leiti samal ajal TIOCGSID ioctli kutsumise rakenduses, kuid see on samuti juba laialdaselt parandatud.
Probleem tuleneb vigadest lukustuste seadistamisel, mis põhjustavad lõimedusprobleemi drivers/tty/tty_jobctrl.c koodis, mida on võimalik kasutada mälu järele kutsumise (use-after-free) aluseks, mida saab kasutada kasutaja tasemel TIOCSPGRP ioctli manipuleerimiste kaudu. Tööeperiment on demonstreeritud privileegide tõstmiseks Debian 10-s, kasutades tuuma 4.19.0-13-amd64.
Avaldatud artiklis rõhutatakse mitte niivõrd töötava eksperimendi loomise tehnikat, vaid seda, milliseid tööriistu tuumas on olemas selliste haavatavuste kaitsmiseks. Järeldus on mitte liiga lohutav; meetodid, nagu mälu segmenteerimine ja mälu järele kutsumise kontroll, ei rakendata praktikas, kuna need toovad kaasa jõudluse languse ning CFI (Control Flow Integrity) põhine kaitse, mis takistab eksperimente rünnaku hilises etapis, vajab täiendavat arendust.
Pidades silmas, mis võiks pikaajalise olukorra muuta, tuuakse esile arenenud staatiliste analüsaatorite kasutamine või sealhulgas mälu ohututele töökeeltele nagu Rust ja C keele dialektid, millel on täiustatud annotatsioonid (nt Checked C), mis kontrollivad lukustuste, objektide ja näidikute seisundit kogumise ajal. Kaitsemeetoditena mainitakse ka panic_on_oops režiimi aktiveerimist, tuuma struktuuride ainult lugemise režiimi teisendamist ja süsteemikutsumise juurdepääsu piiramist selliste mehhanismide kaudu nagu seccomp.
Allikas: opennet.ru
