Vulnerabilități în subsistemul eBPF al kernelului Linux

În subsistemul eBPF, care vă permite să rulați handlere pentru trasare, analiza funcționării subsistemului și gestionarea traficului, executate în interiorul kernelului Linux O vulnerabilitate (CVE-2021-29154) a fost descoperită într-o mașină virtuală specială cu JIT, permițând unui utilizator local să execute propriul cod la nivel de kernel. Problema persistă până la versiunea 5.11.12 inclusiv și nu a fost încă remediată în distribuții (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Corecția este disponibilă ca patch.

Potrivit cercetătorilor care au descoperit vulnerabilitatea, aceștia au dezvoltat un prototip funcțional de exploatare pentru sisteme x86 pe 32 și 64 de biți, care poate fi utilizat de un utilizator fără privilegii. Red Hat notează că gravitatea problemei depinde de accesul utilizatorului la apelul de sistem eBPF. De exemplu, în RHEL și în majoritatea celorlalte distribuții Linux În configurația implicită, vulnerabilitatea poate fi exploatată dacă BPF JIT este activat și utilizatorul are privilegii CAP_SYS_ADMIN. Ca soluție alternativă, se recomandă dezactivarea BPF JIT folosind comanda: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problema este cauzată de o eroare în calcularea offset-ului pentru instrucțiunile de ramificație în timpul procesului de generare a codului de mașină al compilatorului JIT. În special, atunci când se generează instrucțiuni de ramificație, nu ia în considerare faptul că offset-ul se poate modifica după trecerea prin etapa de optimizare. Acest defect poate fi folosit pentru a genera cod de mașină anormal și pentru a-l executa la nivel de kernel.

Este de remarcat faptul că aceasta nu este singura vulnerabilitate din subsistemul eBPF recent. La sfârșitul lunii martie, în nucleu au fost identificate încă două vulnerabilități (CVE-2020-27170, CVE-2020-27171), făcând posibilă utilizarea eBPF pentru a ocoli protecția împotriva vulnerabilităților din clasa Spectre, care permit determinarea conținutului memoriei kernelului. ca urmare a creării condiţiilor pentru executarea speculativă a anumitor operaţiuni . Atacul Spectre necesită prezența unei anumite secvențe de comenzi în cod privilegiat care duce la execuția speculativă a instrucțiunilor. În eBPF, s-au găsit mai multe modalități de a genera astfel de instrucțiuni prin manipulări cu programe BPF transmise pentru execuție.

Vulnerabilitatea CVE-2020-27170 este cauzată de manipulări ale pointerilor în verificatorul BPF, provocând accese speculative în afara limitelor. Vulnerabilitatea CVE-2020-27171 este legată de o eroare de depășire a limitelor (întreg underflow) la gestionarea pointerilor, ceea ce duce la accese speculative în afara limitelor. Aceste probleme au fost deja remediate în versiunile de kernel 5.11.8, 5.10.25, 5.4.107, 4.19.182 și 4.14.227 și sunt incluse și în actualizările de kernel pentru majoritatea distribuțiilor. LinuxCercetătorii au dezvoltat un prototip de exploit care permite unui utilizator neprivilegiat să extragă date din memoria kernelului.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster