eBPF-i alamsüsteemis on avastatud kaks uut haavatavust, mis lubab käitlejaid kernelis käivitada. Linux в специальной виртуальной машине с JIT. Обе уязвимость дают возможность выполнить свой код с правами ядра, вне изолированной виртуальной машины eBPF. Информацию о проблемах опубликовала команда Zero Day Initiative, проводящая соревнования Pwn2Own, в ходе которых в этом году были продемонстрированы три атаки на Ubuntu Linux, в которых использовались ранее неизвестные уязвимости (связаны ли уявзимости в eBPF с данными атаками не сообщается).
- CVE-2021-3490 – haavatavus on põhjustatud 32-bitise piiridest väljapoole kontrollimise puudumisest eBPF ALU32 bitipõhise JA-, VÕI- ja XOR-toimingute tegemisel. Ründaja saab seda viga ära kasutada andmete lugemiseks ja kirjutamiseks väljaspool eraldatud puhvri piire. Probleem XOR-i operatsioonidega ilmneb alates kerneli versioonist 5.7-rc1 ning AND ja OR - alates versioonist 5.10-rc1.
- CVE-2021-3489 – haavatavus on põhjustatud tõrkest helinapuhvri juurutamisel ja selle põhjuseks on asjaolu, et funktsioon bpf_ringbuf_reserve ei kontrollinud võimalust, et eraldatud mälupiirkonna suurus võib olla tegelikust väiksem. ringbufist. Probleem ilmneb alates versioonist 5.8-rc1.
Статус исправления уязвимостей в дистрибутивах можно проследить на данных страницах: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Исправления также доступны в виде патчей (CVE-2021-3489, CVE-2021-3490). Возможность эксплуатации проблемы зависит от доступности пользователю системного вызова eBPF. Например, в конфигурации по умолчанию в RHEL для эксплуатации уязвимости требуется наличие у пользователя прав CAP_SYS_ADMIN.
Отдельно можно отметить ещё одну уязвимость в ядре Linux — CVE-2021-32606, позволяющую локальному пользователю поднять свои привилегии до уровня root. Проблема проявляется начиная с ядра Linux 5.11 и вызвана состоянием гонки в реализации протокола CAN ISOTP, которое даёт возможность изменить параметры привязки к сокету из-за отсутствия установки должных блокировок в функции isotp_setsockopt() при обработке флага CAN_ISOTP_SF_BROADCAST.
Pärast ISOTP-pesa sulgemist jääb kehtima sidumine adressaadi sokliga, mis võib jätkata pesaga seotud struktuuride kasutamist pärast nendega seotud mälu vabastamist (kasutus-pärast-vaba isotp_sock struktuuri kutse tõttu mis on isotp_rcv() kutsumisel juba vabastatud). Andmetöötluse abil saate alistada funktsiooni sk_error_report() kursori ja käivitada oma koodi kerneli tasemel.
Allikas: opennet.ru
