Выпуск OpenBSD 7.6

Представлен выпуск свободной UNIX-подобной операционной системы OpenBSD 7.6. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, проактивная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 7.6 составляет 702 МБ.

Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff – mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol), легковесный http-сервер, утилита синхронизации файлов OpenRSYNC.

Основные улучшения:

  • Расширена поддержка архитектуры ARM64. Включена поддержка ARM8-расширения EPAN (Enhanced Privileged Access Never), блокирующего привилегированный доступ к страницам памяти, используемым только для исполнения кода. Добавлена поддержка процессора Qualcomm Snapdragon X Elite (X1E80100) и реализовано определение CPU Cortex-A520AE (Hayes AE) и Cortex-A720AE (Hunter AE). Для систем на базе архитектуры ARM64 реализована защита от уязвимостей класса Spectre-V4, а также улучшена защита от уязвимостей Spectre-BHB.
  • Для систем на базе архитектуры AMD64 добавлена поддержка инструкций AVX-512. Реализована защита от уязвимости RFDS в процессорах Intel Atom.
  • Добавлена поддержка платы Milk-V Pioneer на базе архитектуры RISC-V.
  • Удалён механизм msyscall, применяемый для пометки областей памяти из которых допускается выполнение системных вызовов. На смену msyscall пришли системные вызовы mimmutable и pinsyscalls.
  • Проведена работа по улучшению поддержи энергосберегающих состояний S0 и перехода в спящий режим на современном оборудовании. На системах amd64 реализован режим “suspend-to-idle”, который можно применять на оборудовании без поддержки спящего режима S3. Решены многие проблемы в драйверах, мешавшие использованию спящего режима.
  • В системный вызов readdir добавлена проверка на наличие символа ‘/’ в именах файлов для блокирования возможных атак на приложения при работе с не заслуживающими доверия файловыми системами.
  • Усовершенствована поддержка многопроцессорных систем (SMP). Добавлены возможности по параллельной обработке на разных ядрах CPU входящих UDP -пакетов и raw-сокетов IPv4/IPv6. Улучшена работа с блокировками для сокетов unix4 и UDP. Переведены на новую схему работы с блокировками
    сокеты AF_ROUTE. Избавлен от глобальной блокировки системные вызовы shutdown, sigsuspend и kbind, а также таймеры TCP и многие sysctl.
  • Внесены улучшения в гипервизор VMM. Добавлена поддержка механизма AMD SEV (Secure Encrypted Virtualization) для защиты виртуальных машин от вмешательства со стороны гипервизора или администратора хост-системы. Улучшен доступ к возможностям CPU из виртуальных машин. В vmctl добавлена команда “status -r” для показа состояния только запущенных виртуальных машин.
  • Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 6.6.52 (в прошлом выпуске – 6.6.19). В драйвере inteldrm реализована поддержка GPU, применяемого в процессорах Intel на базе микроархитектуры Meteor Lake.
  • Из FreeBSD перенесена функция scandirat для перебора содержимого каталогов.
  • Добавлен sysctl-параметр “net.inet.tcp.nodelay” для отключения алгоритма Нейгла, используемого для агрегирования мелких сообщений с целью снижения трафика. В современных высокоскоростных сетях использование алгоритма Нейгла может принести больше вреда чем пользы. Параметр действует на уровне всей системы и избавляет разработчиков приложений от выставления флага TCP_NODELAY для отдельных сокетов.
  • Из базовой системы удалён старый DHCP-клиент dhclient, вместо которого предлагается использовать постоянно запущенный фоновый процесс dhcpleased, поставляющийся начиная с OpenBSD 6.9 и использующий утилиту ifconfig для включения автоконфигурации сетевых интерфейсов через DHCP (включается через запуск “ifconfig $if autoconf” или добавление “inet autoconf” в /etc/hostname.$if).
  • Запрещено использование символа с нулевым кодом в shell-скриптах, обрабатываемых используемым по умолчанию командным интерпретатором ksh. Наличие нулевых символов в скриптах теперь будет приводить к завершению выполнения с выводом ошибки, за исключением случаев их размещения среди данных, прикреплённых в конце файла следом за кодом.
  • Утилита tar переведена на использование по умолчанию формата PAX при создании архивов. Использование формата PAX даст возможность сохранять более длинные имена файлов, обрабатывать ссылки, использовать точные сведения о времени и помещать в архив файлы очень большого размера.
  • В состав X11-стека Xenocara, применяемого в OpenBSD для формирования графического окружения, добавлена библиотека libva, позволяющая использовать программный интерфейс VA-API (Video Acceleration API) для аппаратного ускорения кодирования и декодирования видео в различных форматах. Работа аппаратного ускорения протестирована с драйверами для GPU Intel и AMD при использовании браузера Firefox и видеопроигрывателя mpv. Необходимые для работы драйверы для GPU Intel предложены в портах graphics/intel-media-driver и graphics/intel-vaapi-driver, а для работы с GPU AMD используются штатные компоненты из состава Mesa.
  • Предоставлена возможность запуска среды рабочего стола KDE Plasma 6.
  • Добавлена поддержка нового оборудования и включены в состав новые драйверы, связанные с компонентами различных SoC и поддержкой Ethernet-контроллеров. В драйверы igc и dwqe добавлена поддержка аппаратного тэггирования VLAN, а в драйверах dwqe, vmx, igc и vio(4) обеспечен вынос выполнения сетевых операций на сторону сетевых карт.
  • В компилятор добавлена опция “-fret-clean”, выполняющая очистку адреса возврата в стеке после завершения вызова.
  • Обеспечена работа PPP-интерфейсов в домене маршрутизации (rdomain).
  • Для IPv6 добавлен режим “sysctl net.inet6.ip6.forwarding = 2”, разрешающий перенаправление пакетов только для IPsec.
  • В функцию getsockopt() добавлена поддержка флага SO_ACCEPTCONN, позволяющего проверить был ли выполнен для сокета вызов функции listen().
  • В iked, реализации протокола IKEv2 для IPsec, добавлена поддержка аутентификации, авторизации и аккаунтинга через протокол RADIUS.
  • В RADIUS-сервер radiusd добавлена поддержка DAE (Dynamic Authorization Extensions), а также возможность размещения настроек аккаунтинга в radiusd.conf. Добавлены модули: radiusd_ipcp для настройки пула IP-адресов, radiusd_file для аутентификации через локальный файл. В radiusctl добавлена команда “ipcp delete” для удаления определённого сеанса без разрыва соединения.
  • В OpenSMTPD добавлен API smtpd-tables использования таблиц в smtpd и реализован сервис K_AUTH для извлечения учётных данных из таблиц.
  • Добавлен фоновый процесс dhcp6leased для получения префиксов (8), a IPv6 от серверов DHCPv6.
  • Обновлён OpenSSH. Список изменений можно посмотреть в анонсах OpenSSH 9.8 и OpenSSH 9.9.
  • Число портов для архитектуры AMD64 составило : 12312 (было 12309), для aarch64 – 12148 (было 12145), для i386 – 10534 (было 10830). Среди версий приложений в портах:
    • Asterisk 16.30.1, 18.24.3, 20.9.3
    • Audacity 3.6.3
    • CMake 3.30.1
    • Chromium 128.0.6613.137
    • Emacs 29.4
    • FFmpeg 4.4.5
    • GCC 8.4.0 и 11.2.0
    • GHC 9.6.6
    • GNOME 46
    • Go 1.23.1
    • JDK 8u402, 11.0.24, 17.0.12 и 21.0.4
    • KDE Applications 24.05.2
    • KDE Frameworks 6.5.0
    • KDE Plasma 6.1.4
    • Krita 5.2.3
    • LLVM/Clang 13.0.0, 16.0.6 и 17.0.6
    • LibreOffice 24.8.1.2
    • Lua 5.1.5, 5.2.4, 5.3.6 и 5.4.7
    • MariaDB 10.9.8
    • Mono 6.12.0.199
    • Mozilla Firefox 130.0.1 и ESR 128.2.0
    • Mozilla Thunderbird 128.2.3
    • Node.js 20.17.0
    • OpenLDAP 2.6.8
    • PHP 8.1.29, 8.2.23 и 8.3.11
    • Postfix 3.9.0
    • PostgreSQL 16.4
    • Python 2.7.18, 3.11.10
    • Qt 5.15.13 (+ патчи от kde) и 6.6.3
    • R 4.4.1
    • Ruby 3.1.6, 3.2.5 и 3.3.5
    • Rust 1.81.0
    • SQLite 3.44.2
    • Shotcut 24.04.28
    • Sudo 1.9.15.5
    • Suricata 7.0.6
    • Tcl/Tk 8.5.19 и 8.6.13
    • TeX Live 2023
    • Vim 9.1.707 и Neovim 0.10.1
    • Xfce 4.18.1
  • Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.6:
    • Графический стек Xenocara на базе X.Org 7.7 с xserver 21.1.13 + патчи, freetype 2.13.2, fontconfig 2.14.2, Mesa 23.3.6, xterm 393, xkeyboard-config 2.20, fonttosfnt 1.2.3.
    • LLVM/Clang 16.0.6 (+ патчи)
    • GCC 4.2.1 (+ патчи) and 3.3.6 (+ патчи)
    • Perl 5.38.2 (+ патчи)
    • NSD 4.9.1
    • Unbound 1.21.0
    • Ncurses 6.4
    • Binutils 2.17 (+ патчи)
    • Gdb 6.3 (+ патчи)
    • Awk от 28 июля 2024 г.
    • Expat 2.6.3
    • zlib 1.3.1 (+ патчи)
Release. Ссылка here.