Linux-ytimen eBPF-alijärjestelmän haavoittuvuudet

eBPF-alijärjestelmässä tunnistettiin haavoittuvuus (CVE-2021-29154), jonka avulla voit suorittaa käsittelijöitä alijärjestelmien toiminnan jäljittämiseksi, analysoimiseksi ja liikenteen hallintaan. Se suoritetaan Linux-ytimen sisällä erityisessä JIT-virtuaalikoneessa, joka mahdollistaa paikallinen käyttäjä suorittaa koodinsa ydintasolla. Ongelma ilmenee julkaisuun 5.11.12 (mukaan lukien) asti, eikä sitä ole vielä korjattu jakeluissa (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Korjaus on saatavilla korjaustiedostona.

Haavoittuvuuden tunnistaneiden tutkijoiden mukaan he pystyivät kehittämään hyväksikäytöstä toimivan prototyypin 32- ja 64-bittisille x86-järjestelmille, jota etuoikeutetut käyttäjät voivat käyttää. Red Hat kuitenkin huomauttaa, että ongelman vakavuus riippuu siitä, onko eBPF-järjestelmäkutsu käyttäjän käytettävissä. Esimerkiksi RHEL:ssä ja useimmissa muissa oletuskokoonpanon Linux-jakeluissa haavoittuvuutta voidaan hyödyntää, jos BPF JIT on käytössä ja käyttäjällä on CAP_SYS_ADMIN-oikeudet. Kiertokeinona on suositeltavaa poistaa BPF JIT käytöstä komennolla: echo 0 > /proc/sys/net/core/bpf_jit_enable

Ongelma johtuu virheestä laskettaessa haarakäskyjen siirtymää JIT-kääntäjän konekoodin generointiprosessin aikana. Erityisesti haarakäskyjä generoitaessa ei oteta huomioon, että offset voi muuttua optimointivaiheen läpimenon jälkeen. Tätä virhettä voidaan käyttää epänormaalin konekoodin luomiseen ja sen suorittamiseen ydintasolla.

On huomionarvoista, että tämä ei ole viime aikoina ainoa eBPF-alijärjestelmän haavoittuvuus. Maaliskuun lopussa ytimessä tunnistettiin vielä kaksi haavoittuvuutta (CVE-2020-27170, CVE-2020-27171), joiden ansiosta eBPF:n avulla voidaan ohittaa suojaus Spectre-luokan haavoittuvuuksia vastaan, mikä mahdollistaa ytimen muistin sisällön määrittämisen. joidenkin operaatioiden spekulatiiviselle toteuttamiselle luotujen edellytysten seurauksena. Spectre-hyökkäys edellyttää tietyn komentosarjan läsnäoloa etuoikeutetussa koodissa, joka johtaa käskyjen spekulatiiviseen suorittamiseen. eBPF:ssä on löydetty useita tapoja luoda tällaisia ​​ohjeita manipuloimalla BPF-ohjelmia, jotka lähetetään suoritettaviksi.

CVE-2020-27170-haavoittuvuus johtuu BPF-varmentajan osoittimen manipuloinnista, joka saa spekulatiiviset toiminnot pääsemään puskurin rajojen ulkopuolelle. Haavoittuvuus CVE-2020-27171 johtuu kokonaislukujen alivuotovirheestä käytettäessä osoittimia, mikä johtaa spekulatiiviseen puskurin ulkopuolisten tietojen käyttöön. Nämä ongelmat on jo korjattu ytimen julkaisuissa 5.11.8, 5.10.25, 5.4.107, 4.19.182 ja 4.14.227, ja ne on myös sisällytetty useimpien Linux-jakelujen ydinpäivityksiin. Tutkijat ovat valmistaneet prototyypin hyväksikäytön, jonka avulla etuoikeutetut käyttäjät voivat poimia tietoja ytimen muistista.

Lähde: opennet.ru

Lisää kommentti