Se siete abbastanza fanatici da seguire l’annosa questione Windows/Linux con la dovuta attenzione, avrete sicuramente già letto questo interessante articolo di Geekzone:
“How to write a Linux virus in 5 easy steps”
Siamo di fronte alla tanto attesa (e sperata?) fine dell’invulnerabilità di Linux? Vediamo.
Una morte annunciata (un po’ troppo in anticipo ed un po’ troppo spesso)
Leggete questo articolo:
Convincente, non è vero?
Peccato però che questo articolo sia del 2001 (duemilauno, cioè otto anni fa)! Sono passati otto anni, otto, e siamo ancora qui. Windows e le sue applicazioni continuano ad affondare sotto i colpi di Conficker e noi utenti Linux (e Unix in generale) continuamo a ridere sotto i baffi.
Volete qualche altro esempio? Questo articolo di Punto Informatico, altrettanto allarmistico, è del 2005 (duemilacinque, cioè quattro anni fa):
“Virus, Linux il prossimo bersaglio?”
Più in generale, la ricerca di “linux virus” su Google fornisce la bellezza di 4.950.000 risultati (quattro milioni novecento cinquantamila), il più “antico” dei quali è del 1996 (quattro anni dopo la nascita di Linux).
La prima volta che io, personalmente, ho sentito parlare di virus per Linux è stato nel 1995, poco dopo il rilascio di XFree86 per Linux. Qualcuno, su una mailing list sosteneva che l’arrivo dell’interfaccia grafica avrebbe aperto la strada ai virus che erano stati sviluppati per motivi di studio allo Xerox PARC su Workstation Unix SVR4 di AT&T, cioè il famoso “giochino” “Crabs”, recensito a suo tempo da Scientic American.
Sto ancora aspettando.
(Alcuni di questi articoli erano stati così convincenti che nel 2000 io stesso ho cominciato a chiedere in giro se esistevano o sarebbero stati sviluppati degli antivirus per Linux. Anche gli “esperti” a volte si fanno condizionare…)
Tentativi andati a vuoto
Leggete questa scheda:
Si, avete letto bene: questa è proprio la scheda descrittiva di un virus per Linux. Un virus vero, reale, rilasciato “in the wild”, rintracciato e descritto da Symantec (che è uno dei principali punti di riferimento mondiali in fatto di virus).
Infatti, esistono i virus per Linux. Finora ne sono già stati sviluppati circa un migliaio. Potete farvi un’idea della situazione corrente leggendo questa pagina della Wikipedia Americana:
Quindi NON È AFFATTO VERO CHE LINUX NON È COLPITO DAI VIRUS SOLO PERCHÈ I VIRUS WRITER NON LO CONSIDERANO APPETIBILE E NON SCRIVONO I VIRUS!!!!!!!!!!!!!!
Non fatemi mai più sentire una cazzata del genere. Oltre la metà dei server Internet girano su Linux, compresi quelli delle banche. Non riesco ad immaginare NULLA di più appetibile di questo per un virus writer e, infatti, di virus per Linux ne esistono parecchi.
Stranamente, però nessuna epidemia di virus, worm od altre schifezze degli ultimi 15 anni (cioè da quando esiste Linux) ha mai coinvolto Linux. Cercare su Google per credere.
L’invulnerabilità di Linux
Com’è possibile che Linux resista così bene ai Virus e ad altre forme di infezione?
La ragione è semplice: il codice malevolo, per propagarsi e fare danni, ha bisogno di punti di aggancio. Deve potere sfruttare i meccanismi del software installato sulla macchina. Da questo punto di vista, Linux offre molti meno agganci ai programmi malvagi e, viceversa, offre molti più strumenti di difesa agli utenti.
Il suo software è più “corretto” e “sicuro” perchè è ispezionato e collaudato più spesso e più a fondo.
Inoltre, gli strumenti di controllo e di difesa, su Linux, sono spesso a portata di mano mentre su Windows sono nascosti all’utente o sono completamente assenti. Le configurazioni sono più chiare ed i default sono concepiti per favorire la sicurezza, non per favorire una discutibile idea di “facilità d’uso” e di comodità.
La vulnerabilità dei Desktop Manager
La vulnerabilità che descrive Foobar su Geekzone però è assolutamente reale. La tecnica che Foobar descrive funziona davvero e rappresenta davvero un serissimo pericolo per gli utenti Linux (almeno quelli che usano Linux sul desktop, come me).
Questa vulnerabilità nasce dalla necessità di automatizzare alcuni compiti findamentali all’interno dell’ambiente grafico (il desktop manager, come KDE o Gnome). Praticamente tutti i desktop manager dispongono al loro interno di un interprete di linguaggio (uno “scripting engine”) che viene utilizzato per automatizzare certe operazioni ripetitive e per sviluppare delle estensioni. Ad esempio, KDE 4 usa Python al suo interno per dare vita ai Plasmoidi. Inoltre, quasi tutti gli ambienti grafici devono eseguire operazioni (cioè codice) sotto una identità diversa da quella dell’utente corrente (magari quella di “root”) e/o devono accedere a risorse delicate (come la directory autostart e simili).
Questa vulnerabilità, infatti, affligge tutti i desktop manager esistenti, compresi quelli non legati a Linux, come l’interfaccia grafica di Windows, che è generata, dietro le quinte, da Internet Explorer.
I motori di scripting delle applicazioni
Più in generale, questa vulnerabilità affligge tutte le applicazioni che contengono al loro interno un interprete di linguaggio usato per compiti di automazione e per lo sviluppo di estensioni. Al giorno d’oggi, questo significa praticamente tutte le applicazioni esistenti di un certo peso, da Firefox ad OpenOffice passando per MS Otlook e MS Office.
È proprio grazie alle vulnerabilità di questi interpreti che i worm riescono a diffondersi. Il software Microsoft è tradizionalmente molto vulnerabile a questi tipo di infezioni sin dai tempi del primo motore di “macro” installato su Excel 4.0 e su Word 4.0 (1995). MS però è in ottima compagnia. Anche prodotti molto “quotati” in termini di sicurezza come Firefox, OpenOffice, KDE e Gnome sono sensibili a questo tipo di attacchi.
User e Root sono uguali
Come fa notare Foobar, un worm che sfrutti queste funzionalità del desktop manager e delle applicazioni non ha nessun bisogno di accedere all’identità di amministrazione (“root” su Unix) per fare danni. Questi motori di scripting forniscono già tutti gli strumenti necessari e la grande quantità di informazioni presenti nella directory “home” dell’utente fornisce il materiale su cui lavorare.
Cura 1: chiedere conferma
La cura più ovvia a questa vulnerabilità consiste nel non eseguire codice alla cieca. In generale, i desktop manager e le applicazioni non dovrebbero mai eseguire codice senza aver prima controllato che si tratti di qualcosa di già noto e collaudato e/o proveniente da una fonte sicura.
Questo è ciò che fanno già, in parte, sia Windows, con le sue diaboliche finestrelle, che Linux, con “sudo”. Questo però non è ancora sufficiente e, più in generale, questo meccanismo non può essere portato molto più avanti di così.
Come ben sanno gli utenti Windows, infatti, non si può pretendere che sia l’utente a sapere se una certa operazione è sicura o non lo è.
Cura 2: controllare il codice
L’altra cura, sempre abbastanza ovvia, consiste nel controllare e ricontrollare il codice. Da questo punto di vista, il software Open Source fornisce delle garanzie molto più solide di quello commerciale. È soprattutto per questa ragione che Linux, BSD, OpenSolaris, Firefox, Thunderbird e OpenOffice sono tradizionalmente più sicuri dei loro omologhi commerciali.
Anche questo però non può bastare. Ci sono comunque certe operazioni che devono essere possibili e che possono comunque essere usate a fini malvagi. Questo è il caso, ad esempio, delle funzionalità dei browser (tutti i browser) che vengono sfruttate a danno dell’utente.
Cura 3: Singularity
La soluzione più avanzata (ma comunque non definitiva) ai problemi di sicurezza sarebbe una piattaforma in “managed code”, come MS Singularity e MS Midori. È proprio su questo terreno che Microsoft si prende una bella rivincita sui suoi concorrenti. Nessun’altro ha pensato a niente di simile. Anche il mondo Open Source è riuscito solo a copiare parzialmente Singularity, con i progetti SharpOS e CosmOS.
Quando Midori arriverà sul mercato (forse solo sui server) il termine “sicurezza” acquisirà davvero un nuovo significato.
Ma allora, perchè Linux è invulnerabile?
A questo punto, dovrebbe essere chiaro che Linux NON è invulnerabile ai Virus (e nemmeno a tutte le altre forme di infezione o di attacco). Linux però può vantare i seguenti due grandi punti di forza rispetto a Windows.
Innanzitutto, Linux e tutto il software open source che gira su di esso viene sviluppato da dei volontari, senza scopo di lucro, con il solo scopo di creare un ambiente di lavoro flessibile e potente per i suoi utenti. Di conseguenza, non c’è ragione di non intervenire per risolvere un problema quando il problema è noto.
Questa potrebbe sembrare una cosa ovvia ma non lo è affatto. Per anni Microsoft si è rifiutata di rimuovere o modificare certe “features” dai suoi programmi per ragioni strettamente commerciali, che nulla avevano a che fare con le necessità reali degli utenti. Questo è esattamente quello che è successo quando è stato chiesto a MS di rinuovere o modificare gli script engine di Office, di Internet Explorer o di Outlook. La resistenza di MS è stata tale che persino lo US CERT, nel 2004, si è visto costretto a consigliare gli utenti di abbandonare il software MS ed adottare qualcosa di meno virus-friendly. Leggetevi questa notizia: “Goverment Recommends “Use a Different Browser” to Combat Internet Explorer’s Security Vulnerabilities”. L’advisory originale del CERT è questo: “Vulnerability Note VU#713878”. E non illudetevi nemmeno per un istante che questi siano ricordi del passato: “Pwn2Own 2009, Safari e IE8 cedono in pochi secondi” e “Il worm Conficker continua la sua corsa”. La storia degli ultimi 20 anni parla chiaro: MS coltiva i suoi business, non la sicurezza degli utenti (o la loro libertà).
Inoltre, l’intero ambiente di lavoro di Linux (Kernel Linux, “strato” software GNU, Desktop Manager KDE e Gnome, programmi applicativi come OpenOffice) è Open Source. Tutto questo codice viene continuamente visto, ispezionato, controllato, studiato e modificato da migliaia e migliaia di persone. Nessun segreto può resistere a lungo in queste condizioni. Viceversa, solo Microsoft sa cosa combina il suo software. Il fatto che non esistano vulnerabilità (o, peggio, backdoor) nel software proprietario è difficile da stabilire. Spesso si è costretti a fidarsi del produttore (che è come chiedere all’oste com’è il vino che vende).
In realtà, a voler essere precisi, non è l’ambiente GNU/Linux ad essere più sicuro di quello Microsoft: è l’ambiente Microsoft ad essere un colabrodo in confronto a qualunque altro ambiente operativo esistente (e lo è a causa di ben precise scelte aziendali di MS). Non a caso, Windows è l’unico ambiente per cui è necessario l’antivirus. Su Apple MacO X, per esempio, questi problemi di sicurezza sono sconosciuti esattamente come sono sconosciuti su Linux, su BSD e su Solaris.
Ma non si può rilasciare il codice sorgente di un programma commerciale “solo” per renderlo più sicuro!
E chi l’ha detto?!
Per anni, i programmi CAD/CAE/CAM del mondo Unix sono stati rilasciati ed installati in formato sorgente (perchè era più pratico) e non per questo non hanno avuto il loro mercato.
L’apertura dei sorgenti e la gratuiticità del software sono cose diverse.
Si può benissimo rilasciare come software Open Source un programma, in modo che possa essere verificato e collaudato a fondo, e riservarsi comunque il diritto di venderlo ad un certo prezzo. Questo è quello che fanno, tuttora, diversi produttori di CAD per Unix.
Far rispettare le licenze è un problema diverso dal “pacchettizzare” il codice e dovrebbe essere trattato separatamente da questo, proprio per non costringere l’utente a subire tutti i limiti di un sistema chiuso e non ispezionabile.
Alessandro Bottoni
alessandro.bottoni@infinito.it
Qualche approfondimento:
“Linux vs. Windows Viruses” a The Register
“The short life and hard times of a Linux virus” a Librenix
“The virus threat to Linux” a desktopLinux.com
“How to Write a Linux Virus” a Cheap Hack
ed una sana risata:
