Vydali výskumníci z tímu Google Project Zero nedávno prostredníctvom blogového príspevku nový spôsob využívania zraniteľností (CVE-2020-29661) pri implementácii obslužného programu ioctl TIOCSPGRP Linuxový kernel tty subsystém, ako aj podrobné ochranné mechanizmy, ktoré by mohli blokovať tieto zraniteľnosti.
V príspevku je uvedené, že problém je spôsobený chybou v nastaveniach zámku, čo viedlo k race condition v kóde /tty/tty_jobctrl.c, ktorý bol použitý na vytvorenie podmienok pre prístup k pamäti po spustení (use-after-free), využívanej užívateľským priestorom prostredníctvom manipulácie s ioct- volaním TIOCSPGRP.
Okrem zverejnených informácií aj bolo vykonané funkčné demo exploit pre eskaláciu privilégií v Debian 10 s jadrom 4.19.0-13-amd64 a čo tiež nevylučuje, že to môže mať vplyv na rôzne distribúcie, medzi ktoré samozrejme patria tie, ktoré sú založené a odvodené od Debianu.
Mnohé z jednotlivých techník využívania a možností zmiernenia, ktoré tu popisujem, nie sú nové. Myslím si však, že stojí za to ich spísať, aby sme ukázali, ako sa rôzne zmierňujúce opatrenia vzájomne ovplyvňujú s celkom normálnym využitím bez použitia.
Útržky kódu v tomto blogovom príspevku, ktoré sú relevantné pre exploit, sú prevzaté z predchádzajúcej verzie 4.19.160, pretože na tom je založené cieľové jadro Debianu; niektoré ďalšie úryvky kódu sú z hlavnej línie Linuxu.
Zároveň v publikovanom článku dôraz sa nekladie ani tak na techniku vytvorenia funkčného exploitu, ale na aké nástroje sú v jadre aby ste sa chránili proti takýmto zraniteľnostiam.
Záver je sklamaním, ako je uvedené, že metódy ako segmentovanie pamäte v halde a riadenie prístupu k pamäti po jej uvoľnení sa v praxi nepoužívajú, pretože vedú k zníženiu výkonu a ochrane založenej na CFI (Control Flow Integrity), ktorá blokuje exploity v neskorších fázy útoku, vyžaduje zlepšenie.
Špeciálnym typom koncového zariadenia sú pseudoterminály, ktoré sa používajú napríklad vtedy, keď otvoríte terminálovú aplikáciu v grafickom prostredí alebo sa pripojíte k vzdialenému stroju cez SSH. Zatiaľ čo iné koncové zariadenia sú pripojené k nejakému druhu hardvéru, oba konce pseudoterminálu sú riadené užívateľským priestorom a pseudoterminály môžu byť voľne vytvorené užívateľským priestorom (bez privilégií).
Kedykoľvek sa otvorí / dev / ptmx (skratka pre "pseudo-terminálny multiplexer"), výsledný deskriptor súboru predstavuje stranu zariadenia (v dokumentácii a zdrojoch jadra sa označuje ako "hlavný pseudoterminál") zariadenia. new pseudo - terminál.
Zodpovedajúce terminálové zariadenie (ku ktorému sa shell bežne pripája) je automaticky vytvorené jadrom pod / dev / pts / .
Pri pohľade na to, čo by mohlo znamenať rozdiel z dlhodobého hľadiska, sa dôraz kladie na používanie pokročilých statických analyzátorov alebo používanie jazykov bezpečných pre pamäť, ako sú dialekty Rust a C s rozšírenými anotáciami (ako osvedčené C) na vytváranie kontrol stavu, zámkov, predmety a ukazovatele. Metódy ochrany tiež uvádzajú povolenie režimu panic_on_oops, čím sa štruktúry jadra stanú iba na čítanie a obmedzí sa prístup k systémovým volaniam prostredníctvom mechanizmov ako seccomp.
Chyba spôsobujúca problém bolo to opravené v jadre Linuxu 3. decembra minulého roku. Problém prejavuje sa v jadrách pred verziou 5.9.13, ale väčšina distribúcií opravila problém v aktualizáciách balíkov jadra, ktoré boli ponúkané minulý rok.
Spomína sa aj podobná zraniteľnosť (CVE-2020-29660), ktorá bola nájdená súčasne pri implementácii volania TIOCGSID ioctl, ale bola tiež všade odstránená.
Konečne Ak máte záujem dozvedieť sa viac, môžete skontrolovať podrobnosti Na nasledujúcom odkaze.