Tekniikka Linux-ytimen tty-alijärjestelmän haavoittuvuuden hyödyntämiseksi on paljastettu

Google Project Zero -tiimin tutkijat julkaisivat menetelmän haavoittuvuuden (CVE-2020-29661) hyödyntämiseksi TIOCSPGRP ioctl -käsittelijän toteutuksessa Linux-ytimen tty-alijärjestelmästä ja tutkivat myös yksityiskohtaisesti suojamekanismeja, jotka voisivat estää tällaisen haavoittuvuuden. haavoittuvuuksia.

Ongelman aiheuttanut bugi korjattiin Linux-ytimessä 3. joulukuuta viime vuonna. Ongelma ilmenee ytimissä versioon 5.9.13 asti, mutta useimmat jakelut ovat korjanneet ongelman viime vuonna tarjotuissa ydinpakettien päivityksissä (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Samanlainen haavoittuvuus (CVE-2020-29660) löydettiin samanaikaisesti TIOCGSID ioctl -kutsun toteutuksesta, mutta se on myös jo korjattu kaikkialla.

Ongelma johtuu virheestä lukitusten asettamisessa, mikä johti kilpailuehtoon drivers/tty/tty_jobctrl.c-koodissa, jota käytettiin käyttäjätilasta ioct-manipulaatioiden avulla hyödynnettyjen use-after-free -ehtojen luomiseen kutsumalla TIOCSPGRP. Debian 10:n ytimen 4.19.0-13-amd64:n käyttöoikeuksien eskalointiin on osoitettu toimiva hyväksikäyttö.

Samanaikaisesti julkaistu artikkeli ei keskity niinkään toimivan hyväksikäytön luomistekniikkaan, vaan pikemminkin siihen, mitä työkaluja ytimessä on suojautua tällaisilta haavoittuvuuksilta. Johtopäätös ei ole lohdullinen, menetelmiä, kuten muistin segmentointi kasassa ja muistin käytön hallinta sen vapauttamisen jälkeen, ei käytetä käytännössä, koska ne johtavat suorituskyvyn heikkenemiseen, sekä CFI- (Control Flow Integrity) -pohjainen suojaus, joka estää hyväksikäytöt hyökkäyksen myöhemmissä vaiheissa, vaatii parannusta.

Kun pohditaan, mikä vaikuttaisi pitkällä aikavälillä, yksi erottuva on edistyneiden staattisten analysaattoreiden käyttö tai muistia säästävien kielten, kuten Rust- ja C-murteiden käyttö runsailla huomautuksilla (kuten Checked C) tarkistamiseen. tila rakennusvaiheen aikana. lukot, objektit ja osoittimet. Suojausmenetelmiin kuuluu myös panic_on_oops -tilan aktivointi, ytimen rakenteiden vaihtaminen vain luku -tilaan ja järjestelmäkutsujen käytön rajoittaminen mekanismeja, kuten seccomp, avulla.

Lähde: opennet.ru

Lisää kommentti