Linux kodola eBPF apakšsistēmas ievainojamības

eBPF apakšsistēmā tika identificēta ievainojamība (CVE-2021-29154), kas ļauj palaist apdarinātājus, lai izsekotu, analizētu apakšsistēmu darbību un pārvaldītu trafiku, kas izpildīti Linux kodola iekšpusē īpašā virtuālajā mašīnā ar JIT, kas ļauj vietējais lietotājs, lai panāktu sava koda izpildi kodola līmenī. Problēma parādās līdz 5.11.12 (ieskaitot) izlaišanai un vēl nav novērsta izplatījumos (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Labojums ir pieejams kā ielāps.

Saskaņā ar pētnieku, kas identificēja ievainojamību, teikto, viņi varēja izstrādāt ekspluatācijas prototipu 32 un 64 bitu x86 sistēmām, ko var izmantot nepievilcīgs lietotājs. Tomēr Red Hat atzīmē, ka problēmas nopietnība ir atkarīga no tā, vai eBPF sistēmas izsaukums ir pieejams lietotājam. Piemēram, RHEL un lielākajā daļā citu Linux izplatījumu noklusējuma konfigurācijā ievainojamību var izmantot, ja ir iespējots BPF JIT un lietotājam ir CAP_SYS_ADMIN tiesības. Kā risinājums ir ieteicams atspējot BPF JIT, izmantojot komandu: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problēmu izraisa kļūda, aprēķinot atzaru instrukciju nobīdi JIT kompilatora mašīnkoda ģenerēšanas procesā. Jo īpaši, ģenerējot filiāles instrukcijas, netiek ņemts vērā, ka nobīde var mainīties pēc optimizācijas posma iziešanas. Šo trūkumu var izmantot, lai ģenerētu anomālu mašīnas kodu un izpildītu to kodola līmenī.

Jāatzīmē, ka šī pēdējā laikā nav vienīgā eBPF apakšsistēmas ievainojamība. Marta beigās tika konstatētas vēl divas kodola ievainojamības (CVE-2020-27170, CVE-2020-27171), kas ļauj izmantot eBPF, lai apietu aizsardzību pret Spectre klases ievainojamībām, kas ļauj noteikt kodola atmiņas saturu. kā rezultātā tiek radīti apstākļi noteiktu operāciju spekulatīvai veikšanai. Spectre uzbrukumam ir nepieciešama noteikta komandu secība priviliģētā kodā, kas noved pie spekulatīvas instrukciju izpildes. eBPF ir atrasti vairāki veidi, kā ģenerēt šādus norādījumus, veicot manipulācijas ar izpildei nosūtītajām BPF programmām.

CVE-2020-27170 ievainojamību izraisa manipulācijas ar rādītāju BPF verificētājā, kas izraisa spekulatīvas darbības, lai piekļūtu apgabalam ārpus bufera robežām. Ievainojamība CVE-2020-27171 ir radusies vesela skaitļa nepietiekamas plūsmas kļūdas dēļ, strādājot ar norādes, kā rezultātā tiek nodrošināta spekulatīva piekļuve datiem ārpus bufera. Šīs problēmas jau ir novērstas kodola laidienos 5.11.8, 5.10.25, 5.4.107, 4.19.182 un 4.14.227, un tās ir iekļautas arī kodola atjauninājumos lielākajai daļai Linux izplatījumu. Pētnieki ir sagatavojuši prototipu, kas ļauj nepievilcīgam lietotājam iegūt datus no kodola atmiņas.

Avots: opennet.ru

Pievieno komentāru