Davanti ad un problema il matematico cerca di ricondurlo ad una formula matematica, il fisico cerca di risalire al fenomeno fisico che lo ha prodotto, l'informatico spegne e riaccende.

— Anonimo

Linux & Virus

Tagged:

http://www.stenoweb.it/files/blog/virus.png Qualche tempo fà ho trovato questa interessante serie di post sull'argomento "Linux & Virus". Lo voglio riproporre qui in quanto a mio parere molto utile e interessante.

Molti si chiedono se serva, o meno un antivirus su GNU/Linux. Voglio spiegare bene la questione, anche perché in rete si trovano notizie discordanti e spesso fasulle. I produttori di antivirus è già da qualche anno che predicano la nascita di virus su GNU/Linux, ma non se ne sono visti. E i motivi sono tecnici e cercherò di spiegarli.

Tipi di malware

Prima di tutto, una definizione dei diversi tipi di virus, o meglio di "malware".

  • Virus: un virus è un programma malevolo che usa un altro programma come veicolo di diffusione e replicazione, esattamente come fanno i virus biologici che usano le cellule per riprodursi. Un virus ha quindi bisogno di un altro programma da infettare.
  • Trojan: un trojan (cavallo di Troia) è un programma che fa credere all’utente di essere utile, mascherandosi da qualcos’altro. Ad esempio alcuni trojan appaiono inizialmente come dei codec per la riproduzione di contenuti multimediali.
  • Worm: un worm (verme) è un programma malevolo che può riprodursi senza bisogno di farsi veicolare da un altro programma.
  • Toolkit/Rootkit: un toolkit può essere malevolo o no. Con lo stesso termine infatti si indicano sia programmi utili (come le librerie GTK) sia programmi malevoli. In questo secondo caso ci si riferisce a librerie che vanno a sostituirsi o affiancarsi a quelle di sistema o di programmi per procurare danni, nascondendosi in modo da sfuggire all’attenzione dell’utente. Quando un toolkit coinvolge il kernel del sistema operativo (ad esempio come finto driver), si parla di rootkit. Di norma l’uso di questo malware è quello di installare una backdoor (”porta sul retro”) attraverso cui l’attaccante può entrare nel sistema colpito e prelevarne i dati o addirittura prenderne il controllo.
  • Wabbit: è un programma malevolo che non usa i servizi di rete o altri file o programmi per riprodursi. Un esempio è la fork bomb.
  • Altri tipi di malware: altri tipi di malware si distinguono più per lo scopo che per le modalità di azione e diffusione, di solito riconducibili alle categoria precedenti. Tra questi ricordiamo gli spyware (codice spia), gli adware (pubblicità indesiderate che compaiono sul desktop) e i keylogger, programmi che registrano l’attività dell’utente soprattutto al fine di scoprire le password e i numeri di carta di credito digitati. Inoltre la diffusione di formati di file che possono contenere codice anche se non sono programmi veri e propri (ad esempio i formati documenti che possono contenere macro o le pagine web che possono contenere javascript) ha portato alla nascita di macrovirus.

Bene, ma come agisce un malware?

Non è sufficiente che il malware entri a contatto con il sistema (ad esempio attraverso uno scambio di file, una e-mail o la visualizzazione di una pagina web), ma è necessario che entri in esecuzione. Difatti gli antivirus mettono i file infetti in “quarantena”, ossia in una cartella controllata dove non possono più agire.
Quando il malware entra in contatto con il sistema deve presentarsi uno dei seguenti casi affinché esso possa entrare in esecuzione:

  • una azione volontaria dell’utente mette in esecuzione il malware: questo è il caso dei trojan e di molti worm;
  • il malware entra in esecuzione anche in mancanza di una azione volontaria: in tal caso è stata sfruttata una vulnerabilità.

Una vulnerabilità è una falla di un programma che produce un comportamento non previsto dal programmatore o considerato (a torto) non pericoloso.

Ed ora, ecco perché un antivirus è quasi sempre inutile.

1. I permessi

I sistemi operativi di tipo Unix hanno una rigida e complessa gestione dei permessi. Ogni utente, e quindi ogni programmi eseguito da tale utente, può fare con un file solo ciò che è consentito in base ai permessi che egli possiede. Si consulti la guida del comando sudo per approfondire la logica dei permessi. Questo implica alcune conseguenze:

  • i programmi utente sono separati da quelli di amministrazione;
  • I programmi utente possono agire solo sulla home di quell’utente, non sui file di amministratore né su quelli di altri utenti;
  • i programmi per essere eseguiti devono avere lo speciale attributo di eseguibili.

