Forse dovremmo smettere di dire che “su Linux non ci sono virus” e parlare di sicurezza come se fosse il 2005

Questo post è una risposta alla considerazioni sulle falle di sicurezza Linux nato dalla mailing list del LinuxTrent.

TL;DR

Con il tempo la mia dimestichezza con alcuni concetti basilari di sicurezza informatica è migliorata, ovviamente non mi ritengo un esperto, ma sta di fatto che ultimamente mi sento a disagio quando sento dire:

«Su Linux non ci sono virus»

in questo post cerco di spiegare perché, ma per semplificare direi innanzitutto due cose:

  1. realisticamente parlando non è così, ovviamente, qualsiasi sistema è vulnerabile.
  2. la sicurezza informatica è una questione complessa, che non si limita al solo sistema operativo utilizzato. Le vulnerabilità maggiori cui siamo esposti derivano dall’uso di servizi online. Spesso il maggiore elemento di rischio è quello presente “tra la tastiera e la sedia” (PEBCAK)

Premesso quanto sopra, sono ancora convinto che un “utente medio” Linux (desktop) abbia alcuni vantaggi in termini di sicurezza rispetto a un equivalente “utente medio” che utilizzi Windows.

Mi si potrebbe dire che ovviamente quella sopra è una semplificazione per (appunto) l’utente medio. Sta di fatto che vorrei provare a fare un elenco più dettagliato rispetto al tema. Ogni precisazione e correzione è più che benvenuta.

Perché non dovremmo dire che “Su Linux non ci sono virus”

You are running software with security vulnerabilities in them

Qualche considerazione che credo risulterà lapalissiana agli adetti ai lavori:

  • Il fatto che non ci siano virus su Linux in termini assoluti è ovviamente e palesemente falso. Esistono virus capaci di sfruttare falle del kernel o di software comuni. La falla più famosa e recente (ottobre 2016) riguardante il kernel Linux credo sia Dirtyc0w. Questa falla poteva essere sfruttata e combinata con altre vulnerabilità – in particolare quelle del web server Apache – per ottenere i privilegi di root su un server remoto accessibile da internet. Quando è stata annunciata la vulnerabilità è stato anche reso noto che c’erano prove che questa falla fosse stata effettivamente sfruttata da malintenzionati per entrare in controllo di server remoti. Vale comunque la pena ripetere che tutto il software ha potenzialmente delle vulnerabilità[1]«you are running network services with security vulnerabilities in them. Again, you are running network services with security vulnerabilities in them. If you’re running a server, this is … Continue reading.
  • È il 2017, il numero di soli dispositivi mobili connessi a internet è superiore al numero di persone sulla Terra. Fatta eccezione per gli attacchi volti a reclutare “zombie” per le botnet e (forse) lo spam dai programmi di posta, credo che la maggioranza dei rischi di sicurezza per un utente desktop oggi sia legato ai servizi online che utlizza. Per altro, se si considera il caso dello spam, alcuni attacchi – come quello che ha colpito la webmail di libero.it qualche mese fa – hanno riguardato le webmail e gli addressbook lato server. Questi rischi colpiscono tutti gli utenti di quei servizi, indipendentemente dal sistema operativo che utilizzano.
  • Microsoft e altri vendor di software proprietari hanno una storia documentata di installazione di adware, spyware e altro software indesiderato e/o che compie operazioni all’insaputa dell’utente. Stallman ovviamente li chiama genericamente malware[2]Stallman dice lo stesso anche di Ubuntu, anche se disabilitare e/o disinstallare dal sistema tutte le componenti “incriminate” è relativamente semplice..
  • la sicurezza dipende da molti fattori, non solo dal sistema operativo che si usa. Esistono vari modi per ridurre il rischio. Per esempio, il recente caso di Wannacry ci insegna che una rete interna configurata correttamente può arginare la diffusione di malware: attraverso firewall, evitando che le macchine espongano servizi inutili, che siano configurate per comunicare solo attraverso le porte ed i server con i quali ci si aspetta debbano comunicare, ecc.
  • In un contesto professionale è necessario fare una valutazione dei rischi. Se si trattano dati personali, o addirittura dati sensibili, ci sono degli obblighi di legge su come bisogna gestire quei dati.
  • In un contesto dove una persona può essere soggetta a un attacco diretto e personalizzato, il problema cambia ancora. Un attivista si è addiritura visto recapitare un SMS con link che, nel caso in cui fosse stato cliccato, avrebbe permesso a terzi di prendere il controllo completo del proprio telefono (un iPhone), un attacco che si stima sia costato 1 milione di dollari.

E “l’utente medio”?

Penso comunque che l'”utente medio” desktop di Linux sia in generale più protetto dell’equivalente “utente medio” che utlizzi Windows.

