20 апреля, 2024

Локальная root-уязвимость в ядре Linux CVE-2016-8655

В ядре Linux обнаружена локальная уязвимость (CVE-2016-8655), позволяющая локальному непривилегированному пользователю выполнить код с правами root. В том числе, уязвимость может быть использована для выхода за пределы изолированных контейнеров, работающих с использованием пространств имён идентификаторов пользователей. Рабочий прототип эксплоита подготовлен для Ubuntu 14.04/16.04 c ядром Linux 4.4 и работает независимо от активации механизмов защиты SMEP/SMAP (Supervisor Mode Execution Prevention/Supervisor Mode Access Prevention).

Проблема вызвана состоянием гонки в коде net/packet/af_packet.c и присутствует, начиная с выпуска ядра Linux 3.2-rc1, представленного в августе 2011 года. Уязвимость затрагивает функцию packet_set_ring() и позволяет через манипуляции с кольцевым буфером TPACKET_V3 осуществить обращение по уже освобождённому указателю функции, что может быть эксплутаировано для запуска кода на уровне ядра Linux.

Для атаки пользователь должен иметь полномочия по созданию сокетов AF_PACKET, которые предоставляются при наличии прав CAP_NET_RAW. В Debian, Red Hat Enterprise Linux и, возможно, в некоторых других дистрибутивах (требуется уточнение информации) проблема проявляется только при предоставлении администратором прав CAP_NET_RAW и активации поддержки пространств имён идентификаторов пользователей (user namespaces, sysctl kernel.unprivileged_userns_clone=1), которая отключена по умолчанию. В Ubuntu и Fedora режим user namespaces включен по умолчанию, но для атаки по-прежнему требуется получение полномочий CAP_NET_RAW. На платформе Android право создавать сокеты AF_PACKET имеет процесс mediaserver, через который может быть эксплуатирована уязвимость.

Патч с исправлением уязвимости принят в состав ядра Linux 4.9-rc8. Обновления пакетов пока выпущены только для Ubuntu. Проблема остаётся неисправленной в Fedora, openSUSE, Debian, CentOS/RHEL 7, SUSE Linux Enerprise 12. Уязвимость не затрагивает SLE 11, RHEL 5 и RHEL 6.

Дополнительно можно отметить публикацию обновления для платформы Android, в котором устранено шесть критических уязвимостей, из которых три затрагивают ядро Linux, две драйвер NVIDIA и одна модуль для чипов Qualcomm). Уязвимости могут привести к выполнению кода с правами ядра. Эксплоиты для данных уязвимостей пока не сформированы, но информация о проблемах и код патчей уже доступны публично. Из проблем не отнесённых к категории критических, также отмечаются более 20 уязвимостей, которые дают возможность организовать выполнение кода с правами текущего процесса или позволяют поднять свои привилегии через манипуляции с различными подсистемами (kernel file system, HTC sound codec, MediaTek driver, Qualcomm codec, Qualcomm camera driver, NVIDIA libomx, libziparchive, Smart Lock, Telephony, Wi-Fi, Qualcomm sound driver и т.п.).

Читать также:  Уязвимость в северокорейском Linux-дистрибутиве Red Star

Также продолжается история с уязвимостями в GStreamer: чтобы показать, что упомянутые в первом отчёте проблемы не единичны, Крис Эванс (Chris Evans) выявил ещё шесть уязвимостей в декодировщиках форматов FLIC и vmnc, позволяющие организовать выполнение кода при открытии специально оформленных файлов. Также предложен пример создания нового работающего эксплоита для прошлой уязвимости, некорректно исправленной в Fedora Linux.

Добавить комментарий