Exploit
Che cos’è?
Un exploit (tradotto dall’inglese “sfruttare”) è un termine usato per identificare una tipologia di script, virus, worm o binario in grado di sfruttare una specifica vulnerabilità presente in un software o sistema informatico. Di solito un exploit permette l’esecuzione di codice malevolo con lo scopo di far ottenere all’attaccante l’acquisizione dei privilegi amministrativi. Nella dinamica di un attacco di ingegneria sociale, il termine può riferirsi anche l’inganno o al contesto utilizzato per raggirare la vittima.
Perché è rilevante?
Gli exploit sfruttano le falle di sicurezza nei software e, nelle condizioni di utilizzo più ricorrenti, un utente non ha modo di sapere se è stato infettato fino a quando è ormai troppo tardi.
Spesso ad un exploit viene associata la diffusione di malware quindi, sfruttata in prima battuta una vulnerabilità, il codice viene iniettato in modo silente nei sistemi operativi. In particolare le vulnerabilità di tipo 0-day ben si prestano per l’utilizzo di exploit in quanto, essendo note solo ad una minoranza, possono causare numerosi danni prima di essere scoperte e risolte.
Come mi difendo?
Esistono diverse tecnologia e mezzi di rilevamento capaci di riconoscere ed interrompere l’azione di un exploit ma quelli non specifici e di maggior consumo sono in grado di identificare solo la componente malevola quindi hanno margine di intervento nella fase ultima della catena di attacco. Il modo migliore per ridurre i rischi associati alle funzionalità di exploit è quello di installare tutte le patch software, le release di sicurezza quindi in generale mantenere aggiornato il software installato. Navigare solamente in siti noti, fidati o dotati di certificato SSL (Security Socket Layer) riduce le possibilità di visitare pagine web preposte allo sfruttamento di vulnerabilità del software lato client. Per evitare l’azione di exploit provenienti dalla posta elettronica è consigliato di non aprire allegati provenienti da indirizzi mail sospetti e non scaricare file se consegnati da mittenti sconosciute.
Cos’è tecnicamente?
Gli exploit possono essere distribuiti attraverso una rete di computer connessi ad Internet, nella pratica comune l’exploit viene inserito come codice in un server con lo scopo di distribuire questo carico malevolo nel modo più rapido possibile. Nello scenario di attacco, per facilitare questa operazione, viene creata una rete di distributori dell’exploit che consentono i download drive-by tramite una pagina Web che dall’aspetto può risultare apparentemente innocua. Gli explioit si suddividono in:
- Exploit remoto, utilizza una rete di comunicazione per contattare il sistema vittima. In tal caso l’attacco prevede l’utilizzo di un altro computer interno alla stessa rete locale oppure mediante un accesso Internet. Exploit locale è circoscritto ad un sistema vittima specifica ed è necessario avere prima l’accesso al sistema vulnerabile. Questi exploit possono essere utilizzati anche da remoto se l’attaccante ha precedentemente ottenuto l’accesso alla risorsa locale utilizzando un exploit remoto.
- Exploit lato client, permettono di sfruttare le vulnerabilità nelle applicazioni installate nelle workstation come nel caso di applicazioni da ufficio, lettori PDF, i browser e lettori multimediali. Questo attacco è solitamente asincrono in quanto l’exploit non viene eseguito nel momento in cui entra in contatto con il sistema bersaglio ma l’interazione da parte dell’utente è fondamentale per la corretta esecuzione.
Gli exploit possono anche essere classificati in base al tipo di tecnica utilizzata per sfruttare la vulnerabilità ad esempio: buffer overflow, Heap Overflow, format string attacks, race condition, double free(), Integer overflow, SQL injection, cross-site scripting, cross-site request forgery, Remote File Inclusion e Local File Inclusion.
Come si rimedia?
La maggior parte degli exploit è frutto di un errore dello sviluppatore, la rimozione delle falle di sicurezza è di sua competenza quindi anche il rilascio e distribuzione della relativa correzione. Gli exploit sfruttano le falle di sicurezza software e quasi mai un utente non ha modo di sapere se è stato vittima di un exploit. Per tale ragione è importante prevenire eventuali attacchi mantenendo aggiornati i software. Un modo per assicurarsi di non perdere eventuali aggiornamenti consiste nell’utilizzare un programma di gestione delle applicazioni che semplifichi la procedura di aggiornamento dei software o che, in alternativa, possa aggiornarli in modalità automatica minimizzando i tempi di esposizione della falla.