Проект OpenBSD опубликовал патчи, закрывающие критическую уязвимость в ядре операционной системы. Проблема, зарегистрированная как CVE-2026-57589, затрагивает реализацию системных вызовов для работы с семафорами System V (sem) и может быть использована непривилегированным локальным пользователем для получения прав root на системе с конфигурацией по умолчанию.
Уязвимость CVE-2026-57589
Ошибка заключается в обращении к уже освобождённой памяти (use-after-free) в функции sys_semget(). В определённых условиях при переключении контекста после вызова tsleep ядро обращается к участку памяти, который к этому моменту уже мог быть освобождён и переиспользован. Потенциальная атака может привести к выполнению произвольного кода на уровне ядра, что даёт злоумышленнику полный контроль над системой. Согласно шкале CVSSv3.1, уязвимость получила оценку 7,4 (высокий уровень опасности).
Примечательно, что дефект присутствовал в коде на протяжении 23 лет - с момента добавления поддержки семафоров System V в ядро OpenBSD. Выявлена проблема была в рамках инициативы Patch the Planet, нацеленной на проверку открытых проектов с помощью моделей искусственного интеллекта, предоставленных компанией OpenAI. Это не первый случай, когда автоматизированный анализ кода находит скрытые уязвимости в проектах с длительной историей разработки.
Помимо CVE-2026-57589, в этот же пакет исправлений (выпуск 005 в списке errata) вошли несколько дополнительных проблем, которые не получили отдельных идентификаторов CVE, но также имеют отношение к безопасности. В частности, усилена проверка входных данных в коде IPsec и IPComp - недостаточная валидация могла приводить к аварийной остановке ядра, что создаёт условия для отказа в обслуживании. Также исправлено двойное освобождение памяти (double-free) в сервере NFS, что в некоторых сценариях способно повредить структуры ядра и открыть путь для локальной эскалации привилегий. Кроме того, устранены повреждения памяти, связанные с некорректной работой блокировок в функциях pinsyscall и kbind - ранее эти сбои могли приводить к утечкам информации и нестабильности системы.
Набор исправлений под номером 004, выпущенный одновременно, дополнительно закрывает несколько проблем с утечками информации и сбоями синхронизации, в том числе в механизмах pinsyscall и kbind. Разработчики отмечают, что эти ошибки были классифицированы как относящиеся к надёжности, а не к безопасности, однако в ряде контекстов их эксплуатация могла бы облегчить проведение более целенаправленных атак.
Для всех поддерживаемых релизов OpenBSD - от версии 7.0 до 7.9 - подготовлены исходные патчи, подписанные с помощью утилиты signify. Пользователи могут применить их вручную, следуя приложенным инструкциям, либо воспользоваться утилитой syspatch, которая устанавливает бинарные обновления. Полные бинарные обновления доступны для архитектур amd64, i386 и arm64; на других платформах выпускаются только машинно-независимые патчи, что в данном случае не требуется - все исправления затрагивают базовое ядро. Обновления также включены в ветку -stable, которая поддерживается в течение года после выхода релиза.
Важно отметить, что уязвимость может быть проэксплуатирована только локальным пользователем, уже имеющим доступ к системе. Тем не менее, в многопользовательских средах, на серверах с общим хостингом или в инфраструктуре, где допускается выполнение кода сторонними лицами, риск сохраняется. Поскольку для атаки не требуется никаких дополнительных привилегий, а конфигурация по умолчанию системы не предусматривает защиты от этого вектора, администраторам настоятельно рекомендуется установить патчи при первой возможности.
Текущая ситуация подчёркивает, насколько долгоживущими могут быть уязвимости даже в тщательно проверяемых кодовых базах. OpenBSD традиционно славится своим вниманием к безопасности и аудиту исходного кода, однако обнаружение 23-летней ошибки с помощью автоматизированного анализа показывает, что человеческий глаз не всегда способен заметить сложные дефекты, связанные с состояниями гонки и управлением памятью. Вероятно, в ближайшее время проекты с открытым исходным кодом будут всё активнее внедрять инструменты на основе искусственного интеллекта для поиска подобных проблем на ранних этапах.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-57589
- https://github.com/openbsd/src/commit/1957873d2063db11dab780eca75b5e629d1e838d
- https://ftp.openbsd.org/pub/OpenBSD/patches/7.9/common/005_sysv.patch.sig
- https://www.openbsd.org/errata79.html