Se gli hacker violano sistemi a scopo soprattutto di lucro, i pen tester chiamati anche hacker etici o white hat, penetrano nei sistemi per rilevare vulnerabilità, con tutti i rischi collegati a questa attività. Dare un mandato ad un professionista di penetration test significa avere a cuore la difesa della propria azienda e dei propri clienti.
In ottica GDPR, in contesti aziendali dove si trattano dati particolari, potrebbe rientrare nella fattispecie delle misure tecniche e organizzative adeguate a garantire un livello di sicurezza adeguato al rischio (art. 32). Tuttavia, progettare/considerare un test di vulnerabilità significa anche pensare ai possibili impatti che avrà quando sarà in esecuzione.
Indice degli argomenti
Penetration tester: le giuste professionalità
Coloro che si occupano di penetration test devono avere capacità e caratteristiche professionali ben determinate, pena la poco felice possibilità che distruggano o rendano indisponibile il sistema aziendale oppure, ancor peggio, che violino i confini del loro campo d’azione.
Facciamo subito un esempio pratico con riferimento ad uno degli assunti “portanti” del GDPR: la disponibilità dei dati.
Un pen tester che sappia fare il suo lavoro non comprometterà la stabilità del sistema della rete aziendale. Una simulazione di attacco deve evitare in tutti i modi di sovraccaricare l’ambiente da testare rendendo indisponibili servizi e dati fondamentali che necessitano ai clienti. Questa evenienza, molto più frequente di quanto si possa immaginare, è da tenere debitamente in conto.
Per questo motivo, è bene regolarizzare a priori anche il livello di responsabilità. Il professionista deve testare il sistema nel rispetto del mandato che gli è stato assegnato e non peccare di inadempimenti verso il titolare e l’azienda stessa.
Tutto deve essere regolato sulla base di un contratto stipulato in forma scritta e sottoscritto da ambo le parti. Tale contratto servirà anche, in caso di problemi, ad imputare oneri e responsabilità in capo alle rispettive parti. Il mandato/contratto definisce, in particolare, vincoli, finalità, metodologie e perimetri dei sistemi da testare.
I rischi del pen tester: cosa dice la legge
Dal lato del professionista di sicurezza, il contratto esonera il pen tester da una eventuale possibilità di avere problemi di natura penale. Vediamo come si esprime il diritto penale a tale proposito. In particolare, è opportuno citare il dispositivo dell’art. 615 ter codice penale:
“Chiunque abusivamente si introduce in un sistema informatico o telematico protetto da misure di sicurezza ovvero vi si mantiene contro la volontà espressa o tacita di chi ha il diritto di escluderlo, è punito con la reclusione fino a tre anni”.
L’articolo recita altresì:
“La pena è la reclusione da uno a cinque anni”;
e al capoverso 3 aggiunge:
“se dal fatto deriva la distruzione o il danneggiamento del sistema o l’interruzione totale o parziale del suo funzionamento, ovvero la distruzione o il danneggiamento dei dati, delle informazioni o dei programmi in esso contenuti”.
Come si può constatare, il diritto penale in questo caso è perfettamente allineato con il GDPR (in merito al principio di disponibilità dei dati).
Ci sono contesti in cui un dato indisponibile anche per un periodo di tempo relativamente breve potrebbe mettere in pericolo vite umane: si pensi al chirurgo che opera in condizioni di urgenza e che, in sala operatoria, non può avere accesso alla cartella clinica del paziente e non può visualizzare eventuali farmaci a cui è allergico.
La ratio del GDPR e del codice penale è evitare, tra le altre, situazioni pericolose per la vita umana, come quella riportata poc’anzi.
Un’altra considerazione riguarda l’incrocio tra la tipologia di dati che potrebbero essere visualizzati da chi esegue il penetration test, il destinatario del contratto di mandato (professionista, persona giuridica, dipendente occasionale) e la durata del test.
Va da sé che se l’attività del professionista o persona giuridica verrà svolta con una certa periodicità e la caratteristica del test prevede la possibilità di accesso, anche accidentale, a dati o porzioni di dati personali, occorre considerare l’ipotesi di una nomina come responsabile (esterno) al trattamento dei dati ai sensi dell’art. 28 del Regolamento UE 2016/679 in cui il titolare mandante impartisca dettagliate istruzioni in merito e in cui, lato professionista, vi sia un impegno/obbligo alla riservatezza e di attenersi alle disposizioni impartite/accordate.
Da considerare anche l’informativa privacy che deve essere regolata di conseguenza: il consiglio è quello di consultare la struttura privacy aziendale, il DPO (se presente) o un consulente privacy per verificare se l’informativa necessita una voce che dichiari che i dati potrebbero essere visualizzati da analisti informatici e per quali finalità.
Le competenze necessarie del pen tester
Per quanto riguarda le competenze, il pen tester deve possedere forti competenze informatiche e conoscere bene i linguaggi di programmazione utilizzati da diverse piattaforme per sviluppare exploit. Ciò è necessario sia per eseguire il test con eventuali personalizzazioni richieste dall’azienda (non native nei software tradizionali) utilizzati per queste tipologie di analisi di vulnerabilità, sia per intervenire in caso di problemi di stabilità del sistema che, se eccessivamente sollecitato, può andare in tilt (si pensi ad una simulazione di attacco automatizzato brute force o a dizionario, un metodo di attacco di natura esaustiva che potrebbe impiegare molte risorse e durare a lungo).
Riportare la situazione alla normalità nel giro di brevissimo tempo e correggere “la rotta”, quando il caso lo richiede, fa parte del delicato compito di questo professionista.
Tra le competenze fondamentali, come dicevamo, rientra la conoscenza di uno o più linguaggi di programmazione. Prima di parlare di Python, che merita un approfondimento speciale in quanto è usato moltissimo da hacker etici (ma purtroppo pure dai back hat), è opportuno sintetizzare i più noti:
- C++/C: di media difficoltà di apprendimento, consente agli hacker di creare malware in ambiente Windows;
- JAVA: semplice da imparare, ma molto gradito agli hacker in quanto i malware creati con questo linguaggio sono spesso difficili da rilevare; consente di operare su diverse piattaforme: Windows, MacOS, Linux, Android;
- ASM: il linguaggio Assembler è piuttosto complesso, per questo è molto utilizzato da hacker esperti per creare malware di tipo: worms, Adware, Cripter, e virus polimorfi di nuova generazione.
In merito a Python, nessuno più di un noto esperto come Marco Beri può mostrarci, attraverso un esempio, l’eccezionale versatilità e le sue caratteristiche.
Innanzitutto, è importante sottolineare quella che è forse la sua caratteristica peculiare e vincente: Python permette di dedicarsi completamente al problema che si deve risolvere senza dover pensare, come spesso accade con altri linguaggi di programmazione, a come tradurre le proprie idee in istruzioni. Questo ha un evidente e utilissimo effetto collaterale: permette di concentrarsi sulla ricerca della soluzione.
Dovendo poi indicare un’altra caratteristica che fa da spartiacque tra chi ama Python e chi non lo sopporta, è che la corretta formattazione visuale delle istruzioni è anche una regola sintattica. Non ci sono punti e virgola, parentesi, ENDIF, FI o quant’altro a indicare la fine di un blocco di istruzioni. Un esempio consente di essere più chiari.
Analizziamo questo pezzo di codice scritto in C:
if (persona_anni < 18) {
printf(“Accesso negato\n”);
accesso = 0; }
else if (persona_anni > 99) {
printf(“Non è il caso…\n”);
accesso = 0; }
else { accesso = -1; printf(“Benvenuto\n”);};
return(accesso);}
Questo è lo stesso codice scritto in Python:
if persona.anni < 18:
print(“Accesso negato”)
accesso = False
elif persona.anni > 99:
print(“Non è il caso…”)
accesso = False
else:
print(“Benvenuto”)
accesso = True
return accesso
A colpo d’occhio si riesce a capire il flusso logico del codice scritto in Python, mentre quello scritto in C richiede uno sforzo assai maggiore.
Certamente sarebbe possibile scrivere in maniera più chiara anche il primo esempio, ma in Python questo è un obbligo.
La facilità d’uso di Python lo rende spesso il linguaggio di scripting per creare estensioni e task automatici in molti strumenti, anche nell’ambito della security.
Chiunque abbia visto la serie TV “Mr Robot” avrà notato che in una puntata “molto importante”, il protagonista, un abilissimo hacker etico (ricordiamo che solo ultimamente hacker ha acquisito una errata connotazione negativa) esegue il comando:
./fuxsocy.py
È difficile immaginare un endorsement migliore in ambito di penetration test.
Ancora secondo Marco Beri, che ha avuto modo di vedere e provare sul campo diversi linguaggi di programmazione, nessuno lo ha mai divertito quanto Python. Divertire può sembrare un verbo fuori luogo, ma secondo l’esperto è proprio quello che più si adatta all’uso di questo bellissimo linguaggio: è potente e versatile, ma allo stesso tempo semplice e lineare. È multipiattaforma, veloce da utilizzare, facilmente estendibile e intuitivo. E, ultimo ma non meno importante, è free e open source.