Уязвимость в eBPF, позволяющая выполнить код на уровне ядра Linux

В подсистеме eBPF, позволяющей запускать обработчики внутри ядра Linux в специальной виртуальной машине с JIT, выявлена уязвимость (CVE-2021-3600), позволяющая локальному непривилегированному пользователю добиться выполнения своего кода на уровне ядра Linux. Проблема вызвана некорректным усечением 32-разрядных регистров при выполнении операций “div” и “mod”, что может привести к чтению и записи данных за границей выделенной области памяти.

Уязвимость внесена в некорректном исправлении 32-разрядного деления на ноль в выпуске 4.15, которое также было бэкпортировано в ветки 4.4.x, 4.9.x и 4.14.x. Эксплуатация уязвимости возможна для ядер, начиная с версии 4.14, в которой был изменён метод отслеживании значений в верификаторе BPF. Проблема устранена в ядре Linux 5.11. Исправление бэкпортировано в ветки 5.10.x и 5.4.x, но не перенесено в ветки 4.19.x и 4.14.x. Обновление с исправлением уязвимости выпущено для Ubuntu и Debian Sid. Проявляется ли проблема в SUSE и RHEL пока не ясно.

Release. Ссылка here.