Un antivirus è un software finalizzato a prevenire, rilevare ed eventualmente rendere inoffensivi codici dannosi e malware per un computer come virus, adware, backdoor, BHO, dialer, fraudtool, hijacker, keylogger, LSP, rootkit, spyware, trojan, worm o ransomware.

Generalmente tale tipo di programma non è in grado di proteggere totalmente un computer da tutte le minacce informatiche esistenti - attacchi cibernetici, Advanced Persistent Threat (APT), botnet, DDoS attack, phishing, scam, social engineering o spam - e quindi la sicurezza è generalmente offerta da prodotti compositi e servizi offerti dalle aziende produttrici di software.

Storia Gli studi di John Newman I virus informatici furono teorizzati per la prima volta nel 1949 da John von Neumann il quale ipotizzò la creazione di programmi capaci di auto-replicarsi copiando il proprio codice. La prima apparizione di un software scritto con questo intento fu Creeper, creato da Bob Thomas presso la Bolt Beranek and Newman, un'azienda del Massachusetts - in seguito divenuta BBN Technologies - dove si svilupparono tecnologie per lo scambio di pacchetti di dati nelle reti di computer, riprese poi da Arpanet. Newman stava lavorando allo sviluppo di TENEX, un sistema operativo time-sharing che girava su PDP-10 ed ebbe l'idea di scrivere un codice capace di poter passare da un computer a un altro mentre era in esecuzione. Ray Tomlinson, un collega di Newman, elaborò il codice creando ciò che venne poi considerato il primo worm della storia: una versione che non era solo in grado di spostarsi da un sistema a un altro ma che riusciva a duplicarsi riproducendo copie di se stesso sui computer con i quali veniva in contatto. Questo portò al problema principale derivante da questo genere di software: come fermarne la diffusione. Perciò, parallelamente fu creato Reaper, scritto per il solo scopo di controllare se Creeper fosse in esecuzione su una determinata macchina ed eventualmente eliminarlo e divenendo difatti il primo programma antivirus della storia.

I primi esperimenti Il primo virus propriamente detto comparve nel 1982 e si trattava di un programma, Elk Cloner, scritto nel 1982 da Rich Skrenta per il sistema operativo Apple DOS del personal computer Apple II. Il virus si replicava infettando il settore di avvio dei floppy disk e veniva perciò caricato in memoria insieme al sistema operativo e ogni volta che l'utente chiedeva l'elenco dei file del disco, il virus si copiava sul disco in quel momento presente nel lettore.

Nel 1984 comparve poi la prima definizione del terminologia - virus per computer - in un documento scritto da Fred Cohen, dove lo descriveva come un programma che «colpisce gli altri programmi del computer modificandoli in modo da includere una copia (possibilmente evoluta) di se stesso».

Il primo virus per sistemi MS-DOS fu Brain, risalente al 1986 e noto anche come Pakistani Brain perché fu scritto da due fratelli pakistani. Non è chiaro se nacque come sistema anticopia o come virus vero e proprio ma sta di fatto che fu il primo virus a farsi conoscere a livello mondiale, tanto che per la sua diffusione fu definito «l'influenza pakistana» dalla rivista BusinessWeek. A Brain ne seguirono altri con una larga diffusione ma la loro relativa innocuità (in generale si limitavano a far apparire dei messaggi a video) non fece sentire la necessità di software capaci di contrastarli. Le cose cambiarono velocemente quando i virus iniziarono a compromettere i dati dei computer che colpivano. Nel 1987, l'hacker tedesco Bernd Fix scrisse un programma, che venne poi considerato il primo antivirus, per debellare il virus Vienna da un computer.

