Обнаружена root-уязвимость в реализации сокетов AF_PACKET в ядре Linux

Обнаружена root-уязвимость в реализации сокетов AF_PACKET в ядре Linux

Исследователи безопасности из группы Zero, созданной компанией Google для предотвращения атак, совершаемых с использованием ранее неизвестных уязвимостей, опубликовали технику эксплуатации уязвимости (CVE-2017-7308) в ядре Linux.

Она позволяет поднять свои привилегии в системе через передачу специально оформленных параметров при манипуляции с RAW-сокетами AF_PACKET.

Уязвимость проявляется в ядрах до 4.10.6 при включении сокетов AF_PACKET с поддержкой кольцевых буферов TPACKET_V3 ( "CONFIG_PACKET=y", в большинстве дистрибутивов включены по умолчанию). Проблема была выявлена в результате fuzzing-тестирования системных вызовов ядра Linux. Опубликован прототип эксплоита, работоспособного в Ubuntu 16.04.2 с ядром 4.8.0-41-generic с включенными механизмами защиты KASLR, SMEP и SMAP, пишет opennet.ru.

Уязвимость вызвана целочисленным переполнением в функции packet_set_ring() для сокетов AF_PACKET. Примечательно, что это вторая уязвимость в packet_set_ring() за последнее время, похожая проблема (CVE-2016-8655) была выявлена в конце прошлого года. Для атаки злоумышленник должен иметь полномочия CAP_NET_RAW, которые необходимы для создания сокетов AF_PACKET. В Ubuntu и Fedora данные полномочия можно получить через использование пространств имён идентификаторов пользователей (user namespace), которые включёны по умолчанию.

В Ubuntu и Fedora проблема была устранена в апрельском обновлении пакетов с ядром. Для SUSE 12 и openSUSE исправление было выпущено несколько дней назад. Red Hat Enterprise Linux 5/6 и SUSE 11, проблеме не подвержены, а в RHEL 7 и Debian для эксплуатации требуется явное предоставление полномочий CAP_NET_RAW. В Android право создавать сокеты AF_PACKET имеет процесс mediaserver, через который может быть эксплуатирована уязвимость. 

Подпишитесь
в Facebook

Я уже с вами