Quanto è sicuro Linux?

In un suo commento al mio articolo “L’attacco di ZeuS”, Luca Sognatore mi chiedeva:

“Semi-OT: vorrei avere una tua opinione su questa intervista ed in particolare sul fatto che Linux sia “probabilmente” più semplice da bucare rispetto a Windows.”

L’argomento è molto interessante, per cui rispondo qui di seguito.

La resistenza agli attacchi locali (fisici)

Uno degli assiomi dell’information security è che nessun sistema possa resistere a lungo ad un attacco che viene condotto localmente, cioè avendo accesso fisico al dispositivo. In altre parole, se un malintenzionato riesce a mettere le mani sul vostro laptop, prima o poi riuscirà ad entrare in possesso della vostra rubrica telefonica e delle vostre password di accesso ai servizi web che utilizzate (gmail, freedrive, dropbox, etc.). In buona sostanza, entrerà in possesso della vostra vita.

In realtà, questo non è del tutto vero. Se il materiale sensibile che si trova sul vostro sistema è cifrato in modo adeguato e le chiavi di cifra vengono conservate su un un altro supporto (ad esempio su una chiave USB), quasi certamente il malintenzionato non riuscirà ad entrare in possesso di nessuna informazione utile.

Da questo punto di vista, Windows, Linux e MacOS sono molto simili. Tutti e tre dispongono di file system cifrati che possono essere attivati con manovre semplicissime e che possono proteggere i vostri dati nel modo più opportuno. Le chiavi di cifra, però, vengono conservate di default in modo diverso. Di conseguenza, a seconda del sistema operativo e della specifica versione che vi trovate ad usare il vostro sistema risulterà più o meno resistente ad attacchi di questo tipo. In questa classifica, i sistemi Apple si trovano in cima alla lista, seguiti a brevissima distanza da Linux ed infine, a distanza non molto maggiore, dalle varie versioni di Windows.

Tuttavia, basta spostare le chiavi di cifra su una chiave USB per risolvere alla radice questo problema e rendere (quasi) completamente impenetrabile il proprio sistema, non importa se si tratta di Windows, Linux o MacOS.

La resistenza agli attacchi da remoto

Per attaccare un sistema (un computer) da remoto (cioè via Internet) è necessario che questo sistema sia:

  • visibile
  • identificabile
  • in grado di accettare una connessione

Non basta quindi essere collegati ad Internet (cioè visibili) per subire un attacco. Un eventuale malintenzionato deve anche riuscire ad identificare il sistema che gli interessa e questo compito può risultare tutt’altro che facile. Nel caso dei server, ad esempio, spesso si deve fare i conti con il fatto che i server dell’azienda bersaglio sono gestiti da aziende che agiscono per suo conto e che quindi non esiste un legame diretto ed evidente tra un’azienda ed il suo server. Nel caso dei computer personali, spesso è impossibile capire quale computer sia usato da una certa persona senza avere accesso fisico al PC. È quasi impossibile anche capire a chi appartiene un PC senza rovistare sul suo disco. Questo non ci mette al riparo dagli attacchi condotti alla cieca ma certo rende difficile pensare ad un attacco condotto in modo specifico contro il nostro PC e la nostra persona senza che esista una “talpa”.

Stabilito questo, viene il punto che ci interessa: per essere “vulnerabile” un sistema deve obbligatoriamente esporre sulla rete uno o più servizi, come un server web, un server di posta, un server di sharing come SMB (Windows e Linux, come Samba) o NFS. Se il sistema non espone servizi, non è in grado di svolgere nessuna funzione per l’attaccante e quindi risulta inutilizzabile ai fini dell’attacco. Se i servizi sono “robusti” o sono protetti in modo adeguato, ad esempio con un buon firewall, l’attaccante non riuscirà ad entrare.

Da questo punto di vista, potrebbe sembrare che la situazione sia inversa a quella a cui siamo tutti abituati. Se date un’occhiata sul web, potrete vedere che esistono letteralmente decine di migliaia di attacchi noti ai servizi di rete e che la stragrande maggioranza di queste vulnerabilità riguarda i sistemi Unix e Linux. Ma, allora, Linux è forse meno sicuro di Widows?

No. In realtà, esistono decine di migliaia di vulnerabilità note che riguardano i servizi di rete che girano su Unix/Linux ma queste vulnerabilità sono già state risolte da tempo. In ogni singolo giorno dell’anno, solo quattro o cinque vulnerabilità (su oltre 30.000 programmi esistenti) risultano prive di “patch”. Questo è possibile proprio grazie alla natura aperta di Linux e del software open source in generale: dato che una grande quantità di utenti, di amministratori e di programmatori professionisti usa questi programmi ogni giorno per il proprio lavoro, le falle vengono scoperte e “tappate” ad una velocità impressionante. Tutte queste persone hanno un interesse personale a fare in modo che questo avvenga e non si fanno certo pregare quando è ora di mettere in campo le loro competenze tecniche ed il loro tempo per questa causa. I sistemi di aggiornamento automatico (RPM, YUM, APT, etc.) provvedono poi all’installazione tempestiva delle patch su tutti i sistemi esistenti per cui la vita media di queste vulnerabilità è di pochi giorni.

