Con il termine Internet of Things (IoT) – tradotto in “Internet delle cose” – si identificano tutti quei dispositivi fisici connessi alla Rete. Gli esempi più conosciuti sono gli elettrodomestici, i sistemi di controllo per uffici e abitazioni, intrattenimento, mobilità e salute. Ecco perché è importante raggiungere un elevato livello di sicurezza IoT.
Queste tecnologie si avvalgono di software e sensori per la creazione e raccolta di dati, scambiando queste informazioni mediante la connettività a reti. Generalmente, lo scopo è il miglioramento dell’efficienza, l’aumento dei benefici economici e la riduzione degli sforzi umani. Ad esempio, un termostato connesso a Internet permette di regolare la temperatura di casa mediante un’applicazione per smartphone, dando all’utente il controllo e la gestione ovunque egli si trovi: quindi accendere o spegnere il riscaldamento dall’esterno e gestire al meglio il consumo dell’energia grazie a statistiche in tempo reale.
Indice degli argomenti
Caos settoriale: un grosso problema per la sicurezza IoT
La prima accusa mossa verso l’IoT è la mancanza di standard tecnici unificati oltre che la frammentazione delle piattaforme. Le vulnerabilità e le minacce sono relative all’utilizzo del dispositivo, alle singole tecnologie utilizzate e alla versione del software.
Proporre linee guida ai produttori, per ragionare seriamente di sicurezza delle informazioni, delle persone fisiche, di privacy, gestione e controllo, diventa un lavoro pressoché impossibile.
Le differenze d’uso di questi prodotti si riflettono in scelte di sviluppo differenti, sia in termini di software sia di hardware. I software lavorano in modo differente in base al produttore e alla generazione del prodotto; ciò rende difficile lo sviluppo di applicazioni coerentemente compatibili con i diversi ecosistemi tecnologici.
Le caratteristiche del dispositivo – specialmente fattori come portata, requisiti dei dati, sicurezza e alimentazione – determinano la scelta di come combinare le tecnologie. Le tecnologie di comunicazione, ad esempio, sono ben note come reti le Wi-Fi, Bluetooth, ZigBee, e 2/3/4G, ma ci sono anche diverse nuove opzioni di networking emergenti.
Queste differenze si sono create nei pochi anni di esperienza, e rendono caotico l’intero settore perché non ancora standardizzabile.
La natura frammentata dell’IoT porta ad un grosso problema per la sicurezza: la rapida obsolescenza dei dispositivi.
La continua innovazione e la forte richiesta di queste tecnologie – in un mercato ad oggi in fase pre-sviluppo (o di introduzione) – spinge i produttori ad investire molto in ricerca. Questa situazione del mercato obbliga i produttori a dover costantemente proporre ai clienti nuove generazioni di prodotti sempre più innovativi, rendendo praticamente impossibile il supporto delle generazioni precedenti: ciò significa principalmente che i software non saranno più aggiornati.
Nel settore IoT, una nuova generazione causa direttamente l’abbandono del supporto alle precedenti – ovvero il dispositivo obsoleto non riceverà più aggiornamenti. A supporto, una ricerca già nel 2015 illustrava l’incapacità dei produttori nel mantenere aggiornati i dispositivi più datati, e che oltre l’87% dei prodotti Android attivi erano lasciati vulnerabili – percentuale obbligata a crescere col tempo (Thomas, D.R., Beresford, A.R., and Rice, A., 2015. Security Metrics for the Android Ecosystem. University of Cambridge. doi:10.1145/2808117.2808118).
La frenetica corsa contro il tempo spinge i produttori a lanciare sul mercato prodotti imperfetti, vulnerabili, e non sicuri.
Oltre all’obsolescenza, spesso è difficile per l’utente aggiornare il software anche dei prodotti ancora supportati. Per rendere lo sviluppo più veloce è sempre necessario snellire il funzionamento del prodotto, quindi software e hardware devono essere il più semplice e leggeri possibile. Con questa tipologia di dispositivi, ciò si traduce spesso nel sottovalutare le funzionalità necessarie per la sicurezza, ovvero gli aggiornamenti. Se non impossibile, per vari motivi tecnici spesso può risultare complesso aggiornare un dispositivo.
Misconfiguration: la vulnerabilità tipica dell’Internet of Things
La mancata configurazione dei dispositivi IoT da parte dell’utente induce, come per tutto ciò che è collegato alla Rete, alle vulnerabilità chiamate di “misconfiguration”.
All’installazione di un dispositivo IoT un utente poco attento non modifica la password di accesso via Internet; il problema è grave dato che generalmente il produttore poco prudente imposta un’unica chiave di accesso per tutti i dispositivi prodotti. Ad esempio, per autenticarsi ad un dispositivo la user e password potrebbero essere “admin” e “password”.
Problematica simile incorre utilizzando password deboli: l’errore del produttore è permettere all’utente di utilizzare combinazioni indovinabili, come ad esempio “1234” o “p4ssw0rd”.
Shodan.io è un motore di ricerca che consente di trovare i dispositivi connessi ad Internet, in base alla tipologia (come database, Webcam, router, server ecc.) mediante filtri efficaci. Con questo strumento è possibile filtrare i risultati per chiavi di ricerca, per trovare l’indirizzo IP e le porte di comunicazione (utilizzate per la comunicazione) di dispositivi che utilizzano una specifica tecnologia software (ad esempio, una affetta da vulnerabilità note), o in alcuni casi che presentano una particolare configurazione.
Ad ogni risultato di ricerca è associata una descrizione dettagliata, che regala informazioni importantissime non nascoste dall’applicativo software e dalla sua configurazione, dando la possibilità di risalire facilmente alle vulnerabilità del dispositivo e di conseguenza al codice necessario per un attacco.
Insecure Web Interface: scarsa sicurezza delle applicazioni IoT
Le principali vulnerabilità di un dispositivo IoT sono presenti principalmente nella componente software che interagisce con la Rete.
Quando il produttore realizza un’interfaccia Web, dovrebbe implementarla seguendo le ferree regole di sicurezza delle applicazioni, al fine di evitare gli errori più banali e le serie problematiche derivanti, utilizzando framework e plug-in che implementino i controlli di sicurezza e pianificando eventuali aggiornamenti o correzioni.
Così facendo è possibile garantire un livello di sicurezza molto alto, ma come detto il tempo è tiranno. Sul mercato è possibile trovare prodotti che non utilizzano protocolli di comunicazione sicuri, non forniscono password di default sicure, o che addirittura – rari casi – non utilizzano la cifratura dei dati.
Insecure Network Services: il pericolo si nasconde nei servizi di rete
Gli errori di una fase di sviluppo superficiale possono essere molti, banali ma non rari.
È possibile che siano dimenticati elementi che possono essere sfruttati da un attaccante, come codice e interfacce di test o di manutenzione, che non vengono eliminate, disabilitate o adeguatamente protette. Anche la cattiva gestione degli errori e delle eccezioni può essere un enorme problema. Ci si può imbattere in protocolli non autenticati o canali non criptati: essi possono essere non protetti e causa di una pericolosa esposizione.
Nella fase di architettura non viene spesso considerata la superficie di attacco che presentano i servizi di rete del dispositivo. Spesso, per superficialità non sono disattivati i servizi non necessari, e non sono implementate le misure di protezione necessarie degli altri servizi.
Un buon sviluppo deve prevedere la rilevazione delle attività dannose e prevedere una reazione proattiva a un attacco.
Lack of Transport Encryption/Integrity Verification: l’importanza di protocolli cifrati
La scelta dei protocolli utilizzati e dei metodi di cifratura può essere sottovalutata. Può essere scelto un protocollo e una cifratura che sono comunemente noti come vulnerabili, e di conseguenza mettere a rischio la confidenzialità dei dati in transito.
Se un protocollo di comunicazione utilizzato non è sicuro, bisogna prendere una crittografia dei dati molto forte, prima del trasferimento di essi.
Utilizzare protocolli sicuri per trasmettere dati cifrati è la soluzione più sicura, ma bisogna comprendere che i dispositivi IoT generalmente non dispongono di molta capacità computazionale, quindi, per limiti fisici, la combinazione delle due metodologie non può essere possibile.
Un buono sviluppo, nonostante la semplicità hardware, può rendere sicuro il dispositivo, ma è necessaria una implementazione ponderata.
Insufficient Authentication/Authorization: proteggere i meccanismi di accesso
Una delle vulnerabilità che implica un alto rischio sui dispositivi – generalmente comune, non solo nel mondo IoT – è l’insufficienza dei meccanismi di autorizzazione e/o autenticazione.
Ciò può permettere ad un attaccante di ottenere il pieno o parziale controllo. Le tecniche di attacco sono molteplici, può essere ad esempio possibile raggirare i meccanismi di sicurezza, o indovinare la password.
Privacy Concerns: i dati sono a rischio
I dati creati e scambiati da un dispositivo IoT possono essere a rischio privacy. Aggregando i dati intercettati, un attaccante può portare a termine una “inferenza”, ovvero raggiungere informazioni non accessibili dai singoli dati. Ad esempio, da dispositivi sanitari potrebbe essere possibile correlare patologie a un individuo.
Il dispositivo deve raccogliere la quantità di dati minima ed essenziale. Il produttore si deve avvalere di data scientist, legali, e metodologie di conformità per determinare il rischio di correlazione dei dati, e applicare metodologie per evitare lo siano.
Insecure Cloud Interface: il pericolo arriva dal cloud
Molti dispositivi IoT si avvalgono dell’elaborazione dei dati mediante server, gestiti dal produttore o da terzi. Aggiungendo ampiezza al servizio offerto, il sistema riceve maggiori rischi.
I servizi offerti tramite il cosiddetto “cloud” devono rispettare linee guida riconosciute efficaci e contromisure importanti.
Per il cloud, si presentano nuovamente le potenziali minacce sull’interfaccia, password deboli, scambio dei dati, cifratura, ecc.
Le minacce sui servizi cloud impattano direttamente sui dati collezionati dai device IoT.
Insecure Mobile Interface: il punto debole è nelle app dello smartphone
I dati prodotti da un dispositivo IoT possono non passare da servizi cloud, ma possono essere direttamente accessibili dallo smartphone dell’utente.
Come nel paragrafo precedente, i dati che raggiungono il dispositivo mobile, devono essere gestiti in sicurezza. Oltre a dipendere tutto dalla sicurezza del cellulare, è necessario porre attenzione sullo sviluppo dell’applicativo del dispositivo mobile con cui si controllano, gestiscono, o consultano i dati del dispositivo IoT.
Insecure Software/Firmware: il mancato aggiornamento è un problema
Generalmente le distribuzioni IoT sono applicate su un’infrastruttura preesistente, o hanno un ciclo di implementazione estremamente lungo. Per mantenere la sicurezza dei dispositivi nel tempo è fondamentale pianificare patch e aggiornamenti.
Esiste una metodologia sicura e standardizzata per l’installazione degli aggiornamenti – basata su hash e firma a chiave pubblica -, lo scopo è di permettere ai dispositivi di riconoscere l’autenticità dell’aggiornamento, dato che questi avvengono quasi unicamente mediante canali non attendibili.
I dispositivi dovrebbero sempre convalidare i certificati crittografici e scartare gli aggiornamenti non attendibili.
La gestione delle chiavi e il ciclo di vita dovrebbero essere presi in considerazione prima dell’implementazione, ma, allo stato attuale, non è sempre correttamente valutato a priori e gestito dal dispositivo.
Poor Physical Security: proteggere i dispositivi IoT dal furto
I dispositivi IoT possono essere fisicamente compromessi o rubati, e se non esiste una protezione da questa eventualità, gli utenti possono perdere i propri dati personali e sensibili.
Il produttore deve disabilitare tutte le interfacce di test e debug, utilizzare i moduli di sicurezza hardware, i codificatori crittografici e i moduli di piattaforma affidabili – anche se in base allo specifico hardware, non tutto è possibile.
L’architettura del sistema deve prevedere il trasferimento della proprietà dei dispositivi e la non trasferibilità dei dati con la proprietà fisica.
Generalmente, i nuovi business sono focalizzati sul funzionamento del dispositivo, e generalmente le prime generazioni non sono disegnate per prevedere anche questa problematica.
Insufficient Security Configurability: meglio disabilitare funzionalità inutili
La configurabilità di un prodotto è sempre un valore aggiunto. Se l’utente ha possibilità di scegliere quali funzionalità utilizzare, disabilitando quelle non indispensabili, la sicurezza può aumentare sensibilmente.
La progettazione dovrebbe considerare in modo differente i requisiti di sicurezza in base alle funzionalità offerte, e ai livelli di rischio. Spesso però la sicurezza offerta è standardizzata e unica per tutte le funzioni e tutti gli utenti.
Le soluzioni per rendere sicura l’Internet of Things
I consigli per avere maggiore sicurezza con dispositivi IoT, sono generalmente i soliti comunemente consigliati per tutte le tecnologie:
- assicurarsi sempre che il software del dispositivo sia aggiornato all’ultima versione;
- non utilizzare prodotti che non siano più supportati dai loro produttori o che non possono più essere protetti;
- modificare la password di default con una forte (che contiene caratteri speciali, come ‘!?+-*/@#=’ ecc.); purtroppo, come ad esempio anche per le pagine web, non tutti i sistemi IoT permettono password forti, quindi utilizzare almeno le maiuscole e cifre in combinazioni lunghe e non indovinabili;
- modificare le impostazioni di default, come ad esempio la porta di comunicazione;
- disattivare le funzioni che non servono, ad esempio per le Smart TV disattivare definitivamente l’uso del microfono e Webcam;
- fare sempre attenzione ai propri dati personali, riservati, e sensibili, ovvero identificare quali dati il dispositivo può raccogliere e condividere;
- se possibile, impostare la comunicazione di dati da e per i dispositivi utilizzando la crittografia;
- non utilizzare reti Internet non proprie, soprattutto reti di cui non si conosce la sicurezza o la provenienza; le reti pubbliche che necessitano di accettare un certificato per l’utilizzo potrebbero avere la totale visibilità in chiaro anche del traffico criptato;
- se non è possibile a bloccare completamente il traffico in entrata sui tuoi dispositivi IoT, assicurarsi che non ci siano porte software aperte;
- se possibile, è sempre consigliato avere una rete separata, dietro un firewall per proteggere la comunicazione, ed effettuare il controllo del traffico.
Conclusioni
I requisiti di sicurezza sono il punto di partenza quando si progetta l’architettura di un prodotto. Come detto in precedenza, i produttori devono risparmiare tempo per essere innovativi sul mercato – o almeno per rincorrere i concorrenti.
I device e i loro sistemi dovrebbero consentire il rilevamento di attività dannose, la capacità di autodifesa, e un piano di reazione in caso di rilevato una problematica.
Inoltre, la progettazione dell’IoT dovrebbe essere compatibile con la sicurezza futura, poiché la crittografia, le metodologie, e le tecnologie di sicurezza evolvono. Un prodotto IoT dovrebbe essere in grado di essere aggiornato ai nuovi standard, ma essendo ad oggi l’obsolescenza troppo rapida, il mantenimento e l’evoluzione di un prodotto è troppo costoso per il produttore.
Secondo l’opinione di chi scrive, fin quando il mercato dell’IoT non sarà maturo – quando i prodotti si equivarranno in prestazioni e funzioni offerte, potrebbe risultare difficile avere dispositivi e sistemi IoT sicuri.