Implementazione software, baluardo della cyber sicurezza

Implementazione software, baluardo della cyber sicurezza

È l’algoritmo del software il punto centrale della Security by design

25 Luglio 2019

L’anno peggiore di sempre per la sicurezza informatica. Così è stato definito il 2018 dal Rapporto Clusit 2019 dell’Associazione Italiana per la sicurezza informatica, se non si considera l’implementazione del software. Lo scorso anno gli attacchi informatici con impatto significativo sono aumentati del 38% con una media di 129 al mese e si tratta solo dei casi più gravi e conosciuti. Sono cresciuti i furti di dati strategici e le minacce alle istituzioni. Gli attacchi mirati allo spionaggio sono aumentati del 58%, un vero boom si è registrato anche per le minacce alle strutture sanitarie (+99%) e alle istituzioni (+40%), così come è anche cresciuta la sorveglianza di massa sugli utenti a scopi commerciali. I criminali informatici si sono moltiplicati con un incremento del +43,8% rispetto agli anni passati.

Secondo il progetto di ricerca europeo Horizon 2020, negli ultimi tre anni il numero di cyber attacchi ha avuto un incremento di 17 punti percentuali e si considera che il 91% di questi attacchi utilizzi la tecnica dello spear phishing, per sottrarre dati o per installare malware (abbreviazione per malicious software ndr) sul computer preso di mira e del social engineering, che spinge l’utente ad aprire un collegamento ad un sito web infetto.

La cyber security è un tema spinoso come pochi, soprattutto perché oggi il mondo è sempre più interconnesso. E questo significa che è anche sempre più hackerabile e vulnerabile.

Gran parte del successo degli attacchi è causato da software malevoli oltre che dal fattore umano, una distrazione, un click o un semplice messaggio di posta elettronica che qualcuno scarica non avendo il minimo grado di consapevolezza informatica.

Security by design: un faro per lo sviluppo sicuro del software

Per affrontare questi nuovi scenari della cyber sicurezza la parola chiave è diventata Security by design, ovvero sviluppo sicuro del software, il che significa che il software deve essere progettato dalle fondamenta con il principale obiettivo di essere sicuro.

Da alcuni anni infatti il termine Security by design si è diffuso tra gli sviluppatori informatici per indicare il fatto che, oltre ai requisiti funzionali, la progettazione e lo sviluppo del codice devono tenere in considerazione anche e soprattutto la sicurezza. Lo sviluppo dell’algoritmo del software è l’insieme di design, architettura, programmazione, test perché non avere la sicurezza come requisito di base porterebbe ad un prodotto scadente e sicuramente vulnerabile. Concetto cardine nella prima fase di programmazione è l’algoritmo del software che ha delle proprietà fondamentali che devono essere rispettate quali l’atomicità, la non ambiguità, la finitezza, la terminazione, l’effettività e il determinismo. In poche parole, preso un problema da automatizzare la programmazione costituisce essenzialmente la traduzione o codifica di un algoritmo per tale problema in programma, scritto in un certo linguaggio, che può quindi essere eseguito da un calcolatore rappresentandone la logica di elaborazione.

Prevedere la sicurezza nel codice permette quindi di evitare l’innescarsi del processo di software vulnerability, fatto di bug, exploit, virus e malfunzionamenti funzionali e/o logici. In base alla natura del software, dell’infrastruttura su cui opera e della vulnerabilità, gli impatti possono compromettere il software, i sistemi operativi, i database, l’ambiente condiviso o anche il sistema dell’utente/cliente e tutte le informazioni associate.

La ricerca scientifica e quella industriale hanno prodotto, negli ultimi decenni, notevoli risultati nella direzione della sicurezza. Gli strumenti a disposizione degli sviluppatori sono molteplici e si applicano alle diverse fasi dello sviluppo, dalla progettazione fino al testing.

Alcune delle tecniche che fino a qualche anno fa erano note solo nella comunità scientifica oggi sono diventate parte integrante dei principali linguaggi per lo sviluppo del software.