In base a ciò, un malware che agisce a livello utente non può creare danni al sistema, ma può al limite cancellare o infettare solo i file appartenenti a quel determinato utente.
Di norma nessun sistema di tipo Unix installa i programmi (neppure i programmi utente) nella directory home dell’utente. Ciò, unito alla suddetta gestione dei permessi, mette al riparo il sistema dall’infezione da parte dei tradizionali virus che non trovano eseguibili a cui "attaccarsi". I worm non possono agire perché per farlo devono avere i permessi di esecuzione. I rootkit non possono installarsi autonomamente in quanto caricare un modulo/driver nel kernel richiede i permessi di amministrazione.
Ciò a meno di vulnerabilità del sistema. Infatti una vulnerabilità grave può permettere al malware di superare tali restrizioni e acquisire i permessi di amministratore.

Ciò è già accaduto per i sistemi di tipo Unix. Il primo worm della storia è nato proprio per Unix sfruttando una vulnerabilità.

2. Essere open source

Un software open source, e quindi GNU/Linux, ha la caratteristica di avere il codice sorgente liberamente consultabile e modificabile. Questo apparentemente potrebbe rendere meno sicuro il sistema. In teoria, se tutti conoscono il codice sorgente, chiunque può scoprirne le vulnerabilità e quindi sfruttarle con fini fraudolenti.
Nella pratica, però, si realizza l’esatto opposto: proprio perché tutti possono scoprire facilmente le vulnerabilità, esse possono venire tempestivamente corrette. Molte vulnerabilità vengono infatti corrette ancora prima che possano essere sfruttate a danno del sistema.

Navigare sul Web con un browser open source è più sicuro che navigare con uno proprietario e usare una suite per l’ufficio open source è più sicuro che usarne una proprietaria.

3. Rafforziamo i permessi

Sono stati adottati vari meccanismi preventivi per rafforzare la sicurezza del sistema come:

  • l’uso di chiavi di autenticazione per il software e i repository che assicurano la provenienza originale e sicura degli stessi;
  • la necessità, quando si esegue un programma nella directory corrente, di anteporre il suo percorso "./"in modo tale che un programma che abbia lo stesso nome di un comando comunemente usato, non possa essere per sbaglio eseguito al posto di tale comando (questa semplice precauzione ha stroncato la diffusione di worm come ls);
  • ulteriori rafforzamenti del meccanismo dei permessi come SELinux (sviluppato dalle forze armate statunitensi) e AppArmor (sviluppato da Novell e presente in Ubuntu): tali sistemi creano i cosiddetti "contesti": ad esempio una pagina html creata nella home dell’utente, anche se trasferita nella directory di Apache /var/www non funzionerà in quanto nata in un contesto differente; un programma presente nella directory utente non verrà eseguito se trasferito in una directory di sistema come /usr/bin/.

4. Unix e il malware

Per comprendere quanto i sistemi Unix siano sicuri è utile consultare alcune fonti:

  • la pagina di uno dei programmi più noti, apprezzati e premiati nella lotta al malware chkrootkit. Questa elenca solo una decina di malware (sia rootkit che worm) in oltre 10 anni di sviluppo del programma. Alcuni di questi sono worm ormai desueti come il citato ls, altri sono rootkit solo per alcuni sistemi Unix che quindi non coinvolgono gli altri sistemi della stessa famiglia (ad esempio un malware per Solaris non può agire su GNU/Linux o *BSD), altri ancora si riferiscono a determinate versioni del kernel di tali sistemi (infatti una volta corretta la vulnerabilità il malware è diventato innocuo). Sfogliando il changelog del programma si nota che i malware aggiunti annualmente per i sistemi Unix supportati dal programma sono dell’ordine di qualche unità;
  • la pagina sui virus per Linux nella documentazione internazionale di Ubuntu, nella quale si illustrano i pochi malware conosciuti per Linux, la maggior parte dei quali nei fatti risulta innocua (perché, per esempio, necessità dei permessi di amministratore).

Nella realtà il concetto di virus è praticamente sconosciuto nei sistemi di tipo Unix essendo i pochi finora scoperti non in grado di diffondersi efficacemente, perché necessiterebbero di entrare fraudolentemente in possesso dei permessi di amministratore.

Grande Steno!
Finalmente un articolo che spiega bene questo argomento.
Fino ad ora credevo nella balla che i virus per i sistemi GNU/Linux non esistevano per la poca diffusione di tali sistemi operativi tra utenti consumer, anche se in effetti puzzava di bufala.
Peccato che sono obbligato ad usare windows per lavoro, altrimenti addio Microsoft.

CANCELLATE PROPRIO WINZOZZ E METTETE DEBIAN COME ME'...E' MEGLIO

Heya i'm for the first time here. I found this board and
I in finding It truly helpful & it helped me out much.
I'm hoping to provide one thing again and help others such as you
helped me.