Questa situazione è ben diversa da ciò che avviene per il software commerciale, dove si è costretti ad aspettare i comodi del produttore. Come avrete letto, il mese scorso (Febbraio 2010) è stata scoperta una vulnerabilità che si celava nella MS/DOS virtual machine di Windows dal 1991 (19 anni fa). Nello stesso modo, a Novembre 2009 è stata rilevata una vulnerabilità di Internet Explorer che risale alla versione 6 (2001). Non credo che sia necessario aggiungere altro.

Detto questo, possiamo anche ricordare che Linux dispone di un firewall addirittura all’interno del kernel. E non si tratta certo di un firewall di seconda scelta, visto che viene usato come firewall aziendale da circa il 70% delle aziende che ha un firewall. Se confrontate questa situazione con il firewall fornito con Windows potete capire perchè sui server si usa abitualmente un sistema Linux al giorno d’oggi.

La resistenza alle infezioni

Se il sistema non espone “servizi” (cioè “Windows Services” o “Unix Daemons”) è pur sempre possibile tentare di accedere ad esso sfruttando uno dei moltissimi “motori” che esistono all’interno delle applicazioni. Dentro quasi ogni applicazione moderna, infatti, è presente un “interprete” in grado di eseguire programmi scritti in uno dei molti linguaggi esistenti. Ad esempio, tutti programmi Microsoft contengono almeno un interprete Visual Basic, oltre ad un sempre più diffuso interprete C# e ad altri interpreti specifici, come JavaScript. Lo stesso vale per Mozilla Firefox e Thunderbird (Javascript) e per OpenOffice (Star Basic). Si tratta solo di “convincere” il sistema e/o l’utente ad eseguire il nostro programma.

E qui casca l’asino. Gli interpreti di linguaggio presenti nelle applicazioni Microsoft sono infatti famosi per l’enorme quantità di falle di sicurezza che hanno rivelato di possedere nel corso degli anni. Questa è sia una conseguenza di qualche errore di programmazione (piuttosto raro, ad essere sinceri) che di una perversa tendenza di Microsoft a privilegiare la ricchezza di funzionalità rispetto alla sicurezza. Molte delle funzionalità offerte da questi interpreti sono praticamente sconosciute agli utenti ma restano comunque disponbili per le aziende (che li usano, ad esempio, per tempestarci di pop-up pubblicitari) e per gli “hacker”.

Nessun’altro produttore al mondo può vantare un simile record negativo e questa è una delle ragioni principali per cui gli altri ambienti operativi, tra cui Linux e MacOS, sono enormemente meno sensibili alle infezioni.

La compartimentazione

L’altro motivo principale per cui le infezioni risultano così rare e così poco devastanti su Linux, Unix e MacOS è che questi sistemi, a differenza di Windows, sono sempre stati attentamente compartimentati: ogni singolo utente può fare danni solo al proprio materiale (alla propria “home directory”). Per riuscire ad intaccare il sistema ospite bisogna obbligatoriamente accedere ad esso come “amministratore”, cioè “root”. Su questi sistemi l’utenza root viene difesa con le unghie e con i denti e viene usata solo per pochi, ben precisi compiti di amministrazione.

Sui sistemi Windows, tuttora, si insiste a voler utilizzare una sola utenza (che ha i privilegi di un amministratore) per tutte le attività quotidiane. Di conseguenza, quando un programma malevolo riesce ad avere accesso al sistema può fare dei danni devastanti.

Colpa di Microsoft, certo, perchè continua a consegnare macchine configurate in questo modo, ma colpa soprattutto dell’utente tipico di Windows che pretende di usare un PC lasciando il cervello in un bicchiere sul comodino.

Vulnerabilità del Desktop Manager

Recentemente, è stato fatto notare che i “desktop manager” di Linux, cioè Gnome e KDE, rendono disponibili al loro interno dei potenti interpreti di linguaggio (Python) usati per molti compiti di automazione. Questi interpreti potrebbero essere un facile bersaglio per gli hacker. Ad aggravare la situazione, si è fatto notare che sul file system di un normale sistema Linux/Unix ci sono molti file di configurazione e molti “script” (programmi) che sono accessibili dall’utente “normale” ma che vengono eseguiti dagli interpreti di linguaggio del desktop manager, spesso con privilegi di utenti di sistema (dvd, sys, audio, backup, etc.) ed in alcuni casi persino con i privilegi di root. Si tratta, ovviamente, di una pericolosissima vulnerabilità che non deve assolutamente essere sottovalutata.

Per questa ragione, ha sorpreso molti osservatori il fatto che i responsabili di KDE e di Gnome abbiano risposto con un’alzata di spalle e con la tipica scusa del mondo Microsoft: “works as designed”, cioè “funziona come previsto in fase di progettazione”.

