Kwesbaarheid in die eBPF-substelsel wat kode-uitvoering op die Linux-kernvlak moontlik maak

'n Kwesbaarheid (CVE-2021-4204) is geïdentifiseer in die eBPF-substelsel, wat hanteerders binne die Linux-kern in 'n spesiale virtuele masjien met JIT laat hardloop, wat 'n plaaslike onbevoorregte gebruiker toelaat om voorregte-eskalasie en uitvoering van hul kode by die vlak van die Linux-kern. Die probleem manifesteer sedert die Linux 5.8-kern en bly onopgelos (insluitend vrystelling 5.16). Die status van die generering van opdaterings met die uitskakeling van die probleem in verspreidings kan op hierdie bladsye opgespoor word: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Die skepping van 'n werkende uitbuiting word aangekondig, wat beplan word om op 18 Januarie gepubliseer te word (gebruikers en ontwikkelaars het 'n week gegee om die kwesbaarheid reg te stel).

Die kwesbaarheid word veroorsaak deur die verkeerde nagaan van eBPF-programme wat vir uitvoering ingedien is. Die eBPF-substelsel bied hulpfunksies, waarvan die korrektheid deur 'n spesiale verifieerder nagegaan word. Sommige funksies vereis dat die waarde van PTR_TO_MEM as 'n argument deurgegee word, en om moontlike bufferoorvloei te voorkom, moet die verifieerder die grootte van die geheue wat met die argument geassosieer word, ken. Vir die bpf_ringbuf_submit- en bpf_ringbuf_discard-funksies is data oor die grootte van die oorgedra geheue nie aan die verifieerder gerapporteer nie, wat gebruik kan word om geheue-areas buite die buffergrens te oorskryf wanneer spesiaal vervaardigde eBPF-kode uitgevoer word.

Om 'n aanval uit te voer, moet die gebruiker sy BPF-program kan laai, en baie onlangse Linux-verspreidings blokkeer dit by verstek (insluitend onbevoorregte toegang tot eBPF word nou by verstek in die kern self verbied, begin met vrystelling 5.16). Die kwesbaarheid kan byvoorbeeld in die verstekkonfigurasie op Ubuntu 20.04 LTS uitgebuit word, maar in die Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 en Fedora 33-omgewings verskyn slegs as die administrateur ingestel het die kernel.unprivileged_bpf_disabled parameter na 0. As 'n oplossing vir die blokkering van die kwesbaarheid, kan jy die uitvoering van BPF programme deur onbevoorregte gebruikers deaktiveer met die "sysctl -w kernel.unprivileged_bpf_disabled=1" opdrag.

Bron: opennet.ru

Voeg 'n opmerking