Sårbarhed i eBPF-undersystemet, der tillader kodekørsel på Linux-kerneniveau

En sårbarhed (CVE-2021-4204) er blevet identificeret i eBPF-undersystemet, som giver dig mulighed for at køre handlere inde i Linux-kernen i en speciel virtuel maskine med JIT, hvilket tillader en lokal uprivilegeret bruger at opnå privilegieeskalering og udføre deres kode på Linux-kerneniveau. Problemet har opstået siden Linux-kernen 5.8 og forbliver uløst (inklusive version 5.16). Status for opdateringer, der genereres for at løse problemet i distributioner, kan spores på disse sider: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Det er blevet annonceret, at der er oprettet en fungerende udnyttelse, som er planlagt til at blive offentliggjort den 18. januar (brugere og udviklere har fået en uge til at rette op på sårbarheden).

Sårbarheden er forårsaget af ukorrekt verifikation af eBPF-programmer, der er sendt til eksekvering. eBPF-undersystemet leverer hjælpefunktioner, hvis korrekte brug verificeres af en speciel verifikator. Nogle funktioner kræver at sende en PTR_TO_MEM-værdi som et argument, og for at forhindre mulige bufferoverløb skal verifikatoren kende størrelsen af ​​den hukommelse, der er knyttet til argumentet. For funktionerne bpf_ringbuf_submit og bpf_ringbuf_discard blev data om størrelsen af ​​den overførte hukommelse ikke rapporteret til verifikatoren, som kunne bruges til at overskrive hukommelsesområder ud over buffergrænsen, når der udføres specialdesignet eBPF-kode.

For at udføre et angreb skal brugeren være i stand til at indlæse sit eget BPF-program, og mange nyere Linux-distributioner blokerer denne mulighed som standard (inklusive uprivilegeret adgang til eBPF er nu forbudt som standard i selve kernen, startende med version 5.16). For eksempel kan sårbarheden udnyttes i standardkonfigurationen i Ubuntu 20.04 LTS, men i miljøerne Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 og Fedora 33 vises den kun, hvis administratoren har indstillet parameteren kernel.unprivileged_bpf_disabled til 0. Som en løsning til at blokere sårbarheden kan du forhindre udførelse af BPF-programmer af uprivilegerede brugere med kommandoen "sysctl -w kernel.unprivileged_bpf_disabled=1".

Kilde: opennet.ru

Tilføj en kommentar