eBPF-alijärjestelmän haavoittuvuus, joka mahdollistaa koodin suorittamisen Linux-ytimen tasolla

eBPF-alijärjestelmästä on tunnistettu haavoittuvuus (CVE-2021-4204), jonka avulla voit ajaa käsittelijöitä Linux-ytimen sisällä erityisessä virtuaalikoneessa JIT:llä, jolloin paikallinen etuoikeutettu käyttäjä voi saada oikeudet eskaloitua ja suorittaa koodinsa Linux-ytimen taso. Ongelma on ilmennyt Linux-ytimen versiosta 5.8 lähtien, ja se on edelleen korjaamaton (mukaan lukien julkaisu 5.16). Jakelujen ongelman korjaamiseksi luotujen päivitysten tilaa voidaan seurata näiltä sivuilta: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. On ilmoitettu, että toimiva hyväksikäyttö on luotu, joka on tarkoitus julkaista 18. tammikuuta (käyttäjille ja kehittäjille on annettu viikko aikaa korjata haavoittuvuus).

Haavoittuvuus johtuu suoritettavaksi lähetettyjen eBPF-ohjelmien virheellisestä todentamisesta. eBPF-alijärjestelmä tarjoaa aputoimintoja, joiden oikean käytön varmentaa erityinen todentaja. Jotkin funktiot edellyttävät PTR_TO_MEM-arvon välittämistä argumenttina, ja mahdollisten puskurin ylivuotojen estämiseksi todentajan on tiedettävä argumenttiin liittyvän muistin koko. Toiminnoissa bpf_ringbuf_submit ja bpf_ringbuf_discard tietoja siirretyn muistin koosta ei raportoitu todentajalle, jota voitaisiin käyttää puskurin rajan ulkopuolella olevien muistialueiden korvaamiseen suoritettaessa erityisesti suunniteltua eBPF-koodia.

Hyökkäyksen suorittamiseksi käyttäjän on voitava ladata oma BPF-ohjelmansa, ja monet viimeaikaiset Linux-jakelut estävät tämän mahdollisuuden oletusarvoisesti (mukaan lukien etuoikeutettu pääsy eBPF:ään on nyt oletuksena kielletty itse ytimissä julkaisusta 5.16 alkaen). Haavoittuvuutta voidaan hyödyntää esimerkiksi Ubuntu 20.04 LTS:n oletuskokoonpanossa, mutta ympäristöissä Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 ja Fedora 33 se näkyy vain, jos järjestelmänvalvoja on määrittänyt parametrin kernel.unprivileged_bpf_disabled arvoksi 0. Haavoittuvuuden estämiseksi voit estää etuoikeutettujen käyttäjien BPF-ohjelmien suorittamisen komennolla "sysctl -w kernel.unprivileged_bpf_disabled=1".

Lähde: opennet.ru

Lisää kommentti