De release van het vrije UNIX-achtige besturingssysteem OpenBSD 7.4 is gepresenteerd. Het OpenBSD-project werd opgericht door Theo de Raadt in 1995 na een conflict met de ontwikkelaars van NetBSD, waardoor Theo de toegang tot de CVS-repository van NetBSD werd ontzegd. Vervolgens creëerde Theo de Raadt met een groep medestanders een nieuw open besturingssysteem op basis van de broncode van NetBSD, waarvan de belangrijkste ontwikkelingsdoelen draagbaarheid (ondersteuning voor 13 hardwareplatforms), standaardisatie, correcte werking, proactieve beveiliging en geïntegreerde cryptografische middelen zijn. De grootte van de volledige installatie-ISO van het basisbesturingssysteem OpenBSD 7.4 is 630 MB.
Naast het besturingssysteem zelf, is het OpenBSD-project bekend om zijn componenten die populair zijn geworden in andere systemen en zich hebben bewezen als een van de veiligste en hoogst kwalitatieve oplossingen. Onder deze componenten zijn: LibreSSL (fork van OpenSSL), OpenSSH, het packetfilter PF, de routeringsdemons OpenBGPD en OpenOSPFD, de NTP-server OpenNTPD, de mailserver OpenSMTPD, de multiplexor voor tekstterminals (vergelijkbaar met GNU screen) tmux, de identd-demons met implementatie van het IDENT-protocol, de BSDL-alternatief voor het GNU groff-pakket — mandoc, het protocol voor het organiseren van redundante systemen CARP (Common Address Redundancy Protocol), en de lichte http-server en het bestandssynchronisatieprogramma OpenRSYNC.
Hoofdverbeteringen:
- Voor architecturen amd64 en i386 zijn componenten toegevoegd voor het updaten van de microcode voor AMD-processoren. Nieuwe versies van de microcode worden automatisch geïnstalleerd bij het opstarten. Voor het verspreiden van binaire bestanden met microcode is de poort "ports/sysutils/firmware/amd" voorbereid. De installatie van de nieuwe microcode gebeurt met de standaard utility fw_update. Een soortgelijke ondersteuning voor het updaten van de microcode voor Intel-processoren werd in 2018 geïmplementeerd en aangeboden in de release van OpenBSD 6.3.
- Voor de kernel en de gebruikersruimte zijn de beschermingsmechanismen IBT (Indirect Branch Tracking, amd64) en BTI (Branch Target Identification, arm64) ingeschakeld, die bedoeld zijn om verstoringen van de normale uitvoeringsvolgorde (control flow) te blokkeren als gevolg van exploits die de in het geheugen opgeslagen functiewijzers wijzigen (de geïmplementeerde bescherming voorkomt dat kwaadaardige code naar het midden van een functie springt).
- Op systemen met de architectuur arm64 is pointer authenticatie (Pointer Authentication) ingeschakeld ter bescherming van de gebruikersruimte. Deze technologie maakt gebruik van gespecialiseerde ARM64-instructies om terugkeeradressen te verifiëren met behulp van digitale handtekeningen, die zijn opgeslagen in de ongebruikte bovenste bits van de pointer zelf.
- De instellingen van de systeemcompiler clang, evenals clang en gcc uit de ports, zijn gewijzigd voor de toepassing van de bovengenoemde beveiligingsmechanismen, wat de bescherming van alle basisapplicaties en de meeste applicaties uit de ports tegen exploits die gebruikmaken van Return-Oriented Programming (ROP) aanzienlijk heeft versterkt. Bij het gebruik van de ROP-techniek probeert de aanvaller zijn code niet in het geheugen te plaatsen, maar opereert met reeds bestaande stukken machine-instructies die eindigen met een return-instructie (meestal de eindigen van bibliotheekfuncties). Het werk van de exploit bestaat uit het opbouwen van een keten van aanroepen van dergelijke blokken ('gadgets') om de gewenste functionaliteit te verkrijgen.
- Een nieuwe systeemaanroep kqueue1 is toegevoegd, die verschilt van kqueue door de overdracht van vlaggen. Momenteel ondersteunt kqueue1 alleen de vlag O_CLOEXEC (close-on-exec) voor het automatisch sluiten van bestand descriptors in het kindproces na een exec() aanroep.
- Voor de architecturen amd64 en i386 is ondersteuning voor het pseudo-apparaat dt geïmplementeerd voor dynamische tracering van het systeem en applicaties. Een systeemaanroep utrace is toegevoegd voor het invoegen van gebruikersrecords in de ktrace-log.
- Correcties zijn uit FreeBSD overgenomen die onbepaald gedrag bij het gebruik van MS-DOS-bestandssystemen oplossen.
- De optie voor het montagesysteem softdep, gebruikt voor uitgestelde gegroepeerde schrijfacties van metadata, is uitgeschakeld.
- Programma's die zijn beveiligd met de systeemaanroep unveil, mogen core-dumps opslaan in de huidige werkdirectory.
- Voor de ARM64-architectuur is de mogelijkheid om over te schakelen naar diepe inactiviteitsstaten (idle), beschikbaar in Apple M1/M2-chips, ingeschakeld voor energiebesparing en het realiseren van een slaapstand.
- Een work-around bescherming tegen de Zenbleed-kwetsbaarheid in AMD-processoren is toegevoegd.
- De ondersteuning voor multiprocessorsystemen (SMP) is verbeterd. De functie arprequest(), de code voor de verwerking van inkomende ARP-pakketten en de implementatie van de detectie van naburige knooppunten in de IPv6-stack zijn ontdaan van vergrendelingen.
- De synchronisatie-interface van de pfsync pakketfiltertabellen is herschreven ter verbetering van de werking met vergrendelingen en compatibiliteit met toekomstig werk aan het paralleliseren van de netstack.
- De implementatie van het DRM (Direct Rendering Manager) framework is gesynchroniseerd met de Linux-kernel 6.1.55 (in de vorige release was dit 6.1.15). De prestaties zijn verbeterd op systemen met Intel-processors op basis van de microarchitecturen Alder Lake en Raptor Lake.
- Er zijn verbeteringen aangebracht in de hypervisor VMM. In vmd is ondersteuning voor een multi-threaded model geïmplementeerd voor blok- en netwerksvirtio-apparaten. Voor het blok virtio-apparaat is ondersteuning voor vectorinvoer/uitvoer in de zero-copy modus toegevoegd. De toegang van gastsystemen tot de p-state-modus van AMD-processors is beperkt. Eigenaren virtuele machines is toegestaan om het te laden kernel opnieuw te definiëren via vmctl.
- Er is een nieuwe headerfile uchar.h toegevoegd met de types char32_t en char16_t, en de functies c32rtomb(), mbrtoc32(), c16rtomb() en mbrtoc16(), gedefinieerd in de C11-standaard.
- Aan de functie malloc is de optie 'D' toegevoegd voor het detecteren van geheugenlekken met behulp van ktrace ('MALLOC_OPTIONS=D ktrace -tu program') en kdump ('kdump -u malloc ...').
- De utiliteit make heeft ondersteuning toegevoegd voor de variabele ${.VARIABLES} voor het weergeven van de namen van alle ingestelde globale variabelen.
- Aan de utiliteit kdump is de optie '-u' toegevoegd om utrace-tracepoints te selecteren op basis van een opgegeven label.
- Aan de utiliteit openrsync zijn de opties '--size-only' en '--ignore-times' toegevoegd.
- In cron en crontab is ondersteuning toegevoegd voor willekeurige verschuivingen wanneer waarden in een bereik met een bepaalde stap worden opgegeven, wat voorkomt dat meerdere aanvragen van verschillende machines met dezelfde cron-regels tegelijkertijd worden gedaan. Bijvoorbeeld, het specificeren van '0~59/30' of '~30' in het minutenveld zal resulteren in het uitvoeren van het commando twee keer per uur met willekeurig gekozen intervallen.
- Aan de utiliteit wsconsctl is de mogelijkheid toegevoegd om knoppen te mappen voor het indrukken met twee of drie vingers op het touchpad.
- Ondersteuning voor nieuwe hardware is toegevoegd en er zijn nieuwe stuurprogramma's inbegrepen.
- Installatie op systemen met armv7- en arm64-processors is verbeterd.
- Ondersteuning voor het opstarten van bestanden vanuit de EFI-systeempartitie is toegevoegd.
- In de installer is de ondersteuning voor software RAID (softraid) verbeterd. Het is mogelijk gemaakt om de root-partitie in softraid te plaatsen op riscv64- en arm64-systemen. Softraid is toegevoegd aan ramdisk voor de powerpc64-architectuur. Voor arm64 is ondersteuning voor schijfversleuteling (Guided Disk Encryption) gerealiseerd.
- Aan de functie malloc is een controle toegevoegd voor alle blokken in de lijst van uitgestelde geheugen vrijgave om situaties van schrijven naar vrijgegeven geheugen te identificeren.
- Voor het uitvoeren van het shutdown-commando is het nu nodig om de gebruiker aan de groep «_shutdown» toe te voegen, wat het mogelijk maakt om bevoegdheden met betrekking tot het afsluiten en directe toegang tot schijfapparaten te scheiden.
- Met behulp van de systeemaanroep unveil is het patch-hulpmiddel beperkt tot toegang alleen tot de huidige map, de map voor tijdelijke bestanden en de bestanden die in de opdrachtregel zijn vermeld.
- Sysctl net.inet6.icmp6.nd6_queued is toegevoegd om het aantal pakketten te tonen dat wacht op een ND6-antwoord (vergelijkbaar met ARP).
- Bij het instellen van een IPv6-adres op de netwerkaansluiting is het versturen van een aankondiging naar buurrouters via het multicastadres gegarandeerd.
- Beginondersteuning voor TSO (TCP Segmentation Offload) en LRO (TCP Large Receive Offload) is toegevoegd voor de verwerking van segmenten en het samenvoegen van pakketten aan de kant van de netwerkkaart.
- De laadtijd vanuit de regels van de packetfilterkernel pf door het hulpmiddel pfctl is versneld. Verwerking van de acties «keep state» en «nat-to» voor geretourneerde foutmeldingen via ICMP is ingeschakeld.
- De berekening van de controlegetallen voor IP, TCP en UDP is uitgeschakeld voor loopback-interfaces.
- Beginondersteuning toegevoegd VPN IPsec, afhankelijk van routering (route-based).
- Ondersteuning voor Flowspec is toegevoegd aan bgpd (RFC5575, momenteel alleen voor het aankondigen van Flowspec-regels). De implementatie van ASPA (Autonomous System Provider Authorization) is aangepast aan de specificaties van draft-ietf-sidrops-aspa-verification-16 en draft-ietf-sidrops-aspa-profile-16, en is overgestapt op het gebruik van zoektabellen die onafhankelijk zijn van de AFI (Address Family Indicator).
- De prestaties van de rpki-client zijn met 30-50% verhoogd. Ondersteuning voor gzip- en deflate-compressie is toegevoegd.
- De pakketten LibreSSL en OpenSSH zijn bijgewerkt. Een gedetailleerd overzicht van de verbeteringen is beschikbaar in de beoordelingen van LibreSSL 3.8.0, OpenSSH 9.4 en OpenSSH 9.5.
- Het aantal poorten voor de AMD64-architectuur was 11845 (vroeger 11764), voor aarch64 - 11508 (vroeger 11561), voor i386 - 10603 (vroeger 10572). Onder de versies van applicaties in de poorten:
- 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 en 11.2.0
- GHC 9.2.7
- GNOME 44
- Go 1.21.1
- JDK 8u382, 11.0.20 en 17.0.8
- KDE Applications 23.08.0
- KDE Frameworks 5.110.0
- Krita 5.1.5
- LLVM/Clang 13.0.0 en 16.0.6
- LibreOffice 7.6.2.1
- Lua 5.1.5, 5.2.4, 5.3.6 en 5.4.6
- MariaDB 10.9.6
- Mono 6.12.0.199
- Mozilla Firefox 118.0.1 en ESR 115.3.1
- Mozilla Thunderbird 115.3.1
- Mutt 2.2.12 en NeoMutt 20230517
- Node.js 18.18.0
- OpenLDAP 2.6.6
- PHP 7.4.33, 8.0.30, 8.1.24 en 8.2.11
- Postfix 3.7.3
- PostgreSQL 15.4
- Python 2.7.18, 3.9.18, 3.10.13 en 3.11.5
- Qt 5.15.10 en 6.5.2
- Ruby 3.1.4, 3.2.3, 3.3.0
- Ruby 3.0.6, 3.1.4 en 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 en 8.6.13
- TeX Live 2022
- Vim 9.0.1897 en Neovim 0.9.1
- Xfce 4.18
- De componenten van derden die deel uitmaken van OpenBSD 7.3 zijn bijgewerkt:
- De grafische stack Xenocara gebaseerd op X.Org 7.7 met 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) en 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.
Bron: opennet.ru
