Negli ultimi anni l’informatica si è trovata ad affrontare lo spinoso problema dell’obsolescenza delle soluzioni classiche ai vari problemi, soprattutto quelli legati alla cyber security e ciò ha spinto gli esperti del settore a adottare strategie che permettessero di rispondere alle necessità del momento in modo rapido e semplice: l’euristica è una componente del metodo scientifico che ha trovato ampio impiego in tal senso, riscuotendo un notevole successo grazie ai suoi principi basilari di semplicità e rapidità.
Scopo di questo articolo è illustrare tale metodologia e come questa venga applicata con successo a scenari legati alla cyber security.
Indice degli argomenti
Cos’è e a cosa serve l’euristica
La parola euristica deriva dal greco antico εὑρίσκω, che significa “scoprire”, “trovare”. In senso più ampio e generale possibile, il termine indica “quella parte dell’epistemologia e del metodo scientifico che si occupa di favorire la ricerca di nuovi sviluppi teorici, nuove scoperte empiriche e nuove tecnologie, con un approccio alla soluzione di problemi che non segue un chiaro percorso ma si affida all’intuito ed allo stato temporaneo delle circostante al fine di generare nuova conoscenza.” (fonte: Euristica).
In base a quanto sopra enunciato, l’euristica può essere visto come un modo di procedere “fuori dagli schemi”: laddove procedere con metodologie ferree e ben definite non porta alla soluzione del problema o lo risolve solo in determinati scenari, l’euristica è un modo di procedere che suggerisce un percorso alternativo alla visione classica.
Attenzione: questo non vuol dire procedere completamente senza il rigore metodologico galileiano o abbandonare del tutto il metodo scientifico largamente impiegato fino ad oggi, ma semplicemente adottare una flessibilità che permetta di cercare soluzioni alternative rispetto a quelle impiegate precedentemente.
La chiave di volta per la comprensione del pensiero euristico sta in un punto preciso della definizione sopra esposta: “che non segue un chiaro percorso ma si affida all’intuito ed allo stato temporaneo”. Questa frase va intesa come: laddove le tecniche e le metodologie classiche non producono risultati utili, l’analisi e l’osservazione del fenomeno studiato devono essere l’input per l’intuizione di strade alternative, che forniscano un punto di vista differente da quello adottato fino ad ora, al fine di offrire rapidamente una soluzione al problema, dato lo stato temporaneo su cui l’euristica si basa.
Contestualizzazione al mondo dell’IT dell’euristica
Nell’ambito informatico l’euristica ha riscosso molto successo per ovvi motivi: è un mondo in continua evoluzione, dove spesso – se non sempre – è richiesto agli esperti del settore di trovare nuove soluzioni in tempi strettissimi ai problemi che si presentano, soprattutto quelli legati alla cyber security.
In un simile scenario, uno strumento del genere fa chiaramente gola per via delle sue caratteristiche; inoltre, c’è un ulteriore vantaggio che viene sfruttato, ossia quello dell’alleggerimento dei costi computazionali.
Tale risultato si ottiene grazie a un principio semplicissimo, ossia risolvere un problema semplice con una soluzione che è tale per un problema più complesso: se la soluzione, infatti, risolve in modo efficiente un problema complicato, allora per transitività, e a maggior ragione, sarà valida per quello semplice in esame.
Le applicazioni dell’euristica al mondo dell’informatica sono molteplici e una che è ben nota è il suo impiego, nello sviluppo del software, per la creazione di interfacce utenti semplici che possano essere sfruttate anche in presenza di software molto complesso.
Ovviamente ci si è domandati se questa metodologia possa essere applicata anche ai problemi di sicurezza informatica e la risposta è sì; nella sezione successiva andremo ad analizzare esattamente alcuni casi d’uso legati alla cyber security.
Euristica applicata alla cyber security: casi d’uso
Il principale esempio di euristica applicato all’informatica è quello degli antivirus; analizziamo come viene impiegato e perché ha riscosso tutto questo successo.
Il metodo classico di rilevamento delle minacce degli antivirus è il rilevamento dei signatures, ossia quei frammenti di codice dei malware che sono presenti al loro interno e che li identificano come tali. Detto in altri termini, ogni malware ha una porzione di codice che lo classifica come tale e che permette di rilevare anche lo specifico tipo di malicious code ed è tale insieme di istruzioni che gli antivirus sono in grado di rilevare; quando si aggiorna un software antivirus, normalmente, si sta esattamente aggiornando il database dei signatures dei virus.
Benché questa tecnica sia ancora valida, col tempo gli hacker più esperti hanno sviluppato tecniche di offuscamento del codice sempre più raffinate, tali da evitare che gli antivirus riescano a rilevare i signatures e pertanto non siano in grado di bloccarne l’operato. Per ovviare ciò, Carbon Black prima ed altri antivirus poi hanno adottato due tipi di analisi euristiche: quella statica e quella dinamica.
L’analisi euristica statica e dinamica negli antivirus
L’analisi euristica statica comporta la decompilazione del programma sospetto e l’esame del suo codice sorgente, che viene confrontato con quello dei virus presente nel DB euristico; se una certa percentuale combacia con uno dei virus catalogati, allora il software viene contrassegnato come possibile minaccia.
L’euristica dinamica, invece, consiste nell’isolamento del programma sospetto in un ambiente sicuro, come una sandbox o una virtual machine specializzata, per poi eseguirlo e analizzare cosa succede ogni volta che una linea di codice viene eseguita, cercando azioni sospette e tipicamente compiute dai virus (fonte: Analisi euristica).
L’utilizzo dell’euristica nei SIEM
Un altro strumento che sfrutta considerevolmente l’analisi euristica è il SIEM e la ragione è abbastanza ovvia: i correlation engine devono analizzare events e flows di rete per capire se una possibile minaccia è in corso e per farlo si devono avvalere di algoritmi che siano rapidi e che, in un qualche modo, escano dagli schemi ed intuiscano che qualcosa non va.
Per tali rilevamenti, l’analisi euristica è perfetta per via delle proprietà già esposte. Nello specifico, i SIEM generalmente sfruttano un principio simile a quello degli antivirus: i logs, e quindi gli eventi ed i flows che ne conseguono, vengono confrontati con schemi e metodologie impiegate dai vari attacchi che sono conservati nei DB del SIEM.
Se i dati rilevati combaciano con queste tecniche, allora viene sollevato un allarme. Si pensi ad esempio ad un attacco a forza bruta: il SIEM ha dentro di sé la definizione di brute force come molteplici tentativi di login a uno o più sistemi in un brevissimo lasso di tempo.
Se dai log estrapolati viene rilevato un alto numero di failed login in un breve lasso di tempo, seguiti da un successivo attempt andato a buon fine, allora molto probabilmente è stato eseguito un attacco sfruttando un tool per l’automatizzazione dell’offensiva.
I problemi dell’euristica: i falsi positivi
Quanto descritto fino ad ora fa sembrare l’euristica una tecnica troppo bella per essere vera; la verità è che, come ogni ramo della scienza, ha i suoi limiti e non è infallibile. Il problema principale dell’euristica sono i falsi positivi che genera e che, senza un accorta progettazione ed implementazione, sono molto alti.
Quanto appena esposto non deve sorprendere, in quanto la natura dell’euristica è il suo punto di forza ma anche la sua debolezza: è richiesto un approccio veloce – e la fretta spesso può condurre a risultati inesatti, non confermati da un’analisi più lunga ma più accurata – basato sull’intuizione, la quale non sfrutta il rigore della deduzione per arrivare alle conclusioni finali.
Si pensi ai due esempi sopra riportati: un confronto di codice ed un relativo matching da parte di un antivirus non necessariamente implica con sicurezza matematica che il codice osservato sia malevolo; molteplici processi leciti lanciati dall’utente e/o dall’amministratore di sistema possono condividere istruzioni con un software malevolo.
Anche l’analisi del SIEM può non essere perfetta: un utente lecito può sbagliare a inserire la propria password molte volte perché non la ricorda bene, non ha fatto copia incolla da un password keeper, non si è accorto di avere il Caps Lock attivo e così via.
Tali considerazioni mostrano come la similitudine su cui si basa l’euristica è un principio sicuramente utile e che ha il suo perché, ma non è infallibile né perfetto.
Considerazioni finali
Alla luce di quanto detto, appare palese come l’euristica non è la soluzione ma una delle soluzioni; ciò significa che non ci si può affidare completamente alla suddetta per risolvere i problemi di cyber security, ma occorre impiegarla in concomitanza con le tecniche non euristiche.
Ciò ha perfettamente senso, in quanto le tecniche non euristiche non sono sbagliate o improvvisamente non più valide: hanno semplicemente efficacia su un determinato insieme di casistiche non coperte dall’euristico e viceversa. L’esempio principale di ciò sono esattamente gli antivirus: le tecniche di rilevamento sui signature sono ancora ampiamente usate e considerate la base del lavoro di questa tipologia di software.
La componente euristica è il complemento, il completamento delle tecniche usuali: non nasce per sostituirle ma per superarne i limiti e rendere i tool di monitoraggio e prevenzione ancor più performanti e capaci di effettuare le loro mansioni. Del resto, diversamente non potrebbe essere per via del problema dei falsi positivi: uno strumento soltanto euristico rischierebbe di divenire più un problema che una soluzione, a causa delle tempistiche necessarie a smaltire i suddetti a fronte delle numerose notifiche.
Le soluzioni migliori sono dunque quelle che affiancano tecniche euristiche, ben progettate e raffinate di modo da ridurre al minimo le problematiche ad esse legate, a quelle classiche già testate, al fine di completarsi a vicenda e ridurre sensibilmente i limiti delle une con le potenzialità delle altre e viceversa.