3. Pinguini col raffreddore

Sfatiamo una volta per tutte un mito: esistono malware per Linux, pericolosi come tutti gli altri. Vediamo come sia possibile.

3.1. Immune ai virus?

Niente nell'architettura e nel progetto di Linux lo rende di fatto immune ai virus. Come tutti i sistemi operativi, Linux è un software, e come tutti i software ha i suoi errori e le sue debolezze. Quindi niente ci autorizza a pensare che il software che costituisce il cuore di Linux sia meno vulnerabile ai virus.

Inoltre, in una normale installazione vi sono innumerevoli servizi, aperti all'accesso dalla rete, che possono essere facilmente configurati male abbastanza da diventare punti di accesso per i malware.

Esistono alcuni progetti, come ad esempio SELinux, studiato dalla NSA americana, che aggiungono ulteriori livelli di sicurezza al nucleo del sistema operativo, ma è sempre un software, certamente utilissimo ed insostituibile, ma come tutti i software ha i suoi limiti, e soprattutto deve essere configurato da qualcuno che sappia dove mettere le mani.

Quindi niente, lo ribadisco, ci autorizza a pensare che Linux sia meno vulnerabile ai virus in sé, rispetto a qualsiasi altro sistema operativo.

3.2. Infilarsi in un pinguino

Ma rimane il problema di come insediare il malware nei computer degli utenti: è l'ostacolo maggiore che un creatore di malware deve affrontare. E quello che implica spesso lo sforzo tecnologico maggiore.

Diversamente da Windows, qui non si può contare su un ampio parco installato di sistemi operativi tutti uguali e tutti, inevitabilmente, con le stesse falle. Ma ultimamente anche su Windows il numero di falle sfruttabili è diminuito drasticamente. I continui aggiornamenti e la maggiore attenzione al problema da parte dei produttori di software ha reso la vita molto più difficile ai creatori di malware. Che ovviamente stanno adattandosi, e si stanno specializzando in social engineering, un termine che fa molto “hacker”, ma in fondo indica semplicemente un inganno.

Nel novembre 2006 nelle caselle e-mail di molti giunse una diffida di un sedicente avvocato, con nomi differenti, che lamentava di aver ricevuto materiale pornografico da quell'indirizzo di posta. Minacciando neanche tanto velatamente querele e sventure, invitava a controllare il computer con un antivirus scaricato da un certo sito.

Se state pensando “è ovvio che è una trappola” siete fortunati, perché molti non lo hanno capito ed in perfetta buona fede hanno scaricato ed installato l'antivirus, totalmente fasullo, che era in realtà un malware vero.

Questo è il nuovo pericolo ed il metodo che sempre più viene usato per infilare malware nei nostri computer: l'inganno. E per questo non c'è magia tecnologica che ci possa salvare.

Proprio per quanto detto fino ad ora, niente ci autorizza a pensare che sia più complicato o difficile infiltrarsi in un computer con installato Linux rispetto ad un qualsiasi altro sistema operativo. Si tratta solo di scegliere il metodo con più probabilità di successo e creare il programma adatto o architettare la trappola giusta, niente di più.

Per esempio, uno dei motivi che vengono citati come freno alla creazione di malware per Linux è il fatto che ogni installazione ed ogni distribuzione è differente dalle altre.

Questa è una pia illusione: un normalissimo shell script ha le stesse possibilità di fare danni di qualsiasi altro programma, e tutte le installazioni di Linux, indipendentemente dalla distribuzione, hanno una shell di serie, di solito sempre la stessa. E anche se la disposizione delle directory e la posizione di molti dei file è differente, ci sono tutti gli strumenti per trovare automaticamente tutto quello che serve. E' solo questione di conoscere quello che c'è “sotto il cofano”.

Altra ragione che viene riportata spesso è che essendo Linux un Open Source, tutti possono controllare il sorgente e rilevare errori e problemi molto in fretta. Questo è vero, ma occorre tenere presente che il codice sorgente che costituisce il kernel di Linux e la massa delle sue applicazioni è immenso, e che viene continuamente modificato per aggiungere funzioni, aggiungendo di conseguenza (ed inevitabilmente) errori. Quindi anche questa è una motivazione piuttosto debole, per quanto personalmente la ritenga condivisibile.

Non solo, c'è un problema, più grave e meno considerato: molte distribuzioni Linux offrono una dotazione di software immensa, e molti di questi hanno funzioni che al normale utilizzatore non serviranno mai, mentre possono diventare porte di ingresso di malware. Ed ancora, la disponibilità di ambienti di sviluppo per il web, come il PHP, rendono veramente alla portata di tutti attrezzarsi il proprio sito web dinamico. Ma non è un segreto che le applicazioni in PHP utilizzate sul server Apache sono uno degli obbiettivi preferiti dai creatori di malware, primariamente perché è molto più semplice sfruttare un errore in una di queste applicazioni che cercare di introdursi attraverso canali più convenzionali.

