Dobësitë në nënsistemin eBPF të kernelit Linux

Një dobësi (CVE-2021-29154) u identifikua në nënsistemin eBPF, i cili ju lejon të ekzekutoni mbajtësit për gjurmimin, analizimin e funksionimit të nënsistemeve dhe menaxhimin e trafikut, të ekzekutuar brenda kernelit Linux në një makinë virtuale speciale me JIT, e cila lejon një përdorues lokal për të arritur ekzekutimin e kodit të tyre në nivelin e kernelit. Problemi shfaqet deri në lëshimin e 5.11.12 (përfshirë) dhe nuk është rregulluar ende në shpërndarje (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Rregullimi është i disponueshëm si patch.

Sipas studiuesve që identifikuan cenueshmërinë, ata ishin në gjendje të zhvillonin një prototip funksional të shfrytëzimit për sistemet 32- dhe 64-bit x86, i cili mund të përdoret nga një përdorues i paprivilegjuar. Megjithatë, Red Hat vëren se ashpërsia e problemit varet nëse thirrja e sistemit eBPF është e aksesueshme për përdoruesin. Për shembull, në RHEL dhe në shumicën e shpërndarjeve të tjera Linux në konfigurimin e paracaktuar, dobësia mund të shfrytëzohet nëse BPF JIT është aktivizuar dhe përdoruesi ka të drejta CAP_SYS_ADMIN. Si një zgjidhje, rekomandohet të çaktivizoni BPF JIT duke përdorur komandën: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problemi shkaktohet nga një gabim në llogaritjen e kompensimit për instruksionet e degës gjatë procesit të gjenerimit të kodit të makinës të përpiluesit JIT. Në veçanti, kur gjenerohen instruksionet e degës, nuk merret parasysh që kompensimi mund të ndryshojë pas kalimit në fazën e optimizimit. Ky defekt mund të përdoret për të gjeneruar kod anormal të makinës dhe për ta ekzekutuar atë në nivelin e kernelit.

Vlen të përmendet se kjo nuk është dobësia e vetme në nënsistemin eBPF kohët e fundit. Në fund të marsit, dy dobësi të tjera u identifikuan në kernel (CVE-2020-27170, CVE-2020-27171), duke bërë të mundur përdorimin e eBPF për të anashkaluar mbrojtjen kundër dobësive të klasës Spectre, të cilat lejojnë përcaktimin e përmbajtjes së kujtesës së kernelit si rezultat i krijimit të kushteve për kryerjen spekulative të veprimeve të caktuara . Sulmi Spectre kërkon praninë e një sekuence të caktuar komandash në kodin e privilegjuar që çon në ekzekutimin spekulativ të udhëzimeve. Në eBPF, janë gjetur disa mënyra për të gjeneruar udhëzime të tilla përmes manipulimeve me programet BPF të transmetuara për ekzekutim.

Dobësia CVE-2020-27170 shkaktohet nga manipulimi i treguesit në verifikuesin BPF që shkakton operacione spekulative për të hyrë në një zonë jashtë kufijve të tamponit. Dobësia CVE-2020-27171 është për shkak të një gabimi të rrjedhjes së numrit të plotë kur punoni me tregues, duke çuar në akses spekulativ në të dhënat jashtë tamponit. Këto probleme tashmë janë rregulluar në versionet e kernelit 5.11.8, 5.10.25, 5.4.107, 4.19.182 dhe 4.14.227, dhe janë përfshirë gjithashtu në përditësimet e kernelit për shumicën e shpërndarjeve Linux. Studiuesit kanë përgatitur një shfrytëzim prototip që lejon një përdorues të paprivilegjuar të nxjerrë të dhëna nga memoria e kernelit.

Burimi: opennet.ru

Shto një koment