Il problema maggiore nella cyber security è sempre quello delle competenze.
Ecco perché, con l’obiettivo di migliorare la postura di sicurezza di applicazioni e servizi ma anche di contribuire ad aumentare il livello di consapevolezza circa i problemi di sicurezza e le relative tecniche per mitigarli, l’Unità di Ricerca “Security & Trust” della Fondazione Bruno Kessler ha iniziato un progetto per lo sviluppo di strumenti automatici per assistere, rispetto ad alcune problematiche di sicurezza, figure professionali con un limitato bagaglio di conoscenze nel campo della cybersecurity.
Prima di approfondirne le caratteristiche, forniamo alcuni dati per inquadrare meglio il contesto in cui si opera.
Cyber security: il nodo della formazione
Secondo l’ultimo sondaggio condotto dalla Information Systems Security Association (ISSA) in collaborazione con l’Enterprise Strategy Group (ESG), la mancanza di un’adeguata formazione riguardo ai problemi ed alle soluzioni di cyber security crea problemi al 74% delle organizzazioni. Nonostante questo, il 63% delle organizzazioni non offre ai suoi dipendenti la possibilità di aggiornarsi e colmare il proprio debito formativo. Questa situazione sembra essere il risultato di varie cause che includono l’eccessivo carico di lavoro (66%) e l’incapacità di imparare o utilizzare nuove tecnologie di sicurezza (47%). In particolare, le aree che sembrano essere più interessate dalla mancanza di competenze sono la sicurezza in cloud (33%) e la sicurezza a livello applicativo (32%).
La quantità di dati e la velocità con la quale essi vengono elaborati complica enormemente la loro gestione sicura da parte degli esseri umani se i processi di sicurezza non vengono (almeno parzialmente) automatizzati. Si pensi, ad esempio, all’enorme mole di dati che la tecnologia dell’Internet delle cose (IoT) produce (e continuerà a produrre in futuro secondo varie proiezioni) ed appare subito chiaro che sarà sempre più difficile per un essere umano gestire in sicurezza tali dati senza l’aiuto di strumenti automatici.
Un esempio che illustra questa tendenza è fornito da un recente articolo scientifico che analizza il comportamento di un gruppo di sviluppatori posti di fronte al compito di implementare la memorizzazione delle password degli utenti di un’ipotetica rete social. Lo studio rivela che, anche in presenza di un’attività dove la sicurezza gioca un ruolo fondamentale, questo aspetto viene sistematicamente ignorato se non esplicitamente incluso tra i requisiti: la maggioranza degli sviluppatori ha memorizzato le password in chiaro mentre le tecniche di protezione utilizzate dai rimanenti non sono adeguate.
Gli assistenti automatici
L’idea è che tali assistenti debbano, non solamente identificare e segnalare possibili vulnerabilità, ma anche fornire indicazioni precise e concrete (ovvero facilmente utilizzabili) per mitigare le vulnerabilità precedentemente identificate.
Nel seguito, si descrivono brevemente due strumenti nati nel contesto di questo progetto.
Il primo si rivolge a chi deve configurare l’utilizzo del protocollo TLS (Transport Layer Security) che viene visto come il componente fondamentale per garantire la sicurezza di molti servizi ed applicazioni esposti su Internet. Il secondo considera un aspetto molto importante della sicurezza delle soluzioni IoT ovvero la configurazione dei broker MQTT (Message Queuing Telemetry Transport) che sono molto utilizzati per scambiare messaggi tra una moltitudine di device IoT e le applicazioni che implementano la logica di controllo.
TLSAssistant
TLS (successore di SSL) consiste in un insieme di protocolli crittografici il cui obiettivo è di fornire la comunicazione sicura su canali insicuri. La stragrande maggioranza dei siti web fornisce supporto ad una o più versioni di TLS. Data la popolarità di TLS, durante gli anni, sono stati trovati molti attacchi che vanno dalla rinegoziazione dei cifrari allo sfruttamento di funzioni crittografiche deboli. Varie soluzioni a tali problemi sono state adottate in versioni successive del protocollo: la più recente è la 1.3 mentre quella più utilizzata è la 1.2, versioni precedenti sono ancora utilizzate per garantire la retro-compatibilità verso alcuni servizi. Configurare in maniera sicura il protocollo TLS non risulta un’attività facile per gli amministratori di servizi ed applicazioni esposti su Internet poiché devono padroneggiare i concetti alla base dei cifrari utilizzati, le loro vulnerabilità e comprendere l’impatto sullo scenario di utilizzo degli attacchi che possono essere portati.
Mentre esistono strumenti automatici per identificare potenziali vulnerabilità nei protocolli TLS, il compito di capire come mitigare i problemi di sicurezza è interamente sulle spalle degli amministratori. Tipicamente, le informazioni sui rimedi sono disponibili online ma sono distribuite su una moltitudine di fonti eterogenee (ad esempio blog ed articoli scientifici) che spesso richiedono conoscenze approfondite per essere tradotte in indicazioni concrete atte a mitigare una vulnerabilità.
Per ovviare a queste difficoltà, l’Unità di Ricerca “Security & Trust” ha sviluppato TLSAssistant che, riutilizzando strumenti esistenti per identificare potenziali attacchi, è in grado di identificare possibili attacchi e di suggerire misure per mitigarli a diversi livelli di dettaglio che vanno dal linguaggio naturale a frammenti di codice che possono essere direttamente utilizzati per rendere l’istanza del protocollo TLS più sicura. TLSAssistant è in grado di fare questo in maniera completamente automatica, ricevendo in ingresso solo l’indirizzo del server che utilizza il protocollo TLS, basandosi su un catalogo di possibili attacchi.
L’usabilità di TLSAssistant è stata, in prima battuta, valutata sperimentalmente coinvolgendo un insieme di studenti (sia della laurea breve che di quella magistrale) in possesso di alcune nozioni di base in ambito cybersecurity. I risultati sono incoraggianti e confermano che l’utilizzo di TLSAssistant permette di mitigare attacchi che gli utenti non saprebbero gestire se lasciati senza guida anche con la possibilità di consultare risorse disponibili on-line.
Lo strumento è disponibile online ed è utilizzabile secondo i termini della licenza Apache 2.0. Per maggiori dettagli su TLSAssistant ed il suo utilizzo clicca qui.
MQTTSA
L’IoT è un paradigma tecnologico che promette di rivoluzionare molti contesti che vanno dalla domotica alla produzione industriale. Allo stesso tempo, la sua realizzazione richiede di risolvere alcune sfide che riguardano la sicurezza e la privacy dell’enorme quantità di dati che l’ecosistema IoT gestisce.
Nel 2018, un sondaggio dell’Eclipse IoT Working Group ha evidenziato come la sicurezza è considerata la prima sfida da raccogliere nello sviluppo di systemi IoT (39% degli sviluppatori intervistati). Lo stesso gruppo di lavoro sottolinea come l’adozione da parte degli sviluppatori di meccanismi di sicurezza sia ancora molto carente. In particolare, l’ambito in cui questa carenza sembra essere più sentita (secondo il 57,3% degli intervistati) è quello dello scambio di messaggi tra i dispositivi IoT periferici (sensori) e gli aggregatori di dati. Questa situazione è dovuta a diversi fattori tra cui
- la mancanza di adeguati meccanismi di sicurezza disponibili nativamente nei componenti utilizzati a causa delle limitazioni dei dispositivi IoT in termini di capacità di elaborazione e consumo di energia,
- il fatto che gli sviluppatori si preoccupino principalmente delle funzionalità piuttosto che degli aspetti di sicurezza,
- la mancanza di avvisi di sicurezza e relative misure per mitigare vulnerabilità dovute ad errate configurazioni.
Mentre alcune soluzioni al primo problema sono state proposte (si veda, ad esempio, il progetto Lightweight Cryptography del NIST), gli altri due sono stati studiati molto meno. Per alleviare questi problemi e migliorare la sicurezza dello scambio di messaggi in applicazioni e servizi IoT, l’Unità di Ricerca “Security & Trust” ha sviluppato MQTTSA (acronimo per MQTT Security Assistant) ovvero un assistente per migliorare la postura di sicurezza di broker che utilizzano MQTT, uno dei protocolli di messaggistica più utilizzati in ambito IoT (e non soltanto).
MQTTSA è in grado di identificare un insieme di vulnerabilità dei broker MQTT (istanziando automaticamente un catalogo di schemi di attacco) e fornire indicazioni per mitigare gli attacchi trovati. Similmente a TLSAssistant, le mitigazioni sono descritte a diversi livelli di astrazione: dal linguaggio naturale a frammenti di codice che possono essere immediatamente utilizzati per migliorare la configurazione dei broker. L’obiettivo di MQTTSA è duplice: da un lato, migliorare la sicurezza dei broker MQTT e dall’altro, aumentare la consapevolezza degli sviluppatori di sistemi IoT rispetto ai problemi di sicurezza.
L’efficacia di MQTTSA è stata valutata sperimentalmente in due fasi: d’apprima si è effettuata una campagna di analisi (non intrusiva) dei broker MQTT esposti su Internet e successivamente si sono riprodotte le configurazioni più frequenti trovate nella prima fase in laboratorio e quindi si sono sfruttate appieno le capacità di attacco di MQTTSA, incluse quelle intrusive come la possibilità di portare un attacco di tipo Denial of Service. I risultati ottenuti confermano la scarsa attenzione alla sicurezza dei servizi e delle applicazioni IoT.
Lo strumento sarà disponibile on-line a breve e sarà utilizzabile secondo i termini della licenza Apache 2.0. Clicca qui per maggiori dettagli su MQTTSA ed il suo utilizzo.
Assistente automatico, servo di due padroni?
Il progetto sugli assistenti automatici pur essendo in fase iniziale ha fornito le prime evidenze di come sia possibile utilizzare gli assistenti automatici per la sicurezza al fine di
- rafforzare la postura di sicurezza di applicazioni, servizi e sistemi IT (e non solo)
- aumentare la consapevolezza rispetto ai problemi di sicurezza dei professionisti con un bagaglio di conoscenze limitato in cybersecurity.
Sembrerebbe dunque possibile per un assistente automatico diventare il servo di due padroni.
Per aumentare la confidenza che si possa dare risposta positiva è necessario proseguire nella valutazione sperimentale circa l’usabilità e l’efficacia di TLSAssistant e di MQTTSA nonché sviluppare nuovi assistenti che considerino altri aspetti di cybersecurity inerenti tutte le fasi di progettazione e sviluppo di servizi ed applicazioni.
Ad esempio, l’Unità di Ricerca “Security & Trust” ha recentemente iniziato lo sviluppo di uno strumento per assistere gli sviluppatori di applicazioni su mobile nell’integrazione di soluzioni di autenticazione ed autorizzazione basate sui protocolli OpenIDConnect ed OAuth 2.0 (come quelle di Google ad esempio ma si noti che anche AgID ha recentemente dato indicazioni sull’intenzione di adottare un profilo OpenIDConnect per “portare su mobile” SPID). L’idea alla base di questo assistente, chiamato mIDAssistant (abbreviazione per mobile Identity Management Assistant), è far interagire lo sviluppatore con un wizard che pone una serie di domande di alto livello, le cui risposte permettono di generare automaticamente la parte di codice dell’applicazione che gestisce la procedura di autenticazione in maniera sicura (ovvero incorporando tutte le best-practice conosciute).
In futuro, l’Unità di Ricerca “Security & Trust” intende valutare come il codice generato, oltre a rendere l’applicazione più sicura, possa contribuire alla diffusione delle best-practice di sicurezza nell’ambito dello sviluppo di applicazioni su mobile. Maggiori informazioni su mIDAssistant.