Per gli scettici, possiamo fare un paio di esempi. Nel dicembre 2004 un malware (nome in codice Santy) sfruttava un errore in una applicazione PHP per la gestione di forum online per compromettere direttamente i web server che ospitavano l'applicazione. Il malware era composto da uno script in linguaggio Perl, che usava Google per cercare altri siti web vulnerabili.

Nell'agosto del 2002 un pacchetto di sorgenti per OpenSSH (un servizio per accedere in shell ad un computer attraverso una connessione cifrata, quindi relativamente sicura) fu modificato da ignoti sul server principale che lo ospitava. La modifica riguardava uno dei file di supporto per la compilazione, che produceva uno shell script che a sua volta creava un programma e lo avviava. Il risultato era che chiunque compilasse OpenSSH sul suo computer installava una backdoor che permetteva al creatore della modifica di impartire comandi al computer, prendendone virtualmente il controllo.

Se ancora ce ne fosse bisogno, altri esempi di vario tipo possono essere cercati in Rete. Non è quindi assolutamente necessario utilizzare tecniche sofisticatissime di programmazione per sfruttare un oscuro errore in qualche punto del kernel di Linux per introdurre un malware nel computer. Può essere fatto con un inganno ben architettato. Il resto lo farebbe l'ignaro utente.

3.3. Pinguini zombi

Facciamo un passo in più: se il creatore del malware si ponesse alcune regole di base, la creazione di malware per Linux sarebbe infinitamente più semplice ed il prodotto molto più dannoso di quanto si pensi.

La gran parte dei malware in circolazione tende a compiere sforzi immani per nascondersi in modi molto sofisticati, per poi fallire miseramente nel rendere palese la loro presenza con sintomi evidenti ed inconfondibili (lentezza, blocchi improvvisi, icone sul desktop, comparsa di pagine web caratteristiche durante la navigazione, ecc.). Ovvio che a questo punto altro grande sforzo deve essere profuso per impedire l'individuazione precisa di dove sia annidato il malware, per renderne difficoltosa la rimozione.

Proviamo a ragionare in altra maniera: supponendo di voler creare uno spambot, potremmo decidere di rendere il malware poco aggressivo, limitando la quantità di messaggi di spam generati al secondo, per non insospettire l'utilizzatore di quanto stia succedendo. Inoltre, non è necessario inserire il programma in punti vitali del sistema operativo per renderlo attivo: basta infilarlo nel profilo di avvio di un singolo utente, per averlo attivo ad ogni ingresso dell'utente stesso.

Accettati questi compromessi, il malware potrebbe essere composto da un semplicissimo script shell che scarica da un server in Internet i dati necessari per comporre i messaggi di spam per poi inviarli al ritmo di due-tre al minuto. L'utente medio non si accorgerebbe di nulla, e la cosa più devastante è che il malware non avrebbe alcun bisogno dei diritti di amministrazione per funzionare.

Molti dei malware che attaccano Linux usano invece sofisticatissime tecniche per inserirsi come moduli del kernel, sostituire comandi diagnostici per vedere i processi attivi ed i collegamenti di rete in piedi e risultare così invisibili. Ma per far questo hanno necessità di possedere i diritti di root, l'utente amministratore. Senza questi non possono funzionare. Lo sforzo di programmazione è enorme, per un numero realmente esiguo di computer che possono essere compromessi.

3.4. Pinguini contro Finestre

