Ошибки в Linux-реализации QoS позволяют локально повысить права до root

Ошибки в Linux-реализации QoS позволяют локально повысить права до root

Ошибки в Linux-реализации QoS позволяют локально повысить права до root

В подсистеме Linux, отвечающей за управление трафиком, выявлены две уязвимости, позволяющие локальному пользователю поднять свои привилегии в системе. Для предотвращения эксплойта в ядро ветки 6.2 внесены изменения; проверка дистрибутивов уже запущена, результаты доступны на сайтах проектов.

Обе уязвимости, по словам автора находок, классифицируются как использование освобожденной памяти, use-after-free. Проблемным оказался код классификатора трафика tcindex, входящего в состав QoS. (Эта служба позволяет приоритезировать трафик при ограниченной пропускной способности и свести к минимуму задержки по сети.)

Уязвимость CVE-2023-1281, привнесенная в Linux с выпуском сборки 4.14, проявляется при обновлении несовершенных хеш-фильтров; причиной появления ошибки use-after-free является состояние гонки. Проблема CVE-2023-1829 более давняя, она возникает при удалении оптимального хеш-фильтра и грозит повышением привилегий до root.

Эксплойт возможен при наличии прав CAP_NET_ADMIN, позволяющих получить разрешение на создание и изменение классификаторов трафика. Такой набор прав можно получить, когда имеется возможность создавать пространства имен идентификаторов пользователя (user namespace).

Степень опасности угрозы в обоих случаях оценена в 7,8 балла CVSS. Уязвимости устранены в Linux-ветке 6.2 (комменты ee059170b1f7e94e55fa6cadee544e176a6e59c2 и 8c710f75256bb3cf05ac7b1672c82b92c43f3d28, патч для CVE-2023-1829 бэкпортирован). В качестве временной меры можно отключить возможность создания user namespace непривилегированными пользователями (sudo sysctl -w kernel.unprivileged_userns_clone=0).

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

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