Francamente, sono piuttosto perplesso. Tuttavia, va anche detto che sui server (che sono sistemi critici per quanto riguarda la sicurezza), solitamente non vengono installati i desktop manager. In un ambiente desktop, questa vulnerabilità è probabilmente inevitabile e deve essere accettata. La difesa, infatti, viene “schierata” ad un altro livello, cioè a livello di autenticazione dell’utente, di solidità dei programmi sul lato utente e di quelli sul lato sistema. Il risultato finale, comunque, è che fino ad ora queste vulnerabilità non sono ancora state sfruttate. La mia personale speranza è che venga modificato il meccanismo di configurazione dei desktop manager incriminati e che vengano inseriti gli opportuni meccanismi di sicurezza prima che qualche furbacchione si decida a scrivere gli “exploit” necessari.

Infezioni che attaccano l’MBR

Esistono comunque programmi malevoli che non dipendono in nessun modo dal sistema operativo o dai programmi applicativi. Un esempio di questi malware sono certi rootkit che si installano nell’MBR (il settore iniziale del disco rigido, usato per memorizzare le informazioni necessarie per caricare il sistema operativo). In questo caso, ovviamente, non esiste un sistema operativo più sicuro di altri. Sono tutti ugualmente impotenti di fronte a questa minaccia.

Resta però vero che per arrivare all’MBR il “virus” deve chiedere un passaggio ad un’applicazione e/o al sistema operativo, e quindi un sistema operativo “robusto”, come Linux o MacOS, risulta più sicuro anche in questo caso. Inoltre, anche su sistemi multiboot (Linux e Windows sullo stesso disco), l’infezione diffusa da Windows non riesce a contagiare l’installazione di Linux che si trova sullo stesso disco per il semplice motivo che non esistono gli stessi agganci.

I programmi comuni a Windows e Linux

Molti programmi, come Firefox, Thunderbird ed OpenOffice, funzionano indifferentemente su Linux e su Windows. Ma, allora, quando questi programmi “atterrano” su Linux non si portano forse con loro anche i problemi che hanno su Windows?

Si. Peccato però che questi programmi (per le ragioni che ho già spiegato) abbiano pochissimi problemi. Sicuramente molti, molti di meno di quanti ne abbiano i loro concorrenti Microsoft (Explorer, Outlook, Office).

A parte questo, su Linux viene completamente a mancare il substrato che permette ad una infezione di passare da Firefox o da Thunderbird al sistema operativo sottostante. Questo non solo perchè il sistema operativo è diverso ma anche perchè è più robusto (sempre per le ragioni che ho già spiegato).

Più semplice da bucare

A questo punto, dovrebbe essere chiaro che anche se Linux può apparire più semplice da bucare di Windows (soprattutto a causa della sua natura aperta), in realtà è robustissimo. Lo dimostra il fatto che da almeno 10 anni molti ricercatori tentano inutilmente di mettere a punto un “virus” per Linux che sia in grado di fare qualche tipo di danno e di propagarsi da solo.

Dieci anni di tentativi andati a vuoto. Nessun virus per Linux finora ha dimostrato di poter fare danni significativi e/o di potersi propagare da solo. Questo è stato possibile soprattutto grazie alla accuarata compartimentazione del sistema operativo ed alla cura posta nella creazione dei programmi.

Due parole su MacOSX

MacOS X si è giustamente guadagnato la fama di essere il sistema operativo più sicuro del momento (oltre che il più semplice da usare, il più flessibile ed il più stabile). È tutto vero.

Parte del merito è dovuto al fatto che Apple controlla completamente il processo produttivo (hardware, sistema operativo ed applicativi) e che ogni passaggio viene attentamente sorvegliato e certificato. Parte del merito va all’azione di sorveglianza svolta da utenti e programmatori Apple (MacOS X ha un “cuore” parzialmente open source, come Linux).

Secondo me, tuttavia, la parte principale del merito va riconosciuta ai diversi “default” usati da Apple. Per definizione, una macchina Apple nasce con tutte le funzionalità di sicurezza attivate e deve essere l’utente, se lo ritiene necessario, a disabilitarle. Esattamente il contrario di ciò che avviene abitualmente nell’ambiente Windows.

Conclusioni

Nessun sistema operativo è invulnerabile, nemmeno Linux o MacOS X, ma ci vuole davvero poco a fare di meglio della tradizione Microsoft.

In ogni caso, tutti i sistemi operativi, persino Windows, possono essere resi quasi impenetrabili. Bisogna saper scegliere ed utilizzare gli strumenti giusti ma è perfettamente possibile blindare qualunque sistema operativo.

Non vi resta quindi che studiare il problema e fare le vostre prove.

Alessandro Bottoni

Annunci
Comments
One Response to “Quanto è sicuro Linux?”
  1. Luca Sognatore ha detto:

    Uh… addirittura un post… sono lusingato ;-)

    Comunque, grazie della risposta, chiara e precisa come sempre.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: