Den nye version af det frie UNIX-lignende operativsystem OpenBSD 7.4 er blevet præsenteret. OpenBSD-projektet blev grundlagt af Theo de Raadt i 1995 efter en konflikt med udviklerne af NetBSD, hvilket resulterede i, at Theo mistede adgangen til CVS-repositoriet for NetBSD. Efter dette skabte Theo de Raadt med en gruppe ligesindede et nyt åbent operativsystem baseret på kildetræet fra NetBSD, hvor de vigtigste mål for udviklingen blev bærbarhed (understøtter 13 hardwareplatforme), standardisering, korrekt funktion, proaktiv sikkerhed og integrerede kryptografiske midler. Størrelsen på den komplette installations-ISO af den grundlæggende OpenBSD 7.4-system er 630 MB.
Ud over selve operativsystemet er OpenBSD-projektet kendt for sine komponenter, der har fået udbredelse i andre systemer og har vist sig at være nogle af de sikreste og mest kvalitetsløsninger. Blandt dem er: LibreSSL (en fork af OpenSSL), OpenSSH, pakkefiltreringssystemet PF, routingdemonerne OpenBGPD og OpenOSPFD, NTP-serveren OpenNTPD, mailserveren OpenSMTPD, tekstterminalmultiplexer (svarende til GNU screen) tmux, identd-demonen med implementering af IDENT-protokollen, BSDL-alternativet til GNU groff - mandoc, protokollen til etablering af fejltolerante systemer CARP (Common Address Redundancy Protocol), Lette http-server og synkroniseringsværktøjet OpenRSYNC.
Hovedforbedringer:
- For arkitekturerne amd64 og i386 er der tilføjet komponenter til opdatering af mikrokoden til AMD-processorer. Nye versioner af mikrokoden installeres automatisk ved opstart. For distribution af binære filer med mikrokoden er der forberedt en port "ports/sysutils/firmware/amd". Installation af ny mikrokode foretages ved hjælp af det indbyggede værktøj fw_update. Lignende support til opdatering af mikrokoden for Intel-processorer blev implementeret i 2018 og blev tilbudt i udgivelsen OpenBSD 6.3.
- Beskyttelsesmekanismerne IBT (Indirect Branch Tracking, amd64) og BTI (Branch Target Identification, arm64) er blevet inkluderet i kernen og brugerens rum, som er designet til at blokere for brud på den normale udførelsesrækkefølge (control flow) som følge af udnyttelse, der ændrer de i hukommelsen gemte funktionspegere (den implementerede beskyttelse forhindrer ondsindet kode i at springe midt ind i en funktion).
- På systemer med arm64-arkitektur er der blevet inkluderet pegerautentifikation (Pointer Authentication) for at beskytte brugerens rum. Teknologien gør det muligt at bruge specialiserede ARM64-instruktioner til at kontrollere returadresser ved hjælp af digitale signaturer, der gemmes i de ubenyttede øverste bits af selve pegeren.
- Indstillingerne for systemkompilatoren clang samt clang og gcc fra ports er ændret for at implementere de nævnte beskyttelsesmekanismer, hvilket betydeligt har styrket sikkerheden for alle grundlæggende applikationer og de fleste applikationer fra ports mod exploits, der bruger metoder til returorienteret programmering (ROP — Return-Oriented Programming). Ved brug af ROP-teknikken forsøger angriberen ikke at placere sin egen kode i hukommelsen, men arbejder med allerede eksisterende maskininstruktionsstykker i de indlæste biblioteker, der ender med en returkontrolinstruktion (normalt slutningen af bibliotekets funktioner). Exploitens funktion går ud på at bygge en kæde af opkald af sådanne blokke ('gadgets') for at opnå den ønskede funktionalitet.
- En ny systemopkald kqueue1 er tilføjet, som adskiller sig fra kqueue ved at overføre flag. I øjeblikket understøtter kqueue1 kun flaget O_CLOEXEC (close-on-exec) for automatisk at lukke filbeskrivelser i børneprocessen efter kaldet til exec().
- For arkitekturerne amd64 og i386 er der implementeret support for pseudoudstyr dt til at organisere dynamisk sporing af systemet og applikationer. Der er tilføjet et systemopkald utrace til at indsætte brugerdefinerede logposter i ktrace.
- Fejlrettelser, der fjerner usikkert adfærd ved brug af MS-DOS-filsystemer, er overført fra FreeBSD.
- Muligheden for at montere softdep, der anvendes til udsat gruppering af metadataopdateringer, er deaktiveret.
- Programmer, der er beskyttet ved hjælp af systemopkaldet unveil, får tilladelse til at gemme core dumps i den nuværende arbejdsmappe.
- For ARM64-arkitekturen er muligheden for at gå ind i dybe inaktive tilstande (idle), tilgængelige i Apple M1/M2-chips, aktiveret for at spare energi og implementere hviletilstand.
- En omgåelse af beskyttelse mod Zenbleed-sårbarheden i AMD-processorer er blevet tilføjet.
- Støtten til multiprocessorsystemer (SMP) er forbedret. Funktionen arprequest(), koden til håndtering af indkommende ARP-pakker og implementeringen af naboidentifiering i IPv6-stakken er blevet befriet for låsninger.
- Grænsefladen til synkronisering af pfsync-pakkefiltertabellerne er blevet omskrevet for at forbedre arbejdet med låsninger og kompatibilitet med fremtidigt arbejde med parallelisering af netværksstakken.
- Implementeringen af DRM (Direct Rendering Manager) rammeværket er synkroniseret med Linux-kernen 6.1.55 (i den tidligere udgave — 6.1.15). Ydelsen er forbedret på systemer med Intel-processorer baseret på mikroarkitekturerne Alder Lake og Raptor Lake.
- Der er foretaget forbedringer i hypervisoren VMM. I vmd er der implementeret understøttelse af en multiprocessormodel for block- og netværks virtio-enheder. Der er tilføjet understøttelse af vektoreindgang/udgang i zero-copy mode til block virtio-enheden. Adgangen for gæstesystemer til AMD-processorer iht. p-state er begrænset. Ejere virtual machines har tilladelse til at overskrive det indlæste kerne via vmctl.
- En ny header-fil uchar.h er tilføjet med typerne char32_t og char16_t, samt funktionerne c32rtomb(), mbrtoc32(), c16rtomb() og mbrtoc16(), som er defineret i C11-standarden.
- I malloc-funktionen er der tilføjet en "D" mulighed for at identificere hukommelseslækager ved hjælp af ktrace ("MALLOC_OPTIONS=D ktrace -tu program") og kdump ("kdump -u malloc ...").
- Der er tilføjet understøttelse af variablen ${.VARIABLES} i make-kommandoen for at udskrive navnene på alle definerede globale variabler.
- I kdump-kommandoen er der tilføjet muligheden "-u" for at vælge utrace-tracesteder ved hjælp af en angivet label.
- Der er tilføjet mulighederne "—size-only" og "—ignore-times" i openrsync-kommandoen.
- I cron og crontab er der tilføjet understøttelse af tilfældige forskydninger, når der angives værdier indenfor intervaller med et givet trin, hvilket forhindrer samtidige anmodninger om ressourcer fra forskellige maskiner med de samme cron-regler. For eksempel vil angivelse af "0~59/30" eller "~/30" i minutfeltet føre til, at kommandoen køres to gange i timen gennem sekventielt tilfældigt valgte intervaller.
- Der er tilføjet muligheden for knap-mapping til to- eller tre-finger-tryk på touchpad'en i wsconsctl-kommandoen.
- Understøttelse af nyt hardware er blevet tilføjet, og nye drivere er inkluderet.
- Installation på systemer med armv7 og arm64-processorer er blevet forbedret.
- Understøttelsen af at indlæse filer fra EFI-systempartitionen (EFI System Partition) er blevet tilføjet.
- Installatoren har fået forbedret understøttelse af software RAID (softraid). Der er blevet tilføjet mulighed for at placere rodpartitionen i softraid på riscv64- og arm64-systemer. Softraid er tilføjet til ramdisk for powerpc64-arkitekturen. For arm64 er der implementeret understøttelse af disk-kryptering (Guided Disk Encryption).
- I malloc-funktionen er der tilføjet kontrol af alle blokke i listen over udskudt frigivelse af hukommelse for at identificere situationer med skrivning til frigivet hukommelsesområde.
- For executing the shutdown command, a user must now be added to the '_shutdown' group, allowing the separation of powers related to shutdown and direct reading from disk devices.
- Using the unveil system call, the patch utility is restricted to access only the current directory, the temporary files directory, and the files listed in the command line.
- Added sysctl net.inet6.icmp6.nd6_queued to show the number of packets waiting for ND6 responses (similar to ARP).
- When configuring an IPv6 address on a network interface, announcements are sent to neighboring routers via multicast address.
- Initial support added for TSO (TCP Segmentation Offload) and LRO (TCP Large Receive Offload) for processing segments and merging packets on the network card side.
- Booting from the pf packet filter rule kernel is accelerated by the pfctl utility. Processing of 'keep state' and 'nat-to' actions for ICMP error messages has been enabled.
- Checksum calculations for IP, TCP, and UDP have been disabled for loopback interfaces.
- Tilføjet tidlig understøttelse af VPN IPsec that depends on routing (route-based).
- Support for Flowspec has been added to bgpd (RFC5575, currently only supports the announcement of flowspec rules). The implementation of ASPA (Autonomous System Provider Authorization) has been aligned with the specifications of draft-ietf-sidrops-aspa-verification-16 and draft-ietf-sidrops-aspa-profile-16, and switched to using AFI-independent lookup tables.
- Performance of rpki-client has been improved by 30-50%. Added support for gzip and deflate compression.
- Updated packages for LibreSSL and OpenSSH. A detailed overview of improvements can be found in the reviews for LibreSSL 3.8.0, OpenSSH 9.4, and OpenSSH 9.5.
- The number of ports for the AMD64 architecture reached 11845 (up from 11764), for aarch64 — 11508 (down from 11561), for i386 — 10603 (up from 10572). Among the application versions in ports:
- 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
- Firefox 123.0.1, ESR 115.8.0
- GCC 8.4.0 og 11.2.0
- GHC 9.2.7
- GNOME 44
- Go 1.21.1
- JDK 8u382, 11.0.20, and 17.0.8
- KDE Applications 23.08.0
- KDE Frameworks 5.110.0
- Krita 5.1.5
- LLVM/Clang 13.0.0 and 16.0.6
- LibreOffice 7.6.2.1
- Lua 5.1.5, 5.2.4, 5.3.6, and 5.4.6
- MariaDB 10.9.6
- Mono 6.12.0.199
- Mozilla Firefox 118.0.1 and ESR 115.3.1
- Mozilla Thunderbird 115.3.1
- Mutt 2.2.12 and NeoMutt 20230517
- Node.js 18.18.0
- OpenLDAP 2.6.6
- PHP 7.4.33, 8.0.30, 8.1.24, and 8.2.11
- Postfix 3.7.3
- PostgreSQL 15.4
- Python 2.7.18, 3.9.18, 3.10.13, and 3.11.5
- Qt 5.15.10 and 6.5.2
- Ruby 3.1.4, 3.2.3, 3.3.0
- Ruby 3.0.6, 3.1.4, and 3.2.2
- Rust 1.72.1
- SQLite 3.42.0
- Suricata 7.0.3
- Sudo 1.9.14.2
- Suricata 6.0.12
- Tcl/Tk 8.5.19 og 8.6.13
- TeX Live 2022
- Vim 9.0.1897 and Neovim 0.9.1
- Xfce 4.18
- Komponenter fra tredjepartsudviklere, der indgår i OpenBSD 7.3, er opdateret:
- Xenocara graphical stack based on X.Org 7.7 with xserver 21.1.8 + patches, 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 (+ patches)
- GCC 4.2.1 (+ patches) og 3.3.6 (+ patches)
- Perl 5.36.1 (+ patches)
- NSD 4.7.0
- Unbound 1.18
- Ncurses 5.7
- Binutils 2.17 (+ patches)
- Gdb 6.3 (+ patch)
- Awk 12.9.2023
- Expat 2.5.0.
Kilde: opennet.ru