Ecco qui una lista, probabilmente non esaustiva, dei motivi:

  • ci sono meno utenti e quindi meno incentivi per i malintenzionati a produrre malware che colpisca utenti desktop Linux. Non si può dire lo stesso dei sistemi Android;
  • dato che iniziare a usare un sistema (GNU/)Linux di fatto richiede lo sforzo di (a) scoprirne l’esistenza; e (b) installarlo; c’è un processo di selezione degli utenti, per cui è probabile che gli utenti siano più informati o tecnicamente capaci del corrispondente utente medio che utlizza Windows e quindi maggiormente in grado di diffendersi dai comuni rischi informatici. Anche in questo caso non si può dire lo stesso dei sistemi Android;
  • il sistema di utenti e permessi di Linux fornisce di default una ragionevole separazione tra accesso privilegiato e non privilegiato. Per cancellare o modificare dei file di sistema è necessario trovare una vulnerabilità che permetta di fare privilege escalation oppure bisogna convincere l’utente a lanciare un programma con i privilegi di root. Il problema di “Scaricare l’allegato di mail, non accorgersi che è un eseguibile e cliccarci sopra” su Linux di fatto non esiste. Invece, fino a tempi relativamente recenti Windows assumeva che l’utente fosse anche amministratore e si era poi arrivati all’assurdità per cui venivano chiesti permessi di sicurezza per ogni operazione (cosa ben sfruttata da Apple in uno dei suoi famosi spot per ridicolizzare Microsoft);
  • il sistema di pacchetti delle distribuzioni Linux permette di avere delle sorgenti sicure di software noto e affidabile, invece di scaricare eseguibili che non si sa bene da dove provengano o da chi siano prodotti. Mi fa sorridere vedere tutte le maggiori aziende IT – Google, Apple, Microsoft – abbiano adottato il modello degli App Store che è esattamente quello del gestore di pacchetti usato dalle distribuzioni Linux svariati anni in anticipo;
  • nel mondo del software libero e open source, anche a seguito delle varie rivelazioni relative alla capacità di spionaggio della NSA, si sta puntando molto sull’idea di “reproducible build”, cioè di modi per creare un percorso verificabile dal codice sorgente leggibile dagli umani al codice binario usato dai computer. Se il codice sorgente non è disponibile, questa cosa non è realizzabile, nel senso che diventa necessario fidarsi totalmente del produttore del software.

C’è molta strada da fare

Negli ultimi mesi ho cominciato a leggere svariati post che chiedono di ripensare il modo in cui viene trattata la sicurezza dal kernel Linux, specie per far fronte alla miriade di problemi legati alle falle di sicurezza presenti nei dispositivi collegati all'”Internet delle cose”[3]L’internet delle cose (Internet of Things, o IoT) consta di tutti quei dispositivi ed elettrodomestici, tipicamente connotati dall’aggettivo “smart” o … Continue reading.

Altri hanno scritto che il modello di sviluppo del kernel Linux attuale è troppo veloce per potere permettere una valutazione attenta delle implicazioni di sicurezza.

Merita una segnalazione a parte il keynote di Konstantin Ryabitsev al Linux Security Summit 2015 dove viene presentata l’idea per cui si dovrebbero incominciare a progettare delle difese contro gli attacchi informatici e contro gli errori degli utenti già dal kernel. Viene fatta un’illuminate analogia con le automobili che, dagli anni ’60 ad oggi, sono passate dall’essere progettate per essere solamente più potenti e veloci delle auto precedenti, all’essere progettate ponendo al centro la sicurezza e aggiungendo tutta una serie di dispositivi che cercano tuttora di prevenire gli incidenti o di arginarne i danni (airbag, dispositivi di gestione della frenata, guida assistita, ecc.).

Conclusioni

Dire che “su Linux non ci sono virus” è oggettivamente falso e, secondo me, minimizza un discorso più generale sulla sicurezza che comprende molti altri fattori. Ciò nonostante, sono ancora convinto che a parità di altri fattori Linux abbia, anche per motivi in parte indiretti, qualche piccolo vantaggio in termini di sicurezza.

Per esigenze più specifiche esistono svariate distribuzioni Linux con un focus specifico sulla sicurezza. Vanno menzionati sicuramente anche QubesOS, un sistema operativo in cui ogni applicazione viene eseguita in una macchina virtuale separata dal resto, e subuser, un software che usa dei container Docker per ottenere isolamento tra applicazioni e che permette di assegnare a ciascuna applicazione dei permessi specifici di accesso alle periferiche e alle cartelle degli utenti (seguendo il modello dei permessi delle applicazioni di Android). Quest’ultimo progetto è ancora in fase di sviluppo, ma lo ritengo molto interessante.


L’immagine di copertina è di Karim D. Ghantous via Flickr rilasciata con licenza CC-BY 2.0.

References

References
1 «you are running network services with security vulnerabilities in them. Again, you are running network services with security vulnerabilities in them. If you’re running a server, this is almost universally true.»
Moxie Marlinspike, ideatore di Signal dal suo blog
2 Stallman dice lo stesso anche di Ubuntu, anche se disabilitare e/o disinstallare dal sistema tutte le componenti “incriminate” è relativamente semplice.
3 L’internet delle cose (Internet of Things, o IoT) consta di tutti quei dispositivi ed elettrodomestici, tipicamente connotati dall’aggettivo “smart” o “intelligente”, che sono in grado di comunicare attraverso la rete locale o la rete internet attraverso una serie di applicazioni esterne (quali il browser o altre soluzioni ad hoc) per fornire delle funzionalità aggiuntive o informazioni sul loro funzionamento. Molto spesso questi dispositivi sono stati sfruttati per compiere attacchi informatici. La cosa è talmente comune che si è diffuso anche il poco lusinghiero acronimo di “Internet of Shit”, un omonimo feed twitter raccoglie alcune delle storie più assurde riguardanti le vulnerabilità di sicurezza dei dispositivi IoT.