È stata rilasciata la versione del sistema operativo open source simile a UNIX, OpenBSD 7.4. 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 e un gruppo di sostenitori hanno creato un nuovo sistema operativo open source basato sull'albero dei sorgenti di NetBSD, i cui principali obiettivi sono stati la portabilità (supporto per 13 piattaforme hardware), la standardizzazione, il corretto funzionamento, la sicurezza proattiva e strumenti crittografici integrati. La dimensione dell'immagine ISO completa della base del sistema 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, il filtro pacchetti PF, i demoni di routing OpenBGPD e OpenOSPFD, il server NTP OpenNTPD, il server di posta OpenSMTPD, il multiplexore di terminali testuali (simile a GNU screen) tmux, il demone identd che implementa il protocollo IDENT, l'alternativa BSDL al pacchetto GNU groff — mandoc, il protocollo per organizzare sistemi ad alta disponibilità CARP (Common Address Redundancy Protocol), un server http leggero, e lo strumento di sincronizzazione file OpenRSYNC.
Miglioramenti principali:
- Per le architetture amd64 e i386 sono stati aggiunti componenti per l'aggiornamento del microcodice dei processori AMD. Le nuove versioni del microcodice vengono installate automaticamente all'avvio. È stato preparato un port per la distribuzione dei file binari con il microcodice: «ports/sysutils/firmware/amd». L'installazione del nuovo microcodice avviene tramite l'utilità fw_update. Un supporto simile per l'aggiornamento del microcodice per i processori Intel è stato implementato nel 2018 ed è stato offerto nella release di OpenBSD 6.3.
- Per il kernel e lo spazio utente sono stati inclusi meccanismi di protezione IBT (Indirect Branch Tracking, amd64) e BTI (Branch Target Identification, arm64), destinati a bloccare le violazioni dell'ordine normale di esecuzione (control flow) a causa di exploit che alterano i puntatori alle funzioni memorizzati in memoria (la protezione implementata impedisce al codice dannoso di eseguire un salto a metà funzione).
- Nei sistemi con architettura arm64 è stata attivata l'autenticazione dei puntatori (Pointer Authentication) per proteggere lo spazio utente. Questa tecnologia consente di usare istruzioni ARM64 specializzate per verificare gli indirizzi di ritorno mediante firme digitali, che sono memorizzate nei bit superiori non utilizzati dello stesso puntatore.
- Le impostazioni del compilatore di sistema clang e anche clang e gcc dai port sono state modificate per applicare i 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 port contro le exploit che utilizzano metodi di programmazione orientati ai ritorni (ROP - Return-Oriented Programming). Nell'uso della tecnica ROP, l'attaccante non cerca di inserire il proprio codice in memoria, ma lavora con porzioni di istruzioni di macchina già presenti nelle librerie caricate, che terminano con un'istruzione di ritorno al controllo (di solito, si tratta delle conclusioni delle funzioni di libreria). L'operazione dell'exploit si riduce alla costruzione di una catena di chiamate a tali blocchi («gadgets») per ottenere la funzionalità desiderata.
- È stata aggiunta una nuova chiamata di sistema kqueue1, che si differenzia da kqueue per il passaggio di flag. Attualmente in kqueue1 è supportato solo il flag O_CLOEXEC (close-on-exec) per la chiusura automatica dei descrittori di file nei processi figlio dopo la chiamata a exec().
- Per le architetture amd64 e i386 è stata implementata la supporto per il pseudo-dispositivo dt per organizzare il tracciamento dinamico del sistema e delle applicazioni. È stata aggiunta una chiamata di sistema utrace per inserire registrazioni utente nel log ktrace.
- Sono stati trasportati correzioni da FreeBSD che eliminano comportamenti indefiniti durante l'uso dei file system MS-DOS.
- È stata disattivata l'opzione di montaggio softdep, utilizzata per la scrittura in ritardo dei metadati raggruppati.
- Ai programmi protetti tramite la chiamata di sistema unveil è consentito salvare i core dump nella cartella di lavoro corrente.
- Per l'architettura ARM64 è stata implementata la possibilità di passare a stati di inattività profondi (idle), disponibili nei chip Apple M1/M2, per risparmiare energia e implementare la modalità di sospensione.
- È stata aggiunta una protezione bypass della vulnerabilità Zenbleed nei processori AMD.
- È stato migliorato il supporto per i sistemi multiprocessore (SMP). Sono stati eliminati i blocchi nelle funzioni arprequest(), nel codice di gestione dei pacchetti ARP in ingresso e nell'implementazione della determinazione dei nodi vicini nello stack IPv6.
- L'interfaccia di sincronizzazione delle tabelle del filtro dei pacchetti pfsync è stata riscritta per migliorare il funzionamento con i blocchi e la compatibilità con i futuri lavori di parallelizzazione dello stack di rete.
- L'implementazione del framework drm (Direct Rendering Manager) è stata sincronizzata con il kernel Linux 6.1.55 (rispetto alla versione precedente - 6.1.15). È stato migliorato il funzionamento sui sistemi con processori Intel basati sulle microarchitetture Alder Lake e Raptor Lake.
- Sono stati apportati miglioramenti all'ipervisore VMM. In vmd è stata implementata la supporto per il modello multiprocessore per dispositivi virtio a blocchi e di rete. In un dispositivo virtio a blocchi è stata aggiunta la supporto per l'input/output vettoriale in modalità zero-copy. È stato limitato l'accesso dei sistemi ospite ai modi p-state dei processori AMD. di macchine virtuali è consentito sovrascrivere il kernel di avvio tramite vmctl.
- È stato aggiunto un nuovo file di intestazione uchar.h con i tipi char32_t e char16_t, e le funzioni c32rtomb(), mbrtoc32(), c16rtomb() e mbrtoc16(), definite nel standard C11.
- Alla funzione malloc è stata aggiunta l'opzione «D» per la determinazione delle perdite di memoria tramite ktrace («MALLOC_OPTIONS=D ktrace -tu program») e kdump («kdump -u malloc …»).
- Nello strumento make è stata aggiunta la compatibilità con la variabile ${.VARIABLES} per l'output dei nomi di tutte le variabili globali impostate.
- Nell'utilità kdump è stata aggiunta l'opzione «-u» per selezionare i punti di tracciamento utrace in base a un'etichetta specificata.
- Nell'utilità openrsync sono state aggiunte le opzioni «—size-only» e «—ignore-times».
- In cron e crontab è stato aggiunto il supporto per offset casuali quando si specificano intervalli di valori con un passo dato, il che consente di evitare richieste simultanee di risorse da diverse macchine con regole cron identiche. Ad esempio, specificare «0~59/30» o «~/30» nel campo dei minuti porterà all'esecuzione del comando due volte all'ora attraverso intervalli casuali scelti consecutivamente.
- Nello strumento wsconsctl è stata aggiunta la possibilità di mappare i pulsanti per pressioni di due o tre dita sul touchpad.
- Aggiunto il supporto per nuovo hardware e inclusi nuovi driver.
- È stato migliorato l'installazione su sistemi con processori armv7 e arm64.
- È stato aggiunto il supporto per il caricamento di file dalla partizione di sistema EFI (EFI System Partition).
- Nell'installer è stato migliorato il supporto per RAID software (softraid). È stata aggiunta la possibilità di collocare la partizione radice in softraid su sistemi riscv64 e arm64. Softraid è stato aggiunto al ramdisk per l'architettura powerpc64. Per arm64 è stato implementato il supporto per la crittografia dei dischi (Guided Disk Encryption).
- Nella funzione malloc è stata implementata la verifica di tutti i blocchi nella lista di rilascio ritardato della memoria per identificare situazioni di scrittura nell'area di memoria liberata.
- Per eseguire il comando shutdown è ora necessario aggiungere l'utente al gruppo «_shutdown», il che consente di separare le autorizzazioni relative alla chiusura e alla lettura diretta dai dispositivi di memorizzazione.
- Attraverso la chiamata di sistema unveil, lo strumento patch è limitato all'accesso solo alla directory attuale, alla directory dei file temporanei e ai file elencati nella riga di comando.
- È stato aggiunto sysctl net.inet6.icmp6.nd6_queued per mostrare il numero di pacchetti in attesa di risposta ND6 (analogamente all'ARP).
- Configurando un indirizzo IPv6 sull'interfaccia di rete, è stato assicurato l'invio di un annuncio ai router vicini all'indirizzo multicast.
- È stata aggiunta la supporto iniziale per TSO (TCP Segmentation Offload) e LRO (TCP Large Receive Offload) per gestire segmenti e unire pacchetti lato scheda di rete.
- È stata accelerata la caricamento dal kernel delle regole del filtro pacchetti pf da parte dell'utilità pfctl. È stata attivata l'elaborazione delle azioni «keep state» e «nat-to» per le risposte ICMP di errore.
- Sono state disattivate le computazioni delle somme di controllo IP, TCP e UDP per le interfacce loopback.
- Aggiunto supporto iniziale VPN IPsec, dipendenti dalla routizzazione (route-based).
- Nel bgpd è stato aggiunto il supporto per Flowspec (RFC5575, attualmente supporta solo l'annuncio di regole flowspec). L'implementazione di ASPA (Autonomous System Provider Authorization) è stata allineata alle specifiche draft-ietf-sidrops-aspa-verification-16 e draft-ietf-sidrops-aspa-profile-16, ed è stata convertita per l'uso di tabelle di ricerca indipendenti dall'AFI (Address Family Indicator).
- Le prestazioni del rpki-client sono aumentate del 30-50%. È stato aggiunto il supporto per la compressione gzip e deflate.
- I pacchetti LibreSSL e OpenSSH sono stati aggiornati. È possibile visualizzare una panoramica dettagliata dei miglioramenti nelle recensioni di LibreSSL 3.8.0, OpenSSH 9.4 e OpenSSH 9.5.
- Il numero di port per l'architettura AMD64 è stato di 11845 (rispetto a 11764), per aarch64 di 11508 (rispetto a 11561), per i386 di 10603 (rispetto a 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 i componenti di terze parti inclusi in OpenBSD 7.3:
- 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
