Представен е новият вариант на свободната UNIX-подобна операционна система OpenBSD 7.4. Проектът OpenBSD е основан от Тео де Раадт през 1995 година след конфликт с разработчиците на NetBSD, в резултат на който Тео е лишен от достъп до CVS репозитория на NetBSD. След това Тео де Раадт заедно с група съмишленици създава нова отворена операционна система на базата на изходния код на NetBSD, като основните цели на развитието са преносимост (поддържат се 13 хардуерни платформи), стандартизация, правилна работа, проактивна сигурност и интегрирани криптографски средства. Размерът на пълния инсталационен ISO файл на базовата система OpenBSD 7.4 е 630 MB.
Освен самата операционна система, проектът 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.
Основни подобрения:
- За архитектури amd64 и i386 са добавени компоненти за актуализиране на микрокода на процесорите AMD. Новите версии на микрокода се инсталират автоматично при зареждане. Подготвен е порт за разпространение на бинарните файлове с микрокода „ports/sysutils/firmware/amd“. Инсталирането на новия микрокод се извършва с помощта на утилитата fw_update. Подобна поддръжка за актуализиране на микрокода за процесори Intel бе реализирана през 2018 година и предложена в версията OpenBSD 6.3.
- За ядрото и пространството за потребителя са включени механизми за защита IBT (Indirect Branch Tracking, amd64) и BTI (Branch Target Identification, arm64), предназначени за блокиране на нарушаването на нормалния ред на изпълнение (control flow) в резултат на експлойти, които променят съхраняваните в паметта указатели на функции (реализираната защита не позволява на злонамерения код да извърши преход на средата на функцията).
- На системи с архитектура arm64 за защита на потребителското пространство е активирана автентикацията на указатели (Pointer Authentication). Технологията позволява използването на специализирани инструкции ARM64 за проверка на адресите на връщане с помощта на цифрови подписи, които се съхраняват в неизползваните горни битове на самия указател.
- Настройките на системния компилатор clang, както и clang и gcc от портовете, са променени за прилагане на по-горе споменатите механизми за защита, което значително усилва защитата на всички основни приложения и повечето приложения от портовете от експлоити, използващи методи на Programming Return-Oriented (ROP). При използването на техниката ROP нападателят не се опитва да разположи собствен код в паметта, а работи с вече налични в заредените библиотеки парченца машинни инструкции, завършващи с инструкция за връщане на управление (обикновено това са краища на библиотечни функции). Работата на експлоита се свежда до изграждане на верига от повиквания на подобни блокове („гаджети“) за получаване на необходимата функционалност.
- Добавен е нов системен повик 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 (в предишната версия — 6.1.15). Подобрена е работата на системи с Intel процесори, базирани на микроархитектурите Alder Lake и Raptor Lake.
- Внесени са подобрения в хипервизора VMM. В vmd е реализирана поддръжка на многопроцесорна модел за блочни и мрежови virtio устройства. В блочното virtio устройство е добавена поддръжка на векторен вход/изход в режим zero-copy. Ограничен е достъпът на гостуващите системи до p-state режимите на AMD процесорите. на виртуални машини На собствениците е разрешено да презареждат ядрото чрез vmctl.
- Добавен е нов заглавен файл uchar.h с типовете char32_t и char16_t, както и функциите c32rtomb(), mbrtoc32(), c16rtomb() и mbrtoc16(), определени в стандарта C11.
- В функцията malloc е добавена опция "D" за определяне на течове на паметта чрез ktrace ("MALLOC_OPTIONS=D ktrace -tu program") и kdump ("kdump -u malloc …").
- В утилитата make е добавена поддръжка на променливата ${.VARIABLES} за извеждане на имената на всички зададени глобални променливи.
- В утилитата kdump е добавена опция "-u" за избор на точки на трасировка utrace по зададена етикет.
- В утилитата openrsync са добавени опциите "—size-only" и "—ignore-times".
- В cron и crontab е добавена поддръжка на случайни отклонения при указване на диапазони с зададена стъпка, което позволява да се избегнат едновременни заявки за ресурс от различни машини с идентични правила в cron. Например, указването на "0~59/30" или "~/30" в полето за минути ще доведе до изпълнение на командата два пъти на час чрез последователно избрани случайни интервали.
- В утилитата wsconsctl е добавена възможност за мапиране на бутони за натискания с два или три пръста на кликпад.
- Добавена е поддръжка за ново оборудване и нови драйвери.
- Подобрена е инсталацията на системи с 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 в мрежовия интерфейс е осигурено изпращането на анонс към съседните маршрутизатори на multicast адрес.
- Добавена е начална поддръжка за 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. Подробен обзор на подобренията можете да видите в прегледите на LibreSSL 3.8.0, OpenSSH 9.4 и OpenSSH 9.5.
- Броят на портовете за архитектурата 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:
- Графичният стек Xenocara на базата на X.Org 7.7 с xserver 21.1.8 + патчи, freetype 2.13.0, fontconfig 2.14.2, Mesa 22.3.7, xterm 378, xkeyboard-config 2.20, fonttosfnt 1.2.2.
- 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.
Източник: opennet.ru