Un caso è rappresentato dai linguaggi formali per la specifica delle priorità del software. Questi linguaggi permettono di comparare automaticamente le specifiche, prodotte in fase di progettazione, con il codice sviluppato in fase di realizzazione. Con grandi benefici in termini di sicurezza. È risaputo infatti che molte falle derivano da implementazioni del software scorrette, cioè non rispettose delle specifiche. Esistono ambienti per la scrittura e la verifica di specifiche per molti dei principali linguaggi come è il caso dei linguaggi di programmazione C e Java.

Alcuni di questi, per esempio JML e Frama-C, sono strumenti realizzati e manutenuti da comunità di ricercatori e sviluppatori, altri sono invece veri e propri prodotti sviluppati da importanti attori industriali, come Microsoft.

Gli strumenti per lo sviluppo del software sicuro esistono e altri ne arriveranno in futuro, tuttavia il numero di violazioni dei sistemi informatici come abbiamo visto è in aumento.

Software vulnerability: bug, malware e exploits

Ma cosa sono i bug? Si tratta di un errore nella scrittura di un software che può rendere i computer vulnerabili ed esposti agli attacchi informatici. Più precisamente un bug di programma è un guasto, che ha come conseguenza un cattivo funzionamento del software. In linea di massima le origini dei bug devono essere individuate nei codici sorgenti che vengono scritti dai programmatori, mentre più raramente possono essere dovuti al compilatore.

Esistono poi i bug di sicurezza che mettono a repentaglio i dispositivi concedendo privilegi e accessi a utenti che non dovrebbero usufruirne. Per prevenire i bug tutto dipende ancora una volta dalla fase di progettazione del software e dalla traduzione del codice sorgente, che consiste nella sua compilazione, assemblazione e nella sua interpretazione, senza dimenticare il momento dell’immissione dei dati.

Il malware nella sicurezza informatica indica invece un qualsiasi programma usato per disturbare le operazioni svolte da un utente di un computer, un programma in grado anche di rubare informazioni di vario tipo, da commerciali a private, senza essere rilevato dall’utente anche per lunghi periodi di tempo, e infine di criptare dati del computer estorcendo denaro per la decriptazione. I malware, la cui diffusione risulta in continuo aumento, non sono tutti uguali. Le varie tipologie di infezioni informatiche hanno infatti le loro caratteristiche e specificità: c’è chi si comporta come l’influenza e si riproduce grazie al “corpo” infettato (come i virus), che spia le attività dell’utente che ha colpito (gli spyware) e chi ancora agisce per mettere a disposizione di hacker e cybercriminali facili punti di accesso ai sistemi informatici di ogni tipo (i trojan). Alcuni malware sono ovviamente più dannosi di altri. Tra le più pericolose infezioni informatiche oggi esistenti ci sono i rootkit, caratterizzati dalla capacità di attaccare un computer ed entrare in azione senza che l’utente si accorga di nulla. L’obiettivo di un rootkit è duplice: prendere il controllo del computer ottenendone i privilegi di amministratore ed evitare di essere intercettato dagli scanner antivirus e anti malware.

Ma uno dei problemi più preoccupanti nel campo della sicurezza informatica, secondo gli esperti, sono gli exploit. Di cosa si tratta? Gli exploit sono in sostanza un sottoinsieme dei malware. Si tratta di programmi dannosi che contengono dati o codici eseguibili in grado di sfruttare una o più vulnerabilità di un software presente su un computer locale o remoto.

I cybercriminali spesso prediligono gli exploit rispetto ad altri metodi d’infezione perché portano quasi sempre a risultati sicuri. Gli utenti possono essere ingannati in due modi: visitando un sito internet che contiene un codice exploit dannoso o aprendo un file apparentemente legittimo che nasconde invece al suo interno un codice dannoso. Come si può facilmente immaginare sono soprattutto le mail di spam o di phishing a contenere gli exploit.

Dopo essere entrato nel sistema l’exploit carica altri malware dal server dei cybercriminali e i danni a questo punto sono molteplici.