In una risposta precedente
abbiamo trattato delle tecniche usate dai cosiddetti virus per diffondersi da un computer all’altro.
I programmi antivirus basano la loro azione sostanzialmente sull’analisi della memoria
e dei dischi del computer per cercare di individuare programmi o porzioni di programma
riconoscibili come virus.
La più semplice delle tecniche di riconoscimento si basa sulla
ricerca della “firma” (signature) del virus: dato che il virus non è altro che un
frammento di programma all’interno di un file eseguibile, o della memoria se già
pronto all’esecuzione, il programma antivirus non fa altro che cercare le sequenze di istruzioni
che sono caratteristiche dei virus noti. Il programma deve essere dotato di un elenco di
“firme”, e ciascuna firma deve essere abbastanza ampia da individuare correttamente il virus (ovvero
la sequenza di istruzioni che rappresenta la firma deve essere contenuta solo nel virus e non
in uno qualunque dei migliaia di programmi funzionanti sul computer), per non generare falsi allarmi.
L’attività più complessa per chi realizza programmi antivirus consiste nel preparare la lista dei virus:
si tratta infatti di analizzare le caratteristiche di ciascun nuovo virus che appare sulla scena
ed individuare una firma univoca analizzandolo accuratamente. Inoltre occorre disporre di una rete di collaboratori
che segnalano tempestivamente i nuovi virus in modo che possa essere aggiornata la lista delle firme
prima che il virus si diffonda troppo.
Ovviamente questa tecnica ha due limitazioni principali: 1) è in grado di individuare solo
virus già conosciuti ed analizzati; 2) è abbastanza facile da aggirare da
parte dei virus più “smaliziati”, detti polimorfici, che ogni volta che infettano un nuovo
computer cambiano forma, ad esempio invertendo la posizione di alcune istruzioni rispetto ad altre.
Per affrontare questi problemi sono stati sviluppati metodi euristici che analizzano i
programmi sulla base delle loro azioni per valutare la probabilità che quel particolare
programma sia un virus. La logica di questo approccio si basa sul fatto che, per agire,
i virus devono compiere una serie di operazioni abbastanza tipiche (ad esempio leggere e modificare
la data di un file, scrivere in coda ad un file contenente un programma eseguibile, ecc.)
e quindi un virus dovrebbe essere riconoscibile in base al suo “comportamento”. Naturalmente anche
programmi legittimi possono aver bisogno di eseguire le stesse operazioni, quindi non è
sufficiente individuare alcune specifiche operazioni come sicuri indicatori di un virus,
ma occorre valutare l’insieme delle operazioni svolte dal programma. I programmi di
riconoscimento euristico quindi analizzano le operazioni compiute dai programmi, assegnano
a ciascuna un punteggio in base alla probabilità che l’operazione
sia un indicatore di virus e segnalano come affetti da virus i programmi il cui punteggio supera
una soglia prestabilita.
Questa tecnica, come è evidente, non fornisce risultati certi, ma solo indicatori
di probabilità e quindi può creare falsi allarmi,
però è in grado di rilevare anche virus sconosciuti e non si
fa ingannare dai virus polimorfici.
I sistemi di protezione antivirus utilizzano
talvolta anche un terzo meccanismo, che funziona esattamente al contrario del riconoscimento
dei file eseguibili modificati da virus e consiste nel riconoscere i files eseguibili
sicuramente non modificati. La tecnica consiste nel calcolare una firma di ciascun
file eseguibile e confrontarla con la firma calcolata su una versione
del file sicuramente non modificata da alcun virus. Anche questo metodo ha i suoi inconvenienti: innanzitutto
occorre avere una raccolta di tutte le firme dei file eseguibili che sia affidabile; questa deve essere poi aggiornata
ogni volta che si modifica la versione di un programma o si installa un nuovo programma o
libreria, inoltre è opporetuno che sia memorizzata su un supporto non modificabile (ad esempio un CD)
per evitare che un virus particolarmente cattivo cambi la firma del file sano con quella del file infetto.