Sempre nel 1987, G Data rilasciò G Data AntiVirusKit, considerato il primo antivirus commerciale, scritto per sistemi Atari ST., «gdata.it», 9 giugno 2023, «wallstreetonline.de», 9 giugno 2023, «inherne.net», 9 giugno 2023 Alla fine dello stesso anno esordì Ultimate Virus Killer (UVK) 2000, un altro antivirus per l'Atari ST,, McAfee VirusScan, scritto da John McAfee (che in seguito avrebbe fondato la McAfee), e NOD32, scritto da due programmatori slovacchi che, grazie al suo successo, in seguito avrebbero fondato la ESET.

Fred Cohen analizzò la proliferazione dei virus e la sempre più pressante necessità dei software antivirus arrivando a scrivere che «non c'è nessun algoritmo che può riconoscere perfettamente tutti i possibili virus per computer». Infatti, molti virus venivano derivati da altri cambiando piccole porzioni di codice per cui era fondamentale tenere aggiornato l'archivio delle firme dei virus ma ciò era molto difficoltoso in un periodo in cui lo scambio dei dati avveniva per mezzo di supporti come i floppy disk. Fu per questo che comparvero alcuni antivirus basati su una nuova tecnologia di analisi, l'euristica, i cui algoritmi di analisi lavoravano cercando di capire se un codice potesse essere ritenuto malevolo oppure no; in questo modo gli antivirus potevano identificare anche nuovi virus le cui firme non erano ancora presenti nei loro archivi. I primi antivirus euristici a comparire furono FluShot Plus di Ross Greenberg e Anti4us di Erwin Lanting, entrambi del 1987.

I virus polimorfi e la nascita degli antivirus

Per controbattere a questo meccanismo di identificazione, gli autori dei virus iniziarono a scrivere virus polimorfi, capaci di mutare codice in modo da ingannare gli antivirus durante l'analisi. Ogni volta che il virus infettava un file, lo faceva con un codice leggermente differente dal suo e quindi ogni nuova copia era diversa. Il primo virus a basarsi su questa tecnica fu 1260, del 1990. Un famoso virus polimorfo fu Dark Avenger, il cui autore distribuì anche un software per creare virus polimorfi, denominato Dark Avenger Mutation Engine. Per identificare questa nuova categoria di virus, vennero ideati degli algoritmi euristici differenti come il F-Prot, del 1991.

Tra la fine degli anni ottanta e l'inizio degli anni novanta si ebbe la nascita di numerose società dedite esclusivamente allo sviluppo di antivirus che produssero software come Avira, del 1988, Avast, del 1988, Panda Antivirus, del 1990; Norton, del 1991, AVG e F-Secure, del 1992.

Caratteristiche

Componenti Un antivirus è composto da più parti differenti, alcune indipendenti tra di loro; alcuni software antivirus possono essere sprovvisti di una o di entrambe le parti 3 e 4, che sono quelle che lavorano "in tempo reale" e in questo caso, il database delle firme va aggiornato manualmente e l'antivirus non effettua controlli dinamici del sistema, per cui è possibile usarlo solo per effettuare scansioni su richiesta:

il (o i file) delle firme: un archivio che contiene tutte le firme dei virus conosciuti, parte fondamentale ed essenziale per il funzionamento corretto di qualsiasi altro componente; il file binario: file in grado di ricercare il virus all'interno dei file del PC infettato e permette di eseguire su richiesta una serie di operazioni come sapere in che data è stato aggiornato l'ultima volta il database delle firme o effettuare una scansione completa del sistema su richiesta; il file binario che viene caricato in memoria all'avvio del sistema e vi rimane in esecuzione fino a quando non si spegne il PC: questo componente richiama l'antivirus ogni qual volta viene creato/modificato un nuovo file o viene modificata una zona di memoria, per controllare che il computer non sia stato infettato con questa operazione; il file binario che effettua gli aggiornamenti del file delle firme e di tutte le altre componenti dell'antivirus e che può far parte del file binario principale o essere un programma separato, la cui esecuzione è pianificata periodicamente.

