Parlando di sicurezza informatica già a livello di sistema operativo, il punto di riferimento è sicuramente OpenBSD. La conferma viene dal fatto che è il sistema operativo largamente utilizzato sia dagli ISP (Internet Service Provider) sia nei sistemi embedded, ed è stato il primo ad implementare il protocollo IPsec (IP security), largamente utilizzato nelle VPN (Virtual Private Network).
OpenBSD rappresenta una tra le migliori scelte nella realizzazione di sistemi ad elevata sicurezza, come i firewall, grazie al suo PF (Packet Filter), nonché nei sistemi di controllo delle intrusioni IDS (Intrusion Detection System), così come nelle soluzioni server o come router.
Indice degli argomenti
OpenBSD: il “pesce palla” sicuro
OpenBSD è un sistema operativo libero, open source, multipiattaforma, di tipo Unix-like, derivato dalla Berkeley Software Distribution (BSD). Nasce nel 1995 grazie a Theo de Raadt, che gestisce il progetto da Calgary in Canada. Il team di sviluppo concentra i propri sforzi sulla portabilità, sulla standardizzazione e la correttezza del codice sorgente, sulla sicurezza proattiva e su un sistema di crittografia integrato.
Uno standard molto conosciuto, OpenSSH, è stato creato ad-hoc proprio per OpenBSD e dal medesimo team di sviluppo. I punti di forza di OpenBSD pertanto possono essere individuati nell’estrema cura sia della correttezza sia della sicurezza del codice sorgente, nonché nella qualità della documentazione a supporto del progetto stesso. La gestione iniziale del sistema, così come l’installazione, sono affidate alla shell di default ksh (Korn shell). Il logo nonché la mascotte del progetto è Puffy, un Tetraodontidae, comunemente noto come pesce palla.
OpenBSD ha sempre attirato numerosi sviluppatori da tutto il mondo, interessati alla realizzazione di un sistema operativo, BSD derivato, che ponesse al centro del sistema stesso la sicurezza. I primi accorgimenti furono di lavorare in un repository CVS (Concurrent Versions System) pubblico in sola lettura in modo tale che il codice fosse sempre a disposizione di chiunque volesse visionarlo.
Il primo commit, ovvero lo stato iniziale di un progetto allorquando i file che contraddistinguono il software sono inseriti nel ramo principale, è stato di fatto l’immissione in OpenBSD dell’albero dei sorgenti di NetBSD, ed è datato sabato 14 ottobre 1995 alle 16:36 UTC-7.
Il 18 ottobre 2020, OpenBSD festeggerà i venticinque anni di vita.
La sicurezza prima di tutto
Uno standard di sicurezza così elevato è stato raggiunto mediante un processo capillare di Code Audit. Il team OpenBSD infatti è fortemente focalizzato verso un modello di sicurezza robusto, unito al tipico modello di sviluppo aperto. Nel mondo dei sistemi operativi, quelli Unix in particolare, OpenBSD è stato il primo a far proprio il concetto di full disclosure, cioè l’esposizione totale, mediante forum, mailing-list (BUGTRAQ), siti e quant’altro, dei problemi relativi a difetti o bug del software.
Molti fornitori, anche di software libero, cercano ancora di nascondere i problemi ai propri utenti. In seno ai core developers di OpenBSD, invece, vi è un team di audit composto da alcuni sviluppatori che si occupano, quotidianamente, di analizzare riga per riga il codice sorgente del sistema operativo, cercando bug e vulnerabilità. Grazie a questo processo è stato possibile scoprire nuove categorie di problemi legati alla sicurezza, facendo in tal modo da apripista verso un nuovo modo di concepire lo sviluppo dei sistemi operativi stessi. I risultati sono talmente evidenti che OpenBSD si è guadagnato sul campo l’appellativo di “secure by default”.
Dalla versione 6.0 è stata eliminata, per ragioni di sicurezza, l’emulazione binaria con Linux.
Dalla release 6.1 dell’11 aprile 2017 è stato aggiunto, nei mirror che lo prevedono, il supporto di default ad HTTPS (HyperText Transfer Protocol over Secure Socket Layer), al fine di garantire maggior sicurezza allorquando si scaricano i file necessari per l’installazione o l’aggiornamento il sistema operativo.
La politica open source, inoltre, garantisce la massima esposizione al codice e quindi consente l’analisi delle vulnerabilità e la loro correzione rapida, e l’unico modo per essere proattivi e reattivi in un progetto software guidato dai volontari, disse Theo De Raadt, è di non permettere mai il differimento di un problema in un secondo momento. I problemi vengono gestiti al più presto per mantenere vivo l’interesse verso di loro.
Il focus di OpenBSD sulla sicurezza negli ultimi due decenni è facilmente comprensibile guardando direttamente il codice. OpenBSD ha di gran lunga gli sviluppatori più esperti in fatto di sicurezza.
Per prima cosa, OpenBSD ha una base di codice molto più piccola, circa 2,9 milioni di righe di codice, rispetto a circa i 9 milioni di FreeBSD ed i 7,3 milioni di NetBSD. Ovviamente, questo gioca un ruolo in fatto di sicurezza perché non puoi avere un bug nel codice che non hai.
Questa base di codice più piccola è in parte non voluta, in quanto la mancanza di risorse per lo sviluppatore ha impedito ad OpenBSD di implementare tutte le funzionalità che desiderava, ma dall’altra parte è stata anche una decisione deliberata per ridurre la superficie di attacco, inclusa la rimozione del supporto per rari dispositivi e architetture non comuni e meno recenti.
In termini di qualità, il codice OpenBSD è stato sottoposto sin dall’inizio a numerosi test ed analisi di sicurezza, per cui risulta essere il più robusto tra quelli presenti sul mercato.
OpenBSD: dimostrazione di imbattibilità
A dimostrazione dell’elevato livello di sicurezza di OpenBSD possiamo ritornare al caso delle presunte backdoor dell’FBI. L’11 dicembre 2010 Gregory Perry (FBI) inviò una email a Theo de Raadt, dichiarando che l’FBI nei 10 anni appena trascorsi avrebbe pagato alcuni sviluppatori OpenBSD per inserire diverse backdoor nell’altrimenti inespugnabile codice del Framework Crittografico IPsec. Theo de Raadt, seppur scettico rispetto al contenuto dell’email, la rese pubblica il 14 dicembre 2010, inoltrandola alla mailing list openbsd-tech così come a molti sviluppatori, al fine di effettuare un dettagliato controllo indipendente del codice del modulo IPsec. Nelle settimane seguenti non fu trovata alcuna backdoor, ma comunque il controllo accurato del framework permise di effettuare alcuni bugfix del codice migliorandolo ulteriormente.
Da quel momento il team di sviluppo iniziò anche a promuovere la diffusione di OpenBSD sfruttando questa sua caratteristica unica, seppur non immune da problemi.
Lo slogan di OpenBSD è stato, fino al 2002, “nessun buco di sicurezza in quasi 6 anni”. Poi, a causa di un exploit scoperto in OpenSSH, ovvero nel sistema di crittografia integrata su cui si basa OpenBSD, lo slogan è stato cambiato in: “un singolo buco di sicurezza remoto con l’installazione di default in oltre 8 anni”, fino ad arrivare all’attuale “Solamente due buchi di sicurezza remoti con l’installazione di default da un casino di tempo!” (Only two remote holes in the default install, in a heck of a long time!), performance comunque di primissimo piano e inavvicinabili per la gran parte degli altri sistemi operativi.
Come funziona il processo di audit di OpenBSD
Il team di controllo della sicurezza ha in genere da sei a dodici membri che continuano a cercare e correggere nuove falle nella sicurezza. Il codice viene ormai controllato assiduamente dall’estate del 1996. Il processo seguito per aumentare la sicurezza è semplicemente un’analisi completa, file per file, di ogni componente software critico. Non vengono cercati tanto buchi di sicurezza, ma bug di software di base, e se anni dopo qualcuno scopre che il problema era un problema di sicurezza, viene comunque risolto perché era solo un bug.
Difetti sono stati trovati in quasi ogni area del sistema. Intere nuove classi di problemi di sicurezza sono state rilevate durante le verifiche effettuate e spesso il codice sorgente che era stato sottoposto a test in precedenza, ha bisogno di un nuovo controllo tenendo conto di questi nuovi difetti. Il codice viene spesso verificato più volte e da più persone con competenze di auditing diverse.
Un altro aspetto del processo di controllo della sicurezza di cui abbiamo già dato un accenno è la proattività. Nella maggior parte dei casi, il team ha riscontrato che la determinazione dello sfruttamento non è un problema: durante il processo di auditing in corso vengono trovati molti bug e il team si sforza di risolverli anche se la possibilità di sfruttarli non è dimostrata. Viene risolto il bug e si prosegue a trovare altri bug da correggere. Vengono risolti molti semplici e ovvi errori di programmazione nel codice e solo alcuni mesi dopo si scopre, ad esempio, che i problemi erano effettivamente sfruttabili.
Innovazioni software per la sicurezza
Il sistema di base di OpenBSD comprende diversi software creati e mantenuti, dal 1995 ad oggi, dal team di sviluppo. Tali innovazioni, nel corso degli anni, sono diventate spesso di uso comune anche su altri sistemi operativi, specie nell’ambito della sicurezza.
Si annoverano tra i software maggiormente utilizzati, sia in ambito server sia in ambito desktop, i seguenti:
- OpenSSH, chiamato anche OpenBSD Secure Shell, è una suite di programmi (ssh, scp, sftp, sshd) per il protocollo SSH (SSH File Transfer Protocol o SFTP) atti alla protezione della sessione di rete mediante la cifratura del traffico. Consente diversi metodi di autenticazione e di tunneling sicuro. È stato creato nel 1999 e integrato l’anno stesso nella versione 2.6 di OpenBSD. Nasce come alternativa open source a Secure Shell suite, scritto da T.Ylönen della SSH Communications Security, divenuto nel frattempo proprietario;
- PF (Packet Filter), è il firewall di default di OpenBSD. Il packet filtering (filtraggio di pacchetti) è un meccanismo di sicurezza che agisce controllando e selezionando i dati che transitano da e verso una rete. La selezione del traffico permesso o proibito viene effettuata in base all’esame dei pacchetti in transito sul sistema che agisce da filtro. È stato importato in OpenBSD il 24 giugno 2001 e rilasciato il 1º dicembre 2001 con la release 3.0;
- OpenSMTP, è un server per il protocollo SMTP (Simple Mail Transfer Protocol), così come definito nella RFC 5321, con una sintassi molto simile a PF. È stato importato nei repository di OpenBSD il 1º novembre 2008 e rilasciato con la release 4.6 di OpenBSD. È snello, affidabile e sicuro, consente infatti una netta separazione dei privilegi, inoltre è in grado di gestire grandi code nel minor tempo possibile;
- AnonCVS, il CVS anonimo è meccanismo avanzato per la distribuzione in rete del codice sorgente, è costruito sopra il sistema di controllo revisione CVS. Consente accessi sicuri, in sola lettura e anonimi a repository CVS. OpenBSD lo utilizza per mantenere aggiornata la copia locale dei sorgenti rispetto ai cambiamenti che gli sviluppatori possono effettuare nel codice stesso. È stato creato da Chuck Cranor e Theo de Raadt nel 1995, sicché fa parte del progetto OpenBSD sin dalla prima release;
- OpenIKED, è un’implementazione libera del protocollo IKEv2 (Internet Key Exchange Protocol Versione 2), che consente la mutua autenticazione tra due nodi, stabilisce e gestisce politiche di sicurezza IPsec VPN, negoziando tutti i parametri necessari per stabilire una o più security association (SA) mediante chiavi temporanee. Il protocollo IKEv2 è definito nella RFC 5996. È stato integrato nella versione 4.8 di OpenBSD, rilasciata il 1º novembre 2010.
Conclusioni
Possiamo quindi affermare che OpenBSD è un sistema operativo decisamente orientato alla sicurezza e che si trova al primo posto nella classifica dei sistemi più sicuri.
Questo non vuol dire che è inattaccabile, anzi: in questi anni stanno aumentando gli exploit e i bug rilevati, mantenendo comunque molto basso il loro numero, nell’ordine delle decine in oltre 20 anni di servizio. Quindi decisamente inferiore ad altri sistemi operativi per i quali questi numeri sono nell’ordine delle decine di migliaia a parità di contesto e segmento di mercato.
Quello che si vuole realmente evidenziare è che OpenBSD ha nel suo DNA il focus verso la sicurezza, quindi è lo strumento migliore, attualmente, per garantire il massimo livello di sicurezza by default.