Il Processo di creazione e manutenzione di ogni dispositivo connesso viene usualmente denominato "ciclo produttivo" in quanto un sistema (formato da Hardware e Software) viene prima realizzato e successivamente inserito in ambiente di produzione dove svolge il suo compito per un tempo indefinito.
Oggi si tende a considerare tale definizione come riduttiva in quanto un sistema contemporaneo necessita di essere continuamente mantenuto ed aggiornato, gli stessi requisiti che ne regolano la sua esistenza, cambiano nel tempo. E sopratutto anche le tematiche relative alla sicurezza del sistema stesso cambiano radicalmente nel tempo. Per questi principali motivi si preferisce utilizzare il termine "ciclo di vita" al posto del termine "ciclo produttivo" al fine di sottolineare l'importanza del cambiamento, della manutenzione e delle attività necessarie a mantenere in "vita" il sistema.
I due elementi fondamentali del ciclo di vita di un sistema
Due elementi fondamentali per il "ciclo di vita" di un sistema informativo, inseriti nel normale processo di mantenimento di un sistema software e/o sistema hardware, sono denominati Vulnerability Assessment e Penetration Testing. Tali elementi sono bene distinti e profondamente normati nei processi di Cyber Security di oggi. Essi rispondono a due esigenze differenti e sono tra di loro in completa sintonia.
L'ecosistema delle "vulnerabilità" è ampio ed ogni giorno tende ad aumentare. Da un lato decine di vulnerabilità vengono identificate e rese pubbliche ogni giorno, dall'altro lato programmatori, ingegneri del software, ingeneri meccanici, ingegneri elettronici e sistemisti devono conoscere nuovi metodi di sviluppo, nuovi linguaggi di programmazione, nuovi frameworks, nuovi strumenti per il delivery del software ed essere sempre aggiornati sui principali sistemi di automazione per mantenere alto il livello di performance e di qualità del sistema.
Un cambiamento che interessa da vicino il mercato del lavoro
Risulta evidente che non è più ammissibile richiedere alle stesse figure professionali conoscenze relative ai nuovi sistemi di sviluppo/realizzazione di infrastrutture e prendersi in carico la responsabilità di mantenere sistemi sicuri. Al fine di mantenere alto il livello di sicurezza e la rispettiva qualità del sistema realizzato in accordo con il "time to market", sempre piu incisivo ed importante nel dettare i tempi di sviluppo, vi è la necessita di nuove figure professionali distinte con evidenti elementi in comune ma con distinti obiettivi.
Lo sviluppatore (o il sistemista, o il progettista hardware) ha il compito di scrivere un software (o realizzare un sistema informativo, nel caso di un sistemista o realizzare un progetto hardware nel caso di un ingegnere elettronico) seguendo i migliori canoni di programmazione (o messa in opera) considerando la migliore logica ingegneristica, utilizzando i migliori strumenti ed attuando i migliori automatismi, deve essere capace di realizzare (scrivere) codice (struttura) in modalità "sicura", evitando clamorose vulnerabilità causate dalla mancata conoscenza della tematica, ma non necessariamente deve essere a conoscenza di tutte le vulnerabilità, di tutti i metodi di testing e di come essi devono essere realizzati.
Cosa fa un "Penetration Tester"
Contrariamente il "Penetration Tester" possiede l'importante compito di mettere in sicurezza il software (oppure il sistema) realizzato da esperti programmatori (realizzato da esperti sistemisti e/o sistemi hardware realizzati da esperti ingegneri elettronici). Egli non deve necessariamente conoscere nel dettaglio i metodi di sviluppo e non deve necessariamente essere un abile programmatore (sistemista, ing elettronico) ma contrariamente deve conoscere i metodi di attacco e le vulnerabilità che potrebbero celarsi dietro ad un software e/o un sistema informativo.
Il compito di un difensore (o "Penetration Tester") è molto complesso e incompleto per definizione. Egli ha l'arduo compito di proteggere il perimetro e necessita di risolvere ogni singola vulnerabilità individuata mentre il compito di un attaccante, introdursi illegalmente in un sistema informativo, è assai più semplice in quanto è sufficiente sfruttare un unica vulnerabilità per compromettere l'intero sistema. È un problema di cardinalità totalmente a sfavore del "difensore".
Per questo motivo il Penetration Tester deve poter effettuare due processi molto distinti tra loro spesso confusi e messi in sovrapposizione denominati: Vulnerability Assessment e Penetration Testing.
I vari passaggi di un processo di testing
L'obiettivo del "Vulnerability Testing" è quello di verificare se nel sistema analizzato (sia esso hardware, software e/o un insieme di hardware e software) siano presenti vulnerabilità note. Per effettuare questa tipologia di testing il "penetration tester" ha a disposizione vari strumenti a supporto.
Oggi esistono strumenti che possono essere classificati in tre tipologie: autonomi, supervisionati e manuali. Un sistema autonomo è un sistema che necessita una configurazione iniziale e produce, al termine del suo percorso di testing, un report secondo standard predefiniti (R1). Un sistema supervisionato è un sistema che necessita di un intervento umano nel testing dei risultati individuati. Tale intervento è usualmente introdotto prima della realizzazione del report finale (R2). Un Sistema manuale è un sistema a supporto del Penetration Tester. Tale sistema necessita di un importante intervento manuale sia nella fase di testing sia nella continua supervisione del risultato. Tali sistemi producono un report spesso realizzato manualmente ad hoc dall'esecutore (R3).
La qualità dei tre artefatti prodotti R1, R2 e R3 varia a seconda della persona e dello strumento utilizzato. In questa attività l'automatismo, oltre ad aiutare notevolmente ad abbattere i costi del testing, in un Vulnerability Assessment mantiene alto il livello di qualita del prodotto finale permettendo al committente una buona comprensione delle vulnerabilità individuate e di come eliminarle.
Perché è importante che a svolgere questo compito sia un umano
L'assenza di strumenti totalmente autonomi non rappresenta un "gap tecnologico" ma evidenzia la vera natura del Penetration Testing ove una mente umana necessita di capire il funzionamento del sistema obiettivo e successivamente, adottando una costante logica negata, cercare metodi e tecniche per compromettere le protezioni del sistema. Questa attività risulta essere molto specifica ed implica un elevato numero di ore e di costanti aggiornamenti da parte del Penetration Tester. La forte presenza del fattore umano inficia notevolmente il risultato finale.
Un sistema automatico produce sempre un determinato risultato, sia esso di "alto livello" oppure di "basso livello" è comunque standard e predittivo. Un analisi non automatizzata ma fortemente orientata alla mente umana è evidentemente soggetta all' operatore utilizzato.
Se fosse possibile garantire la sicurezza al 100% allora la non razionalità introdotta grazie all'utilizzo della mente umana giocherebbe un ruolo negativo.
Infatti se si potesse garantire la sicurezza (100%) allora si vorrebbe un processo standardizzato capace di garantire tale sicurezza indipendentemente dall'operatore ed indipendentemente dal sistema. Ma la sicurezza al 100% non è una realtà, non è possibile infatti dimostrare di avere individuato tutte le vulnerabilità esistenti nel sistema "target". Ecco il perchè l'introduzione dell'irrazionalità della mente umana aumenta la probabilità di avvicinarsi a tale soglia, pur essendo consapevoli che non verrà mai raggiunta. Un sistema razionale non può avvicinarsi alla perfezione proprio come un sistema irrazionale, ma il sistema irrazionale (non seguendo schemi standard) ha la possibilità di avvicinarsi maggiormente. Nonostante il "time to market", ossia al tempo che trascorre tra l'ideazione del sistema e la sua vendita, sia un importante variabile, non va trascurato il testing prima di commercializzare ogni sistema. Pertanto si suggerisce ad ogni organizzazione che produce sistemi informativi di inserire nel proprio processo di "produzione" momenti adibiti al Vulnerability Assessment e momenti adibiti al Penetration Testing per garantire ai propri clienti un sistema con minori vulnerabilità possibili.