Появиласьверсия свободной UNIX-подобной операционной системы OpenBSD 7.4 . Проект был основан Тэо де Раадтом в 1995 году после конфликта с разработчиками NetBSD, который привел к тому, что Тэо был лишен доступа к CVS-репозиторию NetBSD. Тогда он собрал команду единомышленников и создал новую открытую операционную систему на основе исходного кода NetBSD. Главные цели проекта стали -переносимость ( система работает на 13 разных платформах), стандартизация, надежность, безопасность и встроенные криптографические функции. Полный установочный ISO-образ базовой системы OpenBSD 7.4 занимает 630 МБ.
Проект OpenBSD также известен своими компонентами, которые были успешно внедрены в другие операционные системы и признаны одними из наиболее безопасных и качественных решений. Среди них можно выделить следующие: LibreSSL (вариант OpenSSL), OpenSSH , пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD , сервер точного времени OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстовых терминалов (аналог GNU screen) tmux , демон identd с реализацией протокола IDENT, альтернатива пакету GNU groff – mandoc , протокол CARP (Common Address Redundancy Protocol) для обеспечения надежности систем, легковесный HTTP-сервер и утилита синхронизации файлов OpenRSYNC.
В представленной версии системы есть много улучшений:
- Для архитектур amd64 и i386 добавлена поддержка обновления микрокода процессоров AMD. Новые версии микрокода теперь устанавливаются автоматически при загрузке системы. Для распространения бинарных файлов с микрокодом разработан порт “ports/sysutils/firmware/amd”. Установка нового микрокода выполняется с помощью утилиты fw_update.
- Добавлены механизмы защиты IBT (Indirect Branch Tracking, amd64) и BTI (Branch Target Identification, arm64) для ядра и пространства пользователя. Они предназначены для предотвращения нарушения нормального порядка выполнения при использовании эксплоитов, изменяющих хранимые в памяти указатели на функции ((реализованная защита не позволяет вредоносному коду выполнить переход на середину функции).
- На архитектуре arm64 введена поддержка аутентификации указателей (Pointer Authentication), которая использует специализированные инструкции ARM64 для проверки адресов возврата с помощью цифровых подписей, хранящихся в верхних битах указателя. Это улучшает безопасность системы.
- Настройки системного компилятора clang, а также clang и gcc из портов, изменены для применения вышеотмеченных механизмов защиты. Это значительно повышает безопасность базовых приложений и большинства приложений из портов от эксплоитов, использующих методы возвратно-ориентированного программирования (ROP – Return-Oriented Programming)
- Добавлен новый системный вызов kqueue1, который отличается от обычного kqueue передачей флагов. В настоящее время kqueue1 поддерживает только флаг O_CLOEXEC (close-on-exec) для автоматического закрытия файловых дескрипторов в дочерних процессах после вызова exec().
- Для архитектур amd64 и i386 добавлена поддержка псевдоустройства dt для организации динамической трассировки системы и приложений. Для вставки пользовательских записей в лог ktrace добавлен системный вызов utrace .
- Из FreeBSD перенесены исправления, устраняющие неопределенное поведение при использовании файловых систем MS-DOS.
- Отключена опция монтирования softdep, которая применяется для отложенной сгруппированной записи метаданных.
- Программам, защищенным с помощью системного вызова unveil, разрешено сохранять core-дампы в текущем рабочем каталоге.
- Для архитектуры ARM64 активирована поддержка глубоких состояний неактивности (idle), доступных в чипах Apple M1/M2, для более эффективного управления энергопотреблением.
- Добавлена дополнительная защита от уязвимости Zenbleed в процессорах AMD.
- Усовершенствована поддержка многопроцессорных систем (SMP). Избавлены от блокировок функция arprequest(), код обработки входных ARP-пакетов и реализация определения соседних узлов в стеке IPv6.
- Интерфейс синхронизации таблиц пакетного фильтра pfsync переписан для лучшей работы с блокировками и совместимости с будущими работами по распараллеливанию сетевого стека.
- Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 6.1.55, что улучшает работу на системах с процессорами Intel на базе микроархитектур Alder Lake и Raptor Lake.
- В гипервизор VMM введена поддержка многопроцессорной модели для блочных и сетевых virtio-устройств. Также добавлена поддержка векторного ввода/вывода в режиме zero-copy для блочных virtio-устройств. Ограничен доступ гостевых систем к режимам p-state процессоров AMD, а владельцам виртуальных машин разрешено переопределять загружаемое ядро через vmctl.
- Добавлен новый заголовочный файл uchar.h с типами char32_t и char16_t, а также соответствующими функциями, определенными в стандарте C11.
- Функция malloc теперь поддерживает опцию “D” для обнаружения утечек памяти при помощи ktrace (“MALLOC_OPTIONS=D ktrace -tu program”) и kdump (“kdump -u malloc …”).
- Утилита make получила поддержку переменной ${.VARIABLES} для вывода имён всех установленных глобальных переменных.
- В утилиту openrsync добавлены опции “–size-only” и “–ignore-times”.
- Теперь в cron и crontab поддерживаются случайные смещения при указании диапазонов значений с определенным шагом. Это позволяет избежать одновременных запросов ресурсов с разных машин, имеющих одинаковые правила в cron. Например, указание “059/30” или “/30” в поле с минутами приводит к запуску команды дважды в час через последовательные случайно выбранные интервалы.
- В утилиту wsconsctl добавлена возможность маппинга кнопок для нажатий двумя или тремя пальцами на кликпаде.
- Также в этой версии OpenBSD добавлена поддержка нового оборудования и включены новые драйверы.
- Установка на системы с процессорами armv7 и arm64 теперь улучшена, а также добавлена поддержка загрузки файлов из системного раздела EFI (EFI System Partition).
- В инсталляторе улучшена поддержка программных RAID (softraid), включая размещение корневого раздела в softraid на системах riscv64 и arm64. Softraid также добавлен в ramdisk для архитектуры powerpc64. Для arm64 реализована поддержка шифрования дисков (Guided Disk Encryption).
- Функция malloc теперь включает проверку всех блоков в списке отложенного освобождения памяти для выявления ситуаций записи в освобожденную область памяти.
- Для выполнения команды shutdown теперь требуется добавление пользователя в группу “_shutdown”, что позволяет разделить полномочия, связанные с завершением работы и прямым чтением с дисковых устройств.
- С использованием системного вызова unveil, утилита patch ограничена доступом только к текущему каталогу, каталогу со временными файлами и файлам, перечисленным в командной строке.
- Добавлен sysctl net.inet6.icmp6.nd6_queued для отображения числа пакетов, ожидающих ответа ND6 (по аналогии с ARP).
- При настройке адреса IPv6 на сетевом интерфейсе теперь отправляется анонс соседним маршрутизаторам по мультикаст адресу.
- Добавлена начальная поддержка TSO (TCP Segmentation Offload) и LRO (TCP Large Receive Offload) для обработки сегментов и объединения пакетов на стороне сетевой карты.
- Также ускорена загрузка правил пакетного фильтра pf утилитой pfctl, включая обработку действий “keep state” и “nat-to” для возвращаемых через ICMP сообщений об ошибках.
- Контрольные суммы IP, TCP и UDP больше не вычисляются для loopback-интерфейсов.
- В этой версии добавлена начальная поддержка VPN IPsec, зависящих от маршрутизации (route-based).
- В bgpd добавлена поддержка Flowspec (RFC5575) с анонсированием правил flowspec. Реализация ASPA (Autonomous System Provider Authorization) приведена к соответствию спецификациям draft-ietf-sidrops-aspa-verification-16 и draft-ietf-sidrops-aspa-profile-16, и переведена на использование поисковых таблиц, не зависящих от AFI (Address Family Indicator).
- Производительность rpki-client увеличена на 30-50%, добавлена поддержка сжатия gzip и deflate.
- Обновлены пакеты LibreSSL и OpenSSH.
- Число портов для архитектуры AMD64 составило 11845 (было 11764), для aarch64 – 11508 (было 11561), для i386 – 10603 (было 10572). Среди версий приложений в портах:
- Asterisk 16.30.1, 18.19.0б, 20.4.0
- Audacity 3.3.3
- CMake 3.27.5
- Chromium 117.0.5938.149
- Emacs 29.1
- FFmpeg 4.4.4
- GCC 8.4.0 и 11.2.0
- GHC 9.2.7
- GNOME 44
- Go 1.21.1
- JDK 8u382, 11.0.20 и 17.0.8
- KDE Applications 23.08.0
- KDE Frameworks 5.110.0
- Krita 5.1.5
- LLVM/Clang 13.0.0 и 16.0.6
- LibreOffice 7.6.2.1
- Lua 5.1.5, 5.2.4, 5.3.6 и 5.4.6
- MariaDB 10.9.6
- Mono 6.12.0.199
- Mozilla Firefox 118.0.1 и ESR 115.3.1
- Mozilla Thunderbird 115.3.1
- Mutt 2.2.12 и NeoMutt 20230517
- Node.js 18.18.0
- OpenLDAP 2.6.6
- PHP 7.4.33, 8.0.30, 8.1.24 и 8.2.11
- Postfix 3.7.3
- PostgreSQL 15.4
- Python 2.7.18, 3.9.18, 3.10.13 и 3.11.5
- Qt 5.15.10 и 6.5.2
- R 4.2.3
- Ruby 3.0.6, 3.1.4 и 3.2.2
- Rust 1.72.1
- SQLite 3.42.0
- Shotcut 23.07.29
- Sudo 1.9.14.2
- Suricata 6.0.12
- Tcl/Tk 8.5.19 и 8.6.13
- TeX Live 2022
- Vim 9.0.1897 и Neovim 0.9.1
- Xfce 4.18
- Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.3:
- LLVM/Clang 13.0.0 (+ патчи)
- GCC 4.2.1 (+ патчи) и 3.3.6 (+ патчи)
- Perl 5.36.1 (+ патчи)
- NSD 4.7.0
- Unbound 1.18
- Ncurses 5.7
- Binutils 2.17 (+ патчи)
- Gdb 6.3 (+ патч )
- Awk 12.9.2023
- Expat 2.5.0.