В подсистеме io_uring, предназначенной для высокоэффективного асинхронного ввода-вывода в ядре Linux, обнаружена серьезная уязвимость, получившая идентификатор CVE-2025-39698. Этот дефект позволяет локальному непривилегированному пользователю выполнить произвольный код с правами ядра, что делает уязвимость критически опасной для систем, где используется io_uring.
Проблема заключается в том, что при обработке запросов в io_uring отсутствует корректная проверка существования объектов перед выполнением операций с ними. Это приводит к состоянию гонки или ошибке использования уже освобожденной памяти (use-after-free), что в свою очередь открывает возможность повышения привилегий. Подобные уязвимости особенно опасны, поскольку позволяют злоумышленнику выйти за пределы пользовательской среды и получить полный контроль над операционной системой.
Уязвимость уже устранена в обновлениях ядра Linux 6.16.4 и 6.12.44. Пользователям настоятельно рекомендуется обновить систему до последних стабильных версий ядра. В случае использования дистрибутивов с нестабильными или кастомными сборками ядра, проверьте наличие соответствующих патчей или временно отключите использование io_uring, если это возможно.
Разработчики основных дистрибутивов Linux — таких как Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo и Arch — уже начали работу над интеграцией исправлений. Однако стоит учитывать, что в ряде случаев патчи могут появиться с задержкой, особенно если речь идет о стабильных ветках дистрибутивов, где обновления проходят длительное тестирование. Пользователям важно следить за официальными обновлениями безопасности и устанавливать их как можно скорее.
Стоит отметить, что io_uring, хоть и является относительно новой подсистемой, уже не в первый раз оказывается в центре внимания из-за проблем с безопасностью. Высокая сложность кода, тесная интеграция с ядром и активное развитие делают её потенциальной мишенью для атакующих. Несмотря на то что io_uring предоставляет значительные преимущества в производительности, особенно для приложений с интенсивной работой с файлами и сетевыми соединениями, его использование должно сопровождаться повышенным вниманием к безопасности.
Интересно, что на мобильной платформе Android io_uring был исключен ещё в 2023 году. Следовательно, устройства на Android 15 и грядущей Android 16 не подвержены данной уязвимости, что подтверждает разумность решений разработчиков Android по ограничению использования небезопасных или нестабильных подсистем ядра. Это также демонстрирует различия в подходах к безопасности между мобильными и десктопными/серверными системами.
В контексте контейнеризации и виртуализации угрозу данная уязвимость также представляет. В случае, если вредоносный код запускается внутри контейнера с доступом к io_uring, возможна атака на уровень ядра хост-системы. Это особенно актуально для сред, где контейнеры запускаются с расширенными привилегиями или без должной изоляции. Решения типа gVisor или Kata Containers, предоставляющие дополнительный уровень изоляции, могут минимизировать риски эксплуатации подобных уязвимостей.
Подобные инциденты подчеркивают необходимость многоуровневого подхода к защите — от корректной настройки прав доступа до использования дополнительных средств защиты ядра, таких как SELinux, AppArmor и системных санитайзеров. Также важно регулярно проводить аудит безопасности и использовать механизмы контроля целостности системы.
Случай с CVE-2025-39698 также вызывает вопросы о процессе интеграции кода в основную ветку ядра Linux. Несмотря на то, что код io_uring проходит ревью и тестирование, подобные уязвимости показывают, что даже самые надежные процессы могут дать сбой. Это поднимает вопрос об усилении системы автоматического анализа и формальной верификации кода на этапе разработки, особенно для компонентов, работающих в пространстве ядра.
В сообществе безопасности уже давно существует мнение, что сложные и производительные интерфейсы, вроде io_uring, нуждаются в ещё более строгом контроле, так как они открывают прямой путь к критическим ресурсам системы. Поэтому стоит ожидать, что в будущем подобным подсистемам будут уделять ещё больше внимания как разработчики ядра, так и исследователи в области информационной безопасности.
Пользователям и администраторам серверов рекомендуется не только следить за обновлениями, но и временно ограничить использование io_uring, если нет срочной необходимости в его функциональности. Это может быть достигнуто через параметр загрузки ядра или изменение настроек безопасности в пользовательских приложениях.
В целом, инцидент с CVE-2025-39698 служит напоминанием о том, что производительность не должна идти в ущерб безопасности. Постоянное внимание к уязвимостям, своевременное обновление системы и использование защитных механизмов — ключевые элементы кибербезопасности в современном мире.



