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

Обнаружена 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, через который может быть эксплуатирована уязвимость. 

Подпишитесь на новости

VPN через VK, MAX и DNS: Rawline собрал разные туннели в одном клиенте

Когда один способ подключения перестаёт работать, начинается перебор приложений: здесь VLESS, там DNS-туннель, отдельно — транспорт через звонки. Разработчик Rawline решил собрать этот набор в одном клиенте для Android, Windows, Linux и macOS. За основу взяты Throne и сетевые ядра sing-box и Xray.

Как устроен проект и какие проблемы безопасности пришлось решать, автор рассказал на Хабре.

Помимо привычных VPN-протоколов, Rawline поддерживает нестандартные транспорты через звонки VK и MAX, WebRTC, DNS и S3. Все подключения представлены обычными профилями, их можно импортировать по ссылке или QR-коду, проверять пинг, объединять в цепочки и настраивать маршрутизацию по приложениям и доменам. Работоспособность конкретного способа при ограничениях придётся проверять на своей сети.


Отдельный акцент — защита от приложений, исключённых из VPN. По словам автора, через незащищённый локальный прокси или прямое обращение к интерфейсу туннеля они могут отправить запрос через VPN и узнать адрес сервера.


В Rawline разработчик убрал лишние прокси-входы, защитил внутренние соединения случайными паролями и добавил проверку принадлежности трафика приложениям. Последняя защита включена по умолчанию на Android 10 и новее.

При проверке также обнаружилась проблема в нескольких транспортных мостах: постороннее приложение могло первым отправить UDP-пакет и перехватить канал. Автор сообщает, что исправил её и добавил тесты. Код и сборки опубликованы на GitHub.

RSS: Новости на портале Anti-Malware.ru