Ma allora, perché Linux non è invaso ai virus? I motivi dovremmo averli chiari:

  • Il creatore di malware punta ai grandi numeri. Dato che vuole ottenere il massimo successo col minimo sforzo, tende ad orientarsi verso il sistema operativo più diffuso, dove ha più probabilità di fare danni. Linux, al momento, ha una diffusione irrisoria nei terreni di caccia abituali dei malware: computer di casa o di piccole e medie aziende, in mano a persone con competenze per forza di cose limitate, e quindi più vulnerabili ad un attacco operato con l'inganno, e meno abili nello stanare il malware.

  • Linux è un sistema operativo poco amichevole, nel senso che l'utente deve sapere cosa sta facendo. Per questo motivo le persone che usano Linux sono in media un po' più smaliziate, e quindi meno vulnerabili ad attacchi basati sull'inganno.

  • La politica di gestione dei diritti utente in Linux è piuttosto rigida, ed a ragion veduta. L'utente amministratore (root) viene utilizzato solo quando serve, e gli utenti vengono incoraggiati e indottrinati ad usare un utente normale per il lavoro quotidiano, ed a limitare al massimo l'uso dell'account root. Questo taglia le gambe in partenza a tutta una serie di malware che tendono a sfruttare invece diritti di accesso elevati per insediarsi. In Windows XP™ di contro, l'utente creato al momento dell'installazione è per definizione un amministratore, esponendo l'intero sistema operativo a qualsiasi malware in cui si imbattano gli utenti durante la navigazione. Dato che tutti i malware possono agire solo con i diritti dell'account utente colpito (tranne rarissimi casi in cui un bug permetta l'uso di una tecnica chiamata privilege escalation), se viene bersagliato un utente normale il malware potrà fare ben poco, e soprattutto non potrà toccare niente del nucleo del sistema operativo. Ma se viene colpito un utente amministratore, il malware avrà campo libero: potrà modificare qualsiasi cosa a piacimento, e potrà poi “declassare” l'utente legittimo per impedirgli qualsiasi interferenza con la propria attività.

  • La situazione è aggravata dal fatto che alcune versioni di Windows (ad esempio XP Home Edition) non usano tecniche di controllo accessi al livello del filesystem, per cui anche da utente non amministratore molti malware possono insediarsi in punti vitali del sistema operativo. In Linux un utente normale non potrà mai sostituire un modulo del kernel, o scrivere su un file di configurazione delle interfacce di rete, a meno ovviamente di errori macroscopici nella configurazione.

  • La diversificazione delle applicazioni più usate è un altro punto a favore della scarsa diffusione di malware per Linux, seppur con minore impatto rispetto agli altri. E' una condizione ben diversa dal mondo Windows, dove ad esempio esiste praticamente una sola suite di applicazioni per ufficio, un solo browser (fino a qualche tempo fa, almeno, poi è arrivato Firefox) ed un solo client di posta. Costruendo un malware che sfrutti uno specifico programma si ha la certezza di colpire un gran numero di computer. Nel mondo Linux, le cose sono profondamente differenti: solo per la posta elettronica esistono almeno una decina di programmi diversi, sia per la modalità terminale che per il desktop grafico: Evolution, Balsa, Kmail, Sylpheed, Thunderbird, Mozilla, Mutt, tanto per citarne alcuni. Per di più non tutte le distribuzioni usano le stesse applicazioni nella stessa versione. Chi volesse creare un malware sfruttando un problema di una specifica applicazione si troverebbe sempre a poter colpire una percentuale ridottissima di installazioni Linux, perdendo il vantaggio dei grandi numeri. Questo vantaggio però viene completamente a cadere se qualcuno dovesse creare e mettere in circolazione un malware costituito ad esempio da uno shell script: praticamente tutte le distribuzioni Linux potrebbero esserne colpite, ed il malware potrebbe funzionare senza problemi.

  • Ultimo motivo, ma non per questo meno importante, è dato dalla semplice constatazione, numeri alla mano, che finché esiste la possibilità di creare e diffondere malware senza troppi sforzi (e con discreto successo...) concentrandosi nel colpire le installazioni Windows, non c'è alcuna motivazione per i creatori di malware di cambiare obbiettivo. E' solo una questione di compromesso fra sforzo necessario e beneficio che se ne ottiene.

Questi, in grande sintesi, i motivi principali che rendono Linux meno appetibile ai creatori di malware.

3.5. Antivirus per pinguini

A questo punto rimane da decidere se sia effettivamente necessario un antivirus in Linux. La risposta è tutt'altro che semplice. Ad oggi l'esigua quantità di malware, nessuno dei quali attivi al momento in cui scrivo, suggerisce che un antivirus sia uno spreco di risorse. Ma nel momento in cui nel nostro computer transitino file provenienti o destinati ad altri sistemi operativi maggiormente vulnerabili, sarebbe consigliabile una scansione di controllo limitata ai soli file che devono essere scambiati. Niente impedisce che un file scaricato da Internet con Linux, contenente un malware, una volta trasferito su Windows rimanga perfettamente funzionante e distruttivo.

Antivirus per Linux ne esistono, sia commerciali che open source. ClamAV è un antivirus scanner open source il cui impiego primario è filtrare i messaggi in arrivo sui server di posta elettronica, per impedire che mail con malware allegati possano raggiungere computer vulnerabili. Può comunque essere utilizzato per controllare file su richiesta, ma non ha ad esempio un plugin specifico per i programmi di posta elettronica in Linux, come non ha un modulo di protezione in tempo reale, come la quasi totalità degli antivirus per Windows.

La legge italiana impone l'uso di un software antivirus quando sul computer siano conservati o elaborati dati personali (nell'accezione del Decreto Legislativo n.196 del 2003), indipendentemente dal sistema operativo e dal tipo di software utilizzato. Quindi in questo caso il problema non si pone, l'antivirus è obbligatorio.