Zaprezentowano wydanie wolnego systemu operacyjnego podobnego do UNIX-a OpenBSD 7.3. Projekt OpenBSD został założony przez Theo de Raadta w 1995 roku po konflikcie z deweloperami NetBSD, w wyniku którego Theo stracił dostęp do repozytorium CVS NetBSD. Po tym incydencie Theo de Raadt z grupą współpracowników stworzył nowy otwarty system operacyjny oparty na drzewie źródłowym NetBSD, którego głównymi celami rozwoju stały się przenośność (obsługiwane są 13 platform sprzętowych), standaryzacja, poprawne działanie, proaktywne bezpieczeństwo oraz zintegrowane narzędzia kryptograficzne. Rozmiar pełnego instalacyjnego obrazu ISO podstawowego systemu OpenBSD 7.3 wynosi 620 MB.
Oprócz samego systemu operacyjnego, projekt OpenBSD znany jest z komponentów, które zyskały popularność w innych systemach i zostały uznane za jedne z najbardziej bezpiecznych oraz jakościowych rozwiązań. Wśród nich znajduje się: LibreSSL (fork OpenSSL), OpenSSH, filtr pakietów PF, demony routingu OpenBGPD i OpenOSPFD, serwer NTP OpenNTPD, pocztowy OpenSMTPD, multiplexer terminali tekstowych (odpowiednik GNU screen) tmux, demon identyfikacji identd z implementacją protokołu IDENT, alternatywa pakietu GNU groff - mandoc, protokół organizacji systemów odpornych na awarie CARP (Common Address Redundancy Protocol), lekki serwer http, oraz narzędzie do synchronizacji plików OpenRSYNC. serwer OpenSMTPD, multiplexer terminali tekstowych (odpowiednik GNU screen) tmux, demon identd z realizacją protokołu IDENT, BSDL-alternatywa dla pakietu GNU groff — mandoc, protokół organizujący systemy odporne na awarie CARP (Common Address Redundancy Protocol), lekki serwer http, narzędzie do synchronizacji plików OpenRSYNC.
Zaimplementowano wywołania systemowe waitid (oczekiwanie na zmianę stanu procesu), pinsyscall (do przekazywania informacji o punkcie wejścia execve w celu ochrony przed exploitami ROP), getthrname i setthrname (uzyskiwanie i ustalanie nazwy wątku).
- Dla wszystkich architektur zastosowano clockintr, planista przerwań od zegara niezależny od sprzętu.
- Dodano sysctl kern.autoconf_serial, który można wykorzystać do śledzenia zmian w stanie drzewa urządzeń w jądrze z przestrzeni użytkownika.
- Udoskonalono wsparcie dla systemów wieloprocesorowych (SMP). Filtry zdarzeń dla urządzeń tun i tap przekształcono w mp-safe. Usunięto blokady funkcji select, pselect, poll, ppoll, getsockopt, setsockopt, mmap, munmap, mprotect, sched_yield, minherit oraz utrace, a także ioctl SIOCGIFCONF, SIOCGIFGMEMB, SIOCGIFGATTR oraz SIOCGIFGLIST. Ulepszono zarządzanie blokadami w filtrze pakietów pf. Zwiększono wydajność systemu oraz stosu sieciowego w systemach wielordzeniowych.
- Udoskonalono wsparcie dla systemów SMP. Filtry zdarzeń dla urządzeń tun i tap zostały przetworzone na mp-safe. Osiągnięto usunięcie blokad z funkcji select, pselect, poll, ppoll, getsockopt, setsockopt, mmap, munmap, mprotect, sched_yield, minherit i utrace oraz ioctl SIOCGIFCONF, SIOCGIFGMEMB, SIOCGIFGATTR i SIOCGIFGLIST. Zoptymalizowano obsługę blokad w filtrze pakietów pf. Zwiększono wydajność systemu i stosu sieciowego na wielordzeniowych systemach.
- Realizacja frameworka drm (Direct Rendering Manager) została zsynchronizowana z jądem Linux 6.1.15 (w poprzedniej wersji — 5.15.69). Do sterownika amdgpu dodano obsługę GPU Ryzen 7000 „Raphael”, Ryzen 7020 „Mendocino”, Ryzen 7045 „Dragon Range”, Radeon RX 7900 XT/XTX „Navi 31”, Radeon RX 7600M (XT), 7700S i 7600S „Navi 33”. W amdgpu dodano wsparcie dla zarządzania podświetleniem tła i zapewniono działanie xbacklight przy użyciu sterownika X.Org modesetting. W Mesa domyślnie włączono buforowanie shaderów.
- Wprowadzono ulepszenia w hipernadzorze VMM.
- Zrealizowano możliwości dodatkowej ochrony pamięci procesów w przestrzeni użytkownika: wywołanie systemowe mimmutable oraz związana z nim funkcja biblioteczna, umożliwiająca zablokowanie praw dostępu podczas odbicia w pamięci (memory mappings). Po zablokowaniu, ustawione dla obszaru pamięci prawa, na przykład, zakaz zapisu i wykonywania, nie mogą być później zmienione przez kolejne wywołania funkcji mmap(), mprotect() i munmap(), które przy próbie zmiany zwrócą błąd EPERM.
- Na architekturze AMD64 dla wywołań systemowych włączono mechanizm ochrony RETGUARD, mający na celu utrudnienie realizacji exploitów opartych na kradzieży kawałków kodu i technikach programowania opartego na powrotach.
- Włączono ochronę przed wykorzystywaniem luk, opartą na losowej rekonfiguracji pliku wykonywalnego sshd przy każdym uruchomieniu systemu. Rekonfiguracja sprawia, że przesunięcia funkcji w sshd stają się mało przewidywalne, co utrudnia tworzenie exploitów wykorzystujących metody programowania opartego na powrotach.
- Zapewniono bardziej agresywną randomizację lokalizacji stosu w systemach 64-bitowych.
- Dodano ochronę przed luką Spectre-BHB w mikroarchitektonicznych strukturach procesorów.
- Na procesorach ARM64 dla przestrzeni użytkownika i jądra wykorzystano flagę DIT (Data Independent Timing) w celu zablokowania ataków przez kanały boczne, manipulujących zależnością czasu wykonania instrukcji od danych przetwarzanych w tych instrukcjach.
- Umożliwiono użycie lladdr przy określaniu konfiguracji sieciowych. Na przykład, oprócz wiązania z nazwą interfejsu (hostname.fxp0) można użyć wiązania z adresem MAC (hostname.00:00:6e:00:34:8f).
- Ulepszono wsparcie dla przejścia w tryb uśpienia dla systemów opartych na architekturze ARM64.
- Znacząco rozszerzono wsparcie dla procesorów ARM firmy Apple.
- Dodano wsparcie dla nowego sprzętu oraz włączono nowe sterowniki.
- W sterowniku bwfm dla bezprzewodowych kart opartych na chipach Broadcom i Cypress wprowadzono wsparcie dla szyfrowania WEP.
- W instalatorze poprawiono obsługę programowego RAID oraz wprowadzono początkowe wsparcie dla szyfrowania dysków (Guided Disk Encryption).
- W tmux („terminal multiplexer”) dodano nowe polecenia scroll-top i scroll-bottom do przewijania kursora na początek i koniec. Zaktualizowano pakiety LibreSSL i OpenSSH. Szczegółowy przegląd ulepszeń można zobaczyć w przeglądach LibreSSL 3.7.0, OpenSSH 9.2 i OpenSSH 9.3.
- Liczba portów dla architektury AMD64 wyniosła 11764 (wcześniej 11451), dla aarch64 — 11561 (wcześniej 11261), dla i386 — 10572 (wcześniej 10225). Wśród wersji aplikacji w portach:
- Asterisk 16.30.0, 18.17.0 i 20.2.0
- Audacity 3.2.5
- CMake 3.25.2
- Chromium 111.0.5563.110
- Emacs 28.2
- FFmpeg 4.4.3
- GCC 8.4.0 i 11.2.0
- GHC 9.2.7
- GNOME 43.3
- Go 1.20.1
- JDK 8u362, 11.0.18 i 17.0.6
- KDE Gears 22.12.3
- KDE Frameworks 5.103.0
- Krita 5.1.5
- LLVM/Clang 13.0.0
- LibreOffice 7.5.1.2
- Lua 5.1.5, 5.2.4, 5.3.6 i 5.4.4
- MariaDB 10.9.4
- Mono 6.12.0.182
- Mozilla Firefox 111.0 i ESR 102.9.0
- Mozilla Thunderbird 102.9.0
- Mutt 2.2.9 i NeoMutt 20220429
- Node.js 18.15.0
- OCaml 4.12.1
- OpenLDAP 2.6.4
- PHP 7.4.33, 8.0.28, 8.1.16 i 8.2.3
- Postfix 3.5.17 i 3.7.3
- PostgreSQL 15.2
- Python 2.7.18, 3.9.16, 3.10.10 i 3.11.2
- Qt 5.15.8 i 6.4.2
- R 4.2.1
- Ruby 3.0.5, 3.1.3 i 3.2.1
- Rust 1.68.0
- SQLite 2.8.17 i 3.41.0
- Shotcut 22.12.21
- Sudo 1.9.13.3
- Suricata 6.0.10
- Tcl/Tk 8.5.19 i 8.6.13
- TeX Live 2022
- Vim 9.0.1388 i Neovim 0.8.3
- Xfce 4.18
- Zaktualizowano komponenty od zewnętrznych producentów, wchodzące w skład OpenBSD 7.3:
- Grafika Xenocara oparta na X.Org 7.7 z xserver 1.21.6 + poprawkami, freetype 2.12.1, fontconfig 2.14, Mesa 22.3.4, xterm 378, xkeyboard-config 2.20, fonttosfnt 1.2.2.
- LLVM/Clang 13.0.0 (+ poprawki)
- GCC 4.2.1 (+ poprawki) i 3.3.6 (+ poprawki)
- Perl 5.36.1 (+ poprawki)
- NSD 4.6.1
- Unbound 1.17
- Ncurses 5.7
- Binutils 2.17 (+ poprawki)
- Gdb 6.3 (+ poprawka)
- Awk 12.9.2022
- Expat 2.5.0.
Źródło: opennet.ru
