Come creare un virus per Linux in 5 facili mosse (forse)

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:

Virus: è giunta l’ora Linux

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:

Linux.Simile

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:

Linux malware

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

www.alessandrobottoni.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:

Why GNU/Linux Viruses are fairly uncommon

About these ads
Comments
6 Responses to “Come creare un virus per Linux in 5 facili mosse (forse)”
  1. guiodic scrive:

    Segnalo questa serie di miei post: http://guiodic.wordpress.com/category/gnulinux/virus-e-gnulinux/

    e colgo l’occasione per farti un grande “in bocca al lupo” per le elezioni.

  2. hexaae scrive:

    Il problema non è Windows in sé, perché da Vista in poi già si sarebbero colmate le lacune in fatto di protezione e uso di account con privilegi ridotti. Il problema è l’utenza Windows, che per esempio ancora oggi su Vista e Win7beta disabilita completamente l’UAC e vuole girare da Amministratore h24!
    Insomma non è questione di ideologia anti-MS o pro-MS, ma di educare l’utenza all’uso del PC che da Vista+ è già molto sicuro rispetto al passato, in attesa di Midori…

    • prisoner scrive:

      la questione è che se metti lo stesso utente davanti a una macchina linux sarà sicuro, se lo metti davanti a una macchina windows no. Non è questione di utenza è questione di archietettura.

  3. mjordan scrive:

    Noi non ti faremo piu’ sentire una cazzata del genere “NON È AFFATTO VERO CHE LINUX NON È COLPITO DAI VIRUS SOLO PERCHÈ I VIRUS WRITER NON LO CONSIDERANO APPETIBILE E NON SCRIVONO I VIRUS!!!!!!!!!!!!!!” tu però non farci piu’ sentire la cazzata che nel 2010 Linux è sviluppato dai volontari non pagati senza scopo di lucro, perchè ormai Linux è sviluppato da grosse corporation e i principali project “heads” sono per la maggior parte impiegati RedHat, Intel, IBM, Canonical, Suse e Novell. Solo RedHat spende 100 milioni di $ l’anno per l’avanzamento di Linux come sistema e da sola contribuisce il 13% del codice kernel. Lo stesso Linus Torvalds è ben lontano dall’essere un volontario, visto che ormai va in giro in Ferrari, tiene una casa sulla Silicon Valley ed è il primo impiegato della Linux Foundation.

    Per quanto riguarda le motivazioni sulla maggiore sicurezza di Linux, dico solo che ci è scappata una risata. I soliti luoghi comuni.

  4. Mattia scrive:

    Davvero un bellissimo articolo, scritto divinamente e che, sebbene abbastanza lungo, non ti stanchi di leggere fino alla fine, che è una delle cose fondamentali per uno “scrittore”.
    Ho letto anche gli articoli di guiodic su linux e virus e trovo entrambi davvero esaurienti in termini di informazione.
    Ancora complimenti, Mattia.

  5. Mattia scrive:

    Rieccomi sono l’utente di prima, mi è venuta in mente adesso una considerazione, ma le possibilità che io stia per dire una “cagata pazzesca” (alla ragionier Fantozzi) sono molto alte.
    Quando tu dici che un virus potrebbe benissimo intaccare i dati di un’interfaccia grafica, per esempio i dati della home, poichè la home non è protetta da password di root, allora secondo te converrebbe spostare la home in un’altra partizione che richiederebbe la password ogni qual volta tale partizione venga montata o aperta? (bè quest’ultima in effetti sarebbe una scocciatura enorme!) così da riuscire a proteggere anche i dati della home?
    Ciao ancora.

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...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 36 follower

%d blogger cliccano Mi Piace per questo: