Появилась
версия свободной 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.
Источник: SecurityLab