Представлен выпуск свободной 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 для перебора содержимого каталогов.
- Из базовой системы удалён старый 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 для получения префиксов 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 (+ патчи)
Источник: opennet.ru