È stata presentata la versione 7.4 del sistema operativo open source simile a UNIX OpenBSD. Il progetto OpenBSD è stato fondato da Theo de Raadt nel 1995 dopo un conflitto con gli sviluppatori di NetBSD, che ha portato alla chiusura dell'accesso di Theo al repository CVS di NetBSD. Successivamente, Theo de Raadt, insieme a un gruppo di sostenitori, ha creato un nuovo sistema operativo open source basato sull'albero dei sorgenti di NetBSD, con obiettivi principali di portabilità (supporta 13 piattaforme hardware), standardizzazione, funzionamento corretto, sicurezza proattiva e strumenti crittografici integrati. La dimensione dell'immagine ISO di installazione completa del sistema base OpenBSD 7.4 è di 630 MB.
Oltre al sistema operativo stesso, il progetto OpenBSD è noto per i suoi componenti che sono stati adottati in altri sistemi e si sono affermati come alcune delle soluzioni più sicure e di alta qualità. Tra questi: LibreSSL (fork di OpenSSL), OpenSSH, filtro dei pacchetti PF, demoni di routing OpenBGPD e OpenOSPFD, server NTP OpenNTPD, server di posta OpenSMTPD, multiplexer di terminale testuale (simile a GNU screen) tmux, demone identd con implementazione del protocollo IDENT, alternativa BSDL al pacchetto GNU groff — mandoc, protocollo per la creazione di sistemi tolleranti ai guasti CARP (Common Address Redundancy Protocol), server http leggero, utilità di sincronizzazione files OpenRSYNC.
Principali miglioramenti:
- Per le architetture amd64 e i386 sono stati aggiunti componenti per l'aggiornamento del microcodice per i processori AMD. Le nuove versioni del microcodice vengono installate automaticamente all'avvio. Per la distribuzione dei file binari del microcodice è stato preparato il port "ports/sysutils/firmware/amd". L'installazione del nuovo microcodice avviene utilizzando l'utilità di sistema fw_update. Un supporto simile per l'aggiornamento del microcodice per i processori Intel è stato implementato nel 2018 ed è stato proposto nella versione OpenBSD 6.3.
- Sono stati inclusi meccanismi di protezione IBT (Indirect Branch Tracking, amd64) e BTI (Branch Target Identification, arm64) nel kernel e nello spazio utente, destinati a bloccare la violazione dell'ordine normale di esecuzione (control flow) a causa di exploit che modificano i puntatori alle funzioni memorizzati in memoria (la protezione implementata non permette al codice dannoso di saltare a metà funzione).
- Nei sistemi con architettura arm64 è stata attivata l'autenticazione dei puntatori per proteggere lo spazio utente. Questa tecnologia consente di utilizzare istruzioni ARM64 specializzate per verificare gli indirizzi di ritorno tramite firme digitali, memorizzate nei bit superiori inutilizzati dello stesso puntatore.
- Le impostazioni del compilatore di sistema clang, così come clang e gcc dai porti, sono state modificate per l'implementazione dei meccanismi di protezione sopra menzionati, il che ha notevolmente aumentato la sicurezza di tutte le applicazioni di base e della maggior parte delle applicazioni dai porti contro gli exploit che utilizzano metodi di Programmazione Orientata al Ritorno (ROP - Return-Oriented Programming). Utilizzando la tecnica ROP, l'attaccante non cerca di inserire il proprio codice nella memoria, ma opera su frammenti di istruzioni macchina già esistenti nelle librerie caricate, che terminano con un'istruzione di ritorno (di solito, queste sono le conclusioni delle funzioni delle librerie). Il funzionamento dell'exploit consiste nella costruzione di una catena di chiamate a simili blocchi (" gadget ") per ottenere la funzionalità desiderata.
- È stata aggiunta una nuova chiamata di sistema kqueue1, che si differenzia da kqueue per la trasmissione di flag. Attualmente, in kqueue1 è supportato solo il flag O_CLOEXEC (close-on-exec) per la chiusura automatica dei descrittori di file nei processi figli dopo la chiamata exec().
- Per le architetture amd64 e i386 è stata implementata la supporto per il dispositivo virtuale dt per l'organizzazione della tracciatura dinamica del sistema e delle applicazioni. È stata aggiunta la chiamata di sistema utrace per inserire registrazioni utente nel log ktrace.
- Sono stati trasferiti da FreeBSD correzioni che eliminano comportamenti indefiniti durante l'uso dei file system MS-DOS.
- È stata disattivata l'opzione di montaggio softdep, utilizzata per la scrittura ritardata dei metadati raggruppati.
- Le applicazioni protette tramite la chiamata di sistema unveil possono ora salvare i core dump nella cartella di lavoro attuale.
- Per l'architettura ARM64 è stata attivata la possibilità di passare a stati di inattività profonda (idle), disponibili nei chip Apple M1/M2, per risparmiare energia e implementare la modalità di sospensione.
- È stata aggiunta una protezione di bypass contro la vulnerabilità Zenbleed nei processori AMD.
- Migliorato il supporto per sistemi multiprocessore (SMP). Rimosse le serrature dalla funzione arprequest(), dal codice di gestione dei pacchetti ARP in ingresso e dall'implementazione della rilevazione dei nodi vicini nello stack IPv6.
- L'interfaccia di sincronizzazione delle tabelle del filtro dei pacchetti pfsync è stata riscritta per migliorare il funzionamento con le serrature e la compatibilità con i futuri lavori di parallelizzazione dello stack di rete.
- L'implementazione del framework drm (Direct Rendering Manager) è sincronizzata con il kernel Linux 6.1.55 (nell'ultima versione - 6.1.15). Migliorata la funzionalità su sistemi con processori Intel basati sulle microarchitetture Alder Lake e Raptor Lake.
- Sono stati apportati miglioramenti all'iperespositore VMM. In vmd è stata implementata la supporto per un modello multi-processo per dispositivi virtio a blocchi e di rete. Aggiunta la supporto per l'input/output vettoriale in modalità zero-copy nei dispositivi virtio a blocchi. Limite all'accesso dei sistemi guest alle modalità p-state dei processori AMD. Ai proprietari macchine virtuali è consentito sovrascrivere il kernel di avvio tramite vmctl.
- Aggiunto un nuovo file di intestazione uchar.h con i tipi char32_t e char16_t, e le funzioni c32rtomb(), mbrtoc32(), c16rtomb() e mbrtoc16(), come definite nello standard C11.
- Nella funzione malloc è stata aggiunta l'opzione 'D' per determinare le perdite di memoria tramite ktrace ('MALLOC_OPTIONS=D ktrace -tu program') e kdump ('kdump -u malloc ...').
- Nell'utilità make è stata aggiunta la supporto per la variabile ${.VARIABLES} per elencare i nomi di tutte le variabili globali definite.
- Nell'utilità kdump è stata aggiunta l'opzione '-u' per selezionare i punti di tracciamento utrace in base a un'etichetta data.
- Nell'utilità openrsync sono state aggiunte le opzioni '--size-only' e '--ignore-times'.
- In cron e crontab è stata aggiunta la supporto per le deviazioni casuali nella specifica degli intervalli di valore con un passo specificato, permettendo di evitare richieste simultanee delle risorse da diverse macchine con le stesse regole in cron. Ad esempio, specificando '0~59/30' o '~ /30' nel campo dei minuti porterà all'esecuzione del comando due volte all'ora attraverso intervalli casuali selezionati sequenzialmente.
- Nell'utilità wsconsctl è stata aggiunta la possibilità di mappare i tasti per il tocco con due o tre dita sul touchpad.
- Aggiunto supporto per nuove apparecchiature e inclusi nuovi driver.
- Migliorata l'installazione su sistemi con processori armv7 e arm64.
- Aggiunta la supporto per il caricamento di file dalla partizione di sistema EFI (EFI System Partition).
- Nell'installer è stata migliorata la supporto per i RAID software (softraid). Aggiunta la possibilità di posizionare la partizione radice su softraid nei sistemi riscv64 e arm64. Softraid è stato aggiunto al ramdisk per l'architettura powerpc64. Per arm64 è stata implementata la supporto per la crittografia dei dischi (Guided Disk Encryption).
- Nella funzione malloc è stato aggiunto un controllo su tutti i blocchi nella lista di rilascio ritardato della memoria per identificare situazioni di scrittura in aree di memoria rilasciate.
- Per eseguire il comando di spegnimento ora è necessario aggiungere l'utente al gruppo «_shutdown», il che consente di separare i privilegi legati allo spegnimento e la lettura diretta dai dispositivi di memorizzazione.
- Tramite la chiamata di sistema unveil, l'utilità patch è limitata all'accesso solo alla directory corrente, alla directory dei file temporanei e ai file elencati nella riga di comando.
- Aggiunto sysctl net.inet6.icmp6.nd6_queued per mostrare il numero di pacchetti in attesa di risposta ND6 (analogamente a ARP).
- Durante la configurazione di un indirizzo IPv6 su un'interfaccia di rete è garantita l'invio di annunci ai router vicini all'indirizzo multicast.
- Aggiunto supporto iniziale per TSO (TCP Segmentation Offload) e LRO (TCP Large Receive Offload) per l'elaborazione dei segmenti e la fusione dei pacchetti lato scheda di rete.
- Accelerato il caricamento dal kernel delle regole del filtro dei pacchetti pf tramite l'utilità pfctl. Inclusa l'elaborazione delle azioni «keep state» e «nat-to» per i messaggi di errore restituiti tramite ICMP.
- Disattivata la computazione dei checksum IP, TCP e UDP per le interfacce loopback.
- Aggiunto supporto iniziale VPN IPsec, dipendente dal routing (route-based).
- In bgpd è stato aggiunto il supporto a Flowspec (RFC5575, attualmente supportato solo l'annuncio delle regole flowspec). L'implementazione di ASPA (Autonomous System Provider Authorization) è stata adattata per soddisfare le specifiche draft-ietf-sidrops-aspa-verification-16 e draft-ietf-sidrops-aspa-profile-16, ed è stata convertita per utilizzare tabelle di ricerca indipendenti dall'AFI (Address Family Indicator).
- Le prestazioni del rpki-client sono state migliorate del 30-50%. Aggiunto supporto per la compressione gzip e deflate.
- Aggiornati i pacchetti LibreSSL e OpenSSH. Una panoramica dettagliata dei miglioramenti è disponibile nelle recensioni di LibreSSL 3.8.0, OpenSSH 9.4 e OpenSSH 9.5.
- Il numero di porte per l'architettura AMD64 è stato di 11845 (era 11764), per aarch64 - 11508 (era 11561), per i386 - 10603 (era 10572). Tra le versioni delle applicazioni nei port:
- 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 e 11.2.0
- GHC 9.2.7
- GNOME 44
- Go 1.21.1
- JDK 8u382, 11.0.20 e 17.0.8
- KDE Applications 23.08.0
- KDE Frameworks 5.110.0
- Krita 5.1.5
- LLVM/Clang 13.0.0 e 16.0.6
- LibreOffice 7.6.2.1
- Lua 5.1.5, 5.2.4, 5.3.6 e 5.4.6
- MariaDB 10.9.6
- Mono 6.12.0.199
- Mozilla Firefox 118.0.1 e ESR 115.3.1
- Mozilla Thunderbird 115.3.1
- Mutt 2.2.12 e NeoMutt 20230517
- Node.js 18.18.0
- OpenLDAP 2.6.6
- PHP 7.4.33, 8.0.30, 8.1.24 e 8.2.11
- Postfix 3.7.3
- PostgreSQL 15.4
- Python 2.7.18, 3.9.18, 3.10.13 e 3.11.5
- Qt 5.15.10 e 6.5.2
- R 4.2.3
- Ruby 3.0.6, 3.1.4 e 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 e 8.6.13
- TeX Live 2022
- Vim 9.0.1897 e Neovim 0.9.1
- Xfce 4.18
- Aggiornati componenti di terze parti che fanno parte di OpenBSD 7.3:
- Il stack grafico Xenocara basato su X.Org 7.7 con xserver 21.1.8 + patch, 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 (+ patch)
- GCC 4.2.1 (+ patch) e 3.3.6 (+ patch)
- Perl 5.36.1 (+ patch)
- NSD 4.7.0
- Unbound 1.18
- Ncurses 5.7
- Binutils 2.17 (+ patch)
- Gdb 6.3 (+ patch)
- Awk 12.9.2023
- Expat 2.5.0.
Fonte: opennet.ru