Metodi di analisi Firme (signatures) Il metodo delle signatures, ovvero delle firme, è fra quelli più utilizzati e, sostanzialmente, prevede il confronto del file da analizzare con un archivio in cui sono schedati tutti i malware conosciuti, o meglio le loro firme. L'efficienza di tale metodo si basa sulla completezza dell'archivio, diverso per ogni casa produttrice di software antivirus, e sulla velocità del software nell'eseguire il confronto tra il file e la firma, nonché sulla firma stessa. Una firma di un virus è una sequenza continua di byte che è comune per alcuni modelli di malware. Questo vuol dire che è contenuta all’interno del malware o di un file infetto e non nei file non danneggiati. Al giorno d’oggi, le firme non sono sufficienti per rilevare i file dannosi. I creatori dei malware utilizzano l’offuscazione, utilizzando diverse tecniche per coprire le loro tracce. Ecco perché i prodotti d’antivirus moderni devono utilizzare metodi di rilevamento più avanzati. I database degli antivirus contengono ancora firme (rappresentano oltre metà di tutte le voci del database), ma includono anche voci più sofisticate. L'archivio viene creato analizzando tutti i file presunti dannosi con cui si viene a contatto. Una volta trovato un file presunto dannoso, una casa produttrice di software antivirus, dovrà quindi analizzarlo e, eventualmente, aggiungere la firma di tale file al suo archivio.

Risulta abbastanza chiaro che tutte le vulnerabilità di un sistema operativo - sfruttate nel cosiddetto zero-day - e i malware non ancora scoperti, o semplicemente non ancora analizzati, non possono ovviamente far parte di un determinato archivio. Quindi, di fatto, questo metodo non può portare alla rilevazione totale di tutti i malware esistenti in quanto è presumibile che esisteranno sempre dei malware non ancora scoperti e/o analizzati. Neppure l'utilizzo incrociato di tutti i software antivirus esistenti al mondo potrebbe assicurare la completa inattaccabilità di un computer.

Tuttavia, nonostante questo, il metodo delle signatures rimane uno dei metodi più efficienti e consolidati nell'industria del settore. Questo anche perché non tutti i malware si diffondono con la stessa rapidità e con la stessa intensità. Più un malware è infettivo, infatti, e più è probabile che sia arrivato nelle mani dei ricercatori delle aziende produttrici di software antivirus. Quindi, sebbene il metodo utilizzato non garantisca l'assoluta inviolabilità, garantisce comunque una sicurezza abbastanza elevata dai malware più diffusi. Inoltre, bisogna anche considerare che molti dei malware esistenti non sono più in corso di diffusione, la cui esistenza è limitata ai centri di ricerca antimalware, che li usano per i test interni. Infine, uno dei punti chiave per cui il metodo è ancora quello più utilizzato è il fatto che, se correttamente implementato, garantisce un numero esiguo (teoricamente nullo) di falsi positivi, dipendente da come si estrae la firma in quanto se la firma identifica univocamente il malware analizzato (e.g. hash MD5 dell'intero file), questa stessa firma non potrà mai portare a un falso positivo.

Tuttavia, le aziende produttrici di software antivirus, per migliorare i loro prodotti al fine di rilevare anche programmi maligni non noti all'antivirus, cioè non ancora contenuti nel loro database dei malware, tendono a prendere solamente firme parziali dei malware. In generale, infatti, la signature estratta è rappresentata da un numero variabile (generalmente almeno tre) di sequenze di byte non consecutivi che rappresentano univocamente (con la migliore precisione possibile) il malware. In questo modo non solo diventa possibile la rilevazione di alcuni malware che non fanno ancora parte del database dell'antivirus, ma diventa anche più compatto il database stesso, con il conseguente aumento di velocità dell'antivirus nella scansione. Altri tipi di tecniche utilizzate per estrarre firme parziali sono i cosiddetti wildcards e le espressioni regolari.

Tecnologie euristiche