Gestire Dati Sensibili & GDPR con CAST Highlight

By on
 

Introduzione

A partire dall’entrata in vigore del GDPR, ha assunto sempre più importanza sapere se le nostre applicazioni gestiscono o sono comunque attraversate da Dati Personali Sensibili.

Iniziamo con il vedere cos’è il GDPR e cosa si intende per Dati Personali Sensibili in inglese PII (Personal Identifiable Information).

Il GDPR (tratto da Wikipedia)

A maggio 2016 è stato pubblicato sulla Gazzetta ufficiale dell'Unione europea il nuovo Regolamento generale sulla protezione dei dati (GDPR, General Data Protection Regulation - Regolamento UE 2016/679), che è in vigore a partire dal 25 maggio 2016 e si applica dal 25 maggio 2018.

Tale regolamento tutela il diritto del singolo sui propri dati personali e, conseguentemente, disciplina le diverse operazioni di gestione (tecnicamente "trattamento") dei dati, riguardanti la raccolta, l'elaborazione, il raffronto, la cancellazione, la modificazione, la comunicazione o la diffusione degli stessi.

All'art.l del testo unico viene riconosciuto il diritto assoluto di ciascuno sui propri dati, in cui si afferma testualmente: "Chiunque ha diritto alla protezione dei dati personali che lo riguardano". Tale diritto pertiene i diritti della personalità.

Il diritto alla riservatezza è diverso rispetto al diritto sui propri dati perché non riguarda solamente informazioni circa la propria vita privata, ma più in generale ingloba ogni informazione relativa ad una persona, pure se non coperta da riserbo (sono dati personali ad esempio il nome o l'indirizzo della propria abitazione).

Lo scopo della normativa è quello di evitare che il trattamento dei dati avvenga senza il consenso dell'avente diritto, ovvero in modo da recargli pregiudizio. Nel Testo Unico, Titolo II articoli da 8 a 10, sono a tal scopo definiti i diritti degli interessati, la modalità di raccolta e i requisiti dei dati, gli obblighi di chi raccoglie, detiene o tratta dati personali e le responsabilità e sanzioni in caso di danni.

Cosa intendiamo per Dati Personali Sensibili (tratto dal Garante per la protezione dei dati personali)

Sono dati personali le informazioni che identificano o rendono identificabile, direttamente o indirettamente, una persona fisica e che possono fornire informazioni sulle sue caratteristiche, le sue abitudini, il suo stile di vita, le sue relazioni personali, il suo stato di salute, la sua situazione economica, ecc.. Particolarmente importanti sono:

  •  I dati che permettono l'identificazione diretta - come i dati anagrafici (ad esempio: nome e cognome), le immagini, ecc. - e i dati che permettono l'identificazione indiretta, come un numero di identificazione (ad esempio, il codice fiscale, l'indirizzo IP, il numero di targa);
  •  I dati rientranti in particolari categorie: si tratta dei dati c.d. "sensibili", cioè quelli che rivelano l'origine razziale od etnica, le convinzioni religiose, filosofiche, le opinioni politiche, l'appartenenza sindacale, relativi alla salute o alla vita sessuale. Il Regolamento (UE) 2016/679 (articolo 9) ha incluso nella nozione anche i dati genetici, i dati biometrici e quelli relativi all'orientamento sessuale;
  • I dati relativi a condanne penali e reati: si tratta dei dati c.d. "giudiziari", cioè quelli che possono rivelare l'esistenza di determinati provvedimenti giudiziari soggetti ad iscrizione nel casellario giudiziale (ad esempio, i provvedimenti penali di condanna definitivi, la liberazione condizionale, il divieto od obbligo di soggiorno, le misure alternative alla detenzione) o la qualità di imputato o di indagato. Il Regolamento (UE) 2016/679 (articolo 10) ricomprende in tale nozione i dati relativi alle condanne penali e ai reati o a connesse misure di sicurezza.

E’ perciò fondamentale che le organizzazioni sappiano se le loro applicazioni stanno elaborando dati PII.

Sarebbe abbastanza ovvio dire che un’applicazione che è collegata a un database centrale che contiene tabelle o colonne come "nome_nome", "indirizzo_e-mail", "numero_di_sicurezza_sociale", ecc. gestisce dati sensibili, ma nel software, nulla è più ovvio. Infatti, applicazioni e database non hanno necessariamente un rapporto 1:1. Potremmo avere alcuni database centrali, che storicizzano Dati Sensibili, a cui hanno accesso centinaia di applicazioni e non è detto che tutte queste applicazioni trattino dati sensibili.

Inoltre, le applicazioni possono manipolare i dati PII senza alcun database. Oggi API, JSON, web e microservizi sono la norma, il che significa che un pezzo di codice sorgente può leggere, elaborare e condividere dati con altri componenti senza avere la minima idea del database che lo ha inizialmente memorizzato. Un piccolo script preparato dal dipartimento delle risorse umane legge l'API di LinkedIn per assumere i migliori profili?
Esiste il rischio che manipoli i dati PII, almeno i nomi, la posizione e le immagini del profilo?

Ciò per dire che per valutare se un’applicazione tratta dati sensibili bisogna verificarlo caso per caso. Vediamo come farlo.

La scansione del codice sorgente

Fortunatamente, gli sviluppatori, per potere leggere e manutenere più facilmente il codice, il 99% delle volte chiamano classi, metodi, parametri con nomi non oscuri (ad es. getCustomerName, updateProfile($CreditCardNumber) ecc.). Di conseguenza, è possibile approssimare (se non determinare) se un'applicazione elabora i dati PII analizzando il suo codice sorgente e contando le occorrenze delle parole chiave relative alle PII.

È qui che entra in gioco la piattaforma Cast Highlight.

La funzionalità di keyword scan di Cast Highlight (HL)

Questa funzionalità può essere utilizzata per cercare qualsiasi tipo di parola chiave (token segreto API o password in chiaro, ad esempio), ed è ovviamente particolarmente indicata nel caso del GDPR.

La funzionalità di scansione delle parole chiave funziona con la modalità di scansione del codice da riga di comando (CLI); al file binario java che esegue l’analisi del codice sorgente da esaminare viene passato un file di configurazione (in formato XML) che conterrà le parole chiave (–keywordScan "/<file_path/file.xml"). Questo file XML dirà agli analizzatori cosa cercare durante una scansione del codice.

Keyword scan CAST HL

Figura 1: Esempio di file di configurazione .XML

Il file consente due modalità per la ricerca delle parole chiave:

  • keywordGroup: cercherà nel codice una parola chiave o un insieme di parole chiave simili (es. “codice fiscale”, “cf”, “codice-fiscale”, ecc.). Per ogni gruppo di parole chiave, è possibile definire un peso specifico (ad esempio, in un contesto GDPR, un numero di passaporto avrà più peso di un nome) e opzioni di ricerca come la distinzione tra maiuscole e minuscole o la corrispondenza completa o parziale delle parole. KeywordGroup consente inoltre agli utenti di definire luoghi specifici (ambiti di ricerca) in un file sorgente (ovunque, solo codice, commento, stringa).
    Questa modalità ha essenzialmente lo scopo di contare le occorrenze di parole chiave semplici così da produrne un punteggio e fornirne la densità; viene preferita quando è necessario osservare e misurare l'uso frequente di parole chiave.

  • patternGroup: questo modalità ha lo scopo di supportare ricerche più sofisticate nei file del codice sorgente da esaminare. Ha infatti lo scopo di verificare la presenza di una parola chiave o di una combinazione di parole chiave, eventualmente all'interno di contesti specifici (ad esempio in estensioni di file specifici, nomi di file specifici, ecc.). Questa modalità utilizza espressioni regolari e sarà preferita quando è necessario osservare e rilevare l'uso raro di parole chiave.

Risultati prodotti

Nelle dashboard Highlight, le informazioni di Keyword Scan possono essere visualizzate a livello di portfolioapplicativo o di singola applicazione (vedi Figura 2).

Utilizzando i pesi e il numero di occorrenze per keywordGroup, la dashboard visualizza i punteggi aggregati per dominio, applicazione o parole chiave. I punteggi delle parole chiave sono semplici da comprendere poiché il loro scopo è identificare rapidamente il volume di occorrenze (inteso come ‘gravità’ delle parole chiave), la densità e l'ambito nei file del set di parole chiave:

  • Score: numero di occorrenze * peso
  • Density: punteggio/file totali dell'applicazione
  • Impacted Files: numero di file in cui sono state trovate occorrenze di parole chiave

Risultati keyword scanFigura 2: Risultati forniti da Cast HL

Visivamente nella figura sopra troviamo, a sinistra una tabella dove si può vedere quando le applicazioni contengono molte occorrenze e/o occorrenze con gravità elevata osservando lo Score, mentre a destra è presente un grafico che evidenzia  la dimensione dei keywordGroup con punteggi più alti; questo grafico può essere navigato, infatti cliccando sul keywordGroup si avrà il dettaglio delle occorrenze nei singoli file in cui sono state trovate le occorrenze.

Conclusioni

Cast HL è quindi lo strumento che permette di verificare rapidamente se una applicazione manipola dati sensibili: basta infatti andare a vedere se l’applicazione conta occorrenze delle parole chiave configurate.