eBPF posistemyje, kuris leidžia paleisti branduolio viduje vykdomas tvarkykles sekimui, posistemio veikimo analizei ir srauto valdymui Linux Specialioje virtualioje mašinoje su JIT buvo aptiktas pažeidžiamumas (CVE-2021-29154), leidžiantis vietiniam vartotojui vykdyti savo kodą branduolio lygmeniu. Problema išlieka iki 5.11.12 versijos imtinai ir dar nebuvo ištaisyta platinamuosiuose paketuose (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Pataisymas prieinamas kaip pataisa.
Pasak tyrėjų, kurie atrado pažeidžiamumą, jie sukūrė veikiantį prototipą 32 ir 64 bitų x86 sistemoms, kurį gali naudoti neturintis privilegijų vartotojas. „Red Hat“ pažymi, kad problemos rimtumas priklauso nuo to, ar vartotojas turi prieigą prie eBPF sistemos iškvietimo. Pavyzdžiui, RHEL ir daugumoje kitų distribucijų... Linux Pagal numatytąją konfigūraciją pažeidžiamumu galima pasinaudoti, jei įjungtas BPF JIT ir vartotojas turi CAP_SYS_ADMIN teises. Kaip problemos sprendimo būdą rekomenduojama išjungti BPF JIT naudojant komandą: echo 0 > /proc/sys/net/core/bpf_jit_enable
Problemą sukelia klaida apskaičiuojant šakų komandų poslinkį JIT kompiliatoriaus mašininio kodo generavimo proceso metu. Visų pirma, generuojant šakų instrukcijas, neatsižvelgiama į tai, kad poslinkis gali pasikeisti praėjus optimizavimo etapui. Šis trūkumas gali būti naudojamas anomaliam mašinos kodui generuoti ir jį vykdyti branduolio lygiu.
Pažymėtina, kad pastaruoju metu tai nėra vienintelis eBPF posistemio pažeidžiamumas. Kovo pabaigoje buvo nustatyti dar du branduolio pažeidžiamumai (CVE-2020-27170, CVE-2020-27171), leidžiantys eBPF apeiti apsaugą nuo Spectre klasės pažeidžiamumų, leidžiančių nustatyti branduolio atminties turinį. sudarius sąlygas spekuliaciniam tam tikrų operacijų vykdymui . Spectre ataka reikalauja, kad privilegijuotajame kode būtų tam tikra komandų seka, kuri veda prie spekuliacinio instrukcijų vykdymo. eBPF buvo rasta keletas būdų, kaip generuoti tokias instrukcijas manipuliuojant BPF programomis, perduodamomis vykdyti.
Pažeidžiamumas CVE-2020-27170 atsiranda dėl rodyklių manipuliacijų BPF tikrintuve, dėl kurių atsiranda spekuliatyvios prieigos už ribų. Pažeidžiamumas CVE-2020-27171 yra susijęs su sveikojo skaičiaus perpildymo klaida tvarkant rodykles, dėl kurios atsiranda spekuliatyvios prieigos už ribų. Šios problemos jau buvo ištaisytos branduolio 5.11.8, 5.10.25, 5.4.107, 4.19.182 ir 4.14.227 versijose ir taip pat įtrauktos į daugelio platinamųjų versijų branduolio atnaujinimus. LinuxTyrėjai sukūrė prototipinį pažeidžiamumą, kuris leidžia neprivilegijuotam vartotojui išgauti duomenis iš branduolio atminties.
Šaltinis: opennet.ru
