Wprowadzono wydanie wolnego systemu operacyjnego podobnego do UNIX - OpenBSD 7.6. Projekt OpenBSD został założony przez Theo de Raadta w 1995 roku po konflikcie z programistami NetBSD, w wyniku którego Theo stracił dostęp do repozytorium CVS NetBSD. Po tym incydencie Theo de Raadt wraz z grupą podobnie myślących osób stworzył nowy otwarty system operacyjny oparty na drzewie źródłowym NetBSD, którego głównymi celami rozwoju stały się przenośność (wsparcie dla 13 platform sprzętowych), standaryzacja, poprawna praca, proaktywnym zabezpieczeniem i zintegrowane środki kryptograficzne. Rozmiar pełnego obraz ISO instalacyjnego podstawowego systemu OpenBSD 7.6 wynosi 702 MB.
Oprócz samego systemu operacyjnego, projekt OpenBSD znany jest ze swoich komponentów, które zyskały popularność w innych systemach i ugruntowały swoją pozycję jako jedno z najbardziej bezpiecznych i jakościowych rozwiązań. Należą do nich: LibreSSL (fork OpenSSL), OpenSSH, filtr pakietów PF, demony routingu OpenBGPD i OpenOSPFD, serwer NTP OpenNTPD, serwer pocztowy OpenSMTPD, multiplexer terminali tekstowych (analog GNU screen) tmux, demon identd z implementacją protokołu IDENT, BSDL-alternatywa dla pakietu GNU groff — mandoc, protokół do organizacji systemów odpornych na awarie CARP (Common Address Redundancy Protocol), oraz 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).
- Rozszerzono wsparcie dla architektury ARM64. Dodano wsparcie dla rozszerzenia EPAN (Enhanced Privileged Access Never), które blokuje prywatny dostęp do stron pamięci wykorzystywanych tylko do wykonywania kodu. Wprowadzono wsparcie dla procesora Qualcomm Snapdragon X Elite (X1E80100) oraz zrealizowano detekcję CPU Cortex-A520AE (Hayes AE) i Cortex-A720AE (Hunter AE). Dla systemów opartych na architekturze ARM64 wprowadzono ochronę przed podatnościami klasy Spectre-V4 oraz poprawiono zabezpieczenia przed podatnościami Spectre-BHB.
- Dla systemów opartych na architekturze AMD64 dodano wsparcie dla instrukcji AVX-512. Wprowadzono ochronę przed podatnością RFDS w procesorach Intel Atom.
- Dodano wsparcie dla płyty Milk-V Pioneer opartej na architekturze RISC-V.
- Usunięto mechanizm msyscall, stosowany do oznaczania obszarów pamięci, z których dozwolone są wywołania systemowe. Na miejsce msyscall wprowadzono wywołania systemowe mimmutable i pinsyscalls.
- Przeprowadzono prace mające na celu poprawę wsparcia dla oszczędnych stanów S0 oraz przejścia w tryb uśpienia na nowoczesnym sprzęcie. Na systemach amd64 realizowany jest tryb 'suspend-to-idle', który można zastosować w sprzęcie bez wsparcia dla trybu suspend S3. Rozwiązano wiele problemów w sterownikach, które utrudniały korzystanie z trybu uśpienia.
- Do wywołania systemowego readdir dodano sprawdzenie obecności znaku '/' w nazwach plików w celu zablokowania możliwych ataków na aplikacje podczas pracy z niewiarygodnymi systemami plików.
- Udoskonalone wsparcie dla systemów wieloprocesorowych (SMP). Dodano możliwości równoległego przetwarzania przychodzących pakietów UDP i raw-socketów IPv4/IPv6 na różnych rdzeniach CPU. Poprawiono działanie blokad dla socketów unix4 i UDP. Sockety AF_ROUTE zostały przerobione na nowy schemat pracy z blokadami. Usunięto globalne blokady z systemowych wywołań shutdown, sigsuspend i kbind, a także z timerów TCP i wielu sysctl.
- Wprowadzono ulepszenia w hipernadorze VMM. Dodano wsparcie dla mechanizmu AMD SEV (Secure Encrypted Virtualization), służącego do ochrony maszyn wirtualnych przed ingerencją ze strony hipernadzorcy lub administratora systemu hosta. Ulepszono dostęp do możliwości CPU z maszyn wirtualnych. W vmctl dodano komendę "status -r" do wyświetlania statusu tylko uruchomionych maszyn wirtualnych.
- Implementacja frameworka drm (Direct Rendering Manager) została zsynchronizowana z jądrem Linux 6.6.52 (w poprzedniej wersji — 6.6.19). W sterowniku inteldrm zrealizowano wsparcie dla GPU stosowanego w procesorach Intel opartych na mikroarchitekturze Meteor Lake.
- Funkcja scandirat została przeniesiona z FreeBSD do iteracji zawartości katalogów.
- Stary klient DHCP dhclient został usunięty z systemu podstawowego, zamiast tego rekomenduje się użycie stale działającego procesu w tle dhcpleased, wprowadzonego od OpenBSD 6.9, który wykorzystuje narzędzie ifconfig do włączania autokonfiguracji interfejsów sieciowych przez DHCP (włączane przez uruchomienie „ifconfig $if autoconf” lub dodanie „inet autoconf” do /etc/hostname.$if).
- Użycie symbolu z zerowym kodem w skryptach shellowych, przetwarzanych przez domyślny interpreter poleceń ksh, jest zabronione. Obecność zerowych symboli w skryptach teraz skutkuje zakończeniem wykonania z komunikatem o błędzie, z wyjątkiem przypadków umieszczenia ich w danych dołączonych na końcu pliku po kodzie.
- Narzędzie tar przestawiono na domyślne wykorzystanie formatu PAX przy tworzeniu archiwów. Użycie formatu PAX umożliwia zachowanie dłuższych nazw plików, przetwarzanie odnośników, korzystanie z dokładnych informacji o czasie oraz archiwizowanie bardzo dużych plików.
- Do zestawu X11 Xenocara, wykorzystywanego w OpenBSD do tworzenia środowiska graficznego, dodano bibliotekę libva, która umożliwia korzystanie z interfejsu API VA-API (Video Acceleration API) do sprzętowego przyspieszania kodowania i dekodowania wideo w różnych formatach. Działanie przyspieszenia sprzętowego zostało przetestowane z sterownikami dla GPU Intel i AMD przy użyciu przeglądarki Firefox i odtwarzacza wideo mpv. Potrzebne do działania sterowniki dla GPU Intel są dostępne w portach graphics/intel-media-driver i graphics/intel-vaapi-driver, a dla działania z GPU AMD wykorzystuje się standardowe komponenty z Mesa.
- Umożliwiono uruchomienie środowiska pulpitu KDE Plasma 6.
- Dodano wsparcie dla nowego sprzętu oraz włączono nowe sterowniki związane z różnymi SoC i wsparciem dla kontrolerów Ethernet. W sterownikach igc i dwqe dodano wsparcie dla sprzętowego tagowania VLAN, a w sterownikach dwqe, vmx, igc i vio(4) zapewniono przeniesienie wykonania operacji sieciowych na stronę kart sieciowych.
- Do kompilatora dodano opcję „-fret-clean”, która czyści adres zwracany na stosie po zakończeniu wywołania.
- Zapewniono działanie interfejsów PPP w domenie routingu (rdomain).
- Dla IPv6 dodano tryb „sysctl net.inet6.ip6.forwarding = 2”, który zezwala na przekazywanie pakietów wyłącznie dla IPsec.
- Do funkcji getsockopt() dodano wsparcie dla flagi SO_ACCEPTCONN, która pozwala sprawdzić, czy dla gniazda wykonano wywołanie funkcji listen().
- W iked, implementacji protokołu IKEv2 dla IPsec, dodano wsparcie dla uwierzytelniania, autoryzacji i rachunkowości poprzez protokół RADIUS.
- W serwerze RADIUS radiusd dodano wsparcie dla DAE (Dynamic Authorization Extensions), a także możliwość umieszczania ustawień rachunkowości w radiusd.conf. Dodano moduły: radiusd_ipcp do konfiguracji puli, radiusd_file do uwierzytelniania przez lokalny plik. W radiusctl dodano polecenie „ipcp delete” do usunięcia określonej sesji bez przerywania połączenia. adresów IPW OpenSMTPD dodano API smtpd-tables do użycia tabel w smtpd oraz zaimplementowano usługę K_AUTH do pobierania danych uwierzytelniających z tabel.
- Dodano proces działający w tle dhcp6leased do uzyskiwania prefiksów IPv6 od
- DHCPv6. serwerów Zaktualizowano OpenSSH. Lista zmian jest dostępna w ogłoszeniach OpenSSH 9.8 i OpenSSH 9.9.
- Liczba portów dla architektury AMD64 wyniosła 12312 (wcześniej 12309), dla aarch64 — 12148 (wcześniej 12145), dla i386 — 10534 (wcześniej 10830). Wśród wersji aplikacji w portach:
- Asterisk 16.30.1, 18.24.3, 20.9.3
- Audacity 3.6.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 i 11.2.0
- GHC 9.6.6
- GNOME 46
- Go 1.23.1
- JDK 8u402, 11.0.24, 17.0.12 i 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 i 17.0.6
- LibreOffice 24.8.1.2
- Lua 5.1.5, 5.2.4, 5.3.6 i 5.4.7
- MariaDB 10.9.8
- Mono 6.12.0.199
- Mozilla Firefox 130.0.1 i 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 i 8.3.11
- Postfix 3.9.0
- PostgreSQL 16.4
- Python 2.7.18, 3.11.10
- Qt 5.15.13 (+ poprawki z kde) i 6.6.3
- R 4.4.1
- Ruby 3.1.6, 3.2.5 i 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 i 8.6.13
- TeX Live 2023
- Vim 9.1.707 i Neovim 0.10.1
- Xfce 4.18.1
- Zaktualizowane komponenty od zewnętrznych deweloperów wchodzące w skład OpenBSD 7.6:
- Stos graficzny Xenocara oparty na X.Org 7.7 z xserver 21.1.13 + poprawki, 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 (+ łatki)
- GCC 4.2.1 (+ łatki) i 3.3.6 (+ łatki)
- Perl 5.38.2 (+ poprawki)
- NSD 4.9.1
- Unbound 1.21.0
- Ncurses 6.4
- Binutils 2.17 (+ poprawki)
- Gdb 6.3 (+ łatki)
- Awk od 28 lipca 2024 r.
- Expat 2.6.3
- zlib 1.3.1 (+ łatki)
Źródło: opennet.ru
