Linux Unix e i virus/Cosa è un virus/Introduzione

Indice del libro

Ciascuno di noi conosce almeno a livello elementare il concetto di “virus”, se non in ambito informatico, almeno per il suo significato biologico. Potremmo dire che un virus è qualcosa che cerca di usare il nostro corpo e le sue risorse per aumentare la propria vitalità e riprodursi a spese della nostra salute e per infettare altri nostri simili. In pratica, è qualcosa che, dal nostro punto di vista, usa in maniera impropria, indesiderata e dannosa il nostro corpo. Sottolineo il dal nostro punto di vista: dal suo punto di vista, un virus fa esattamente ciò che le leggi biologiche gli dettano.

Proviamo ora a fare un parallelo informatico di ciò che è stato detto. Secondo l’esperienza comune, un virus è riconducibile a un pezzo di codice eseguibile in grado di generare copie di se stesso (cioè di riprodursi) e di introdursi in file di dati e nel codice di altri programmi (infettandoli). Questo è il concetto base di virus, ed i virus che hanno solo la funzione autoreplicante vengono detti in genere worms (ovviamente su questi programmi si possono aggiungere funzioni per danneggiare/spiare/rendere più difficile la propria identificazione etc... ) (1, 2, 3).

Comunque molto spesso si dà il nome 'virus' ad una fetta molto vasta di malware (cioè software con scopi di danneggiamento/spionaggio etc) e addirittura a problemi causati da errori degli utenti o dei programmatori. A questo punto, ipotizziamo per semplicità che un virus sia semplicemente un programma eseguibile; la sua esecuzione può essere avviata sia intenzionalmente che automaticamente e senza che l’utente lo desideri e ne sia completamente cosciente, ad esempio mediante un programma di posta elettronica configurato in maniera tale da “eseguire/aprire automaticamente” gli allegati. Nel seguito si prescinderà da tale distinzione, dato che si cercherà di focalizzare l’attenzione sulle relazioni tra il concetto di virus e il Sistema operativo sottostante, relazioni che prescindono da eventuali automatismi di qualunque programma applicativo possa avviare l’esecuzione di un virus. Quindi la prima domanda “provocatoria”.

Se ci si pone il problema di capire se un S.O. è vulnerabile o no al concetto di virus, è logico classificare come “virus” - senza ulteriori precisazioni - ogni eseguibile che provochi effetti indesiderati per l’utente che - più o meno volontariamente - ne avvia l’esecuzione? Se vogliamo rispondere “si”, allora dobbiamo osservare che anche l’esecuzione di un file manager, di un editor, magari di un applicativo mal funzionante, può provocare effetti indesiderati per l’utente... Esempio: un file manager permette all’utente di rimuovere dei file per errore. Come evitare/ridurre tale rischio? Per esempio, prevedendo una richiesta di conferma per la rimozione dei file, ma è davvero una soluzione? Alla fine l'utente si abitua a confermare sempre, senza pensarci, cosicché il rischio è praticamente invariato. Per eliminare davvero il rischio di rimozione errata si può fare una sola cosa: interdirmi la rimozione... ma credo che concorderete che sarebbe una soluzione eccessiva, che limiterebbe in maniera pesante le funzionalità a disposizione dell’utente. Analogamente, se si vuole evitare che io possa per errore eseguire un virus, il rimedio ultimo e definitivo è uno solo: impedirmi di eseguire alcunché... ma a quel punto non potrei eseguire più nulla. Insomma, è piuttosto facile convincersi che nessun S.O. potrà mai impedire all’utente di auto-danneggiarsi eseguendo un virus, dato che, in fin dei conti, un virus agisce eseguendo, leggendo, scrivendo... insomma, compiendo le stesse azioni elementari di cui un utente ha bisogno per lavorare. Quindi un tale ipotetico S.O. sarebbe semplicemente inutile... oppure dovrebbe sostituirsi all’intelligenza e al discernimento umano... e mi auguro che non esisterà mai nessun software che cerchi di sostituire la volontà e l’intelligenza umana, neanche nel distinguere tra “virus” ed “utenti”. Ma allora... non c’è speranza? I virus esistono e basta? Si può solo sperare che “non cadano tegole”? Non è proprio così ...