Le vulnerabilità esistono da quando esistono i bug, questo è ormai chiaro com’è chiaro che le configurazioni “by default” (cioè quelle predefinite di fabbrica) sono pericolose quanto una vulnerabilità, se non addirittura molto di più.
Del resto, internet è piena di manuali che citano le credenziali di default di ogni dispositivo o programma, quindi reperirle e sfruttarle è molto facile. Sicuramente ognuno di noi ha avuto a che fare con wizard o tool di autoconfigurazione e spesso li abbiamo trovati anche molto utili, ma come tutte le cose hanno un aspetto negativo.
Se l’aspetto tecnologico è importante, ad esempio installare patch e ridurre le vulnerabilità scoperte (CVE), lo è ancora di più avere delle procedure che permettano di non incorrere nell’errore umano lasciando configurazioni facilmente utilizzabili: molte delle violazioni, infatti, arrivano da inadempienze di configurazioni sicure, a volte per dimenticanza e a volte per negligenza.
Tutto ciò che riguarda il mondo tecnologico nasce con delle configurazioni standard e con delle credenziali di default per facilitarne l’accesso e la configurazione: questo, però, deve aiutarci solo nella fase di installazione di un dispositivo hardware o di un software, ma una volta terminata questa fase e messo a regime il progetto, queste “facilitazioni” devono essere rimosse o variate per evitare che altre persone possano sfruttarle a loro vantaggio.
Quando pensiamo ad una configurazione di default pensiamo come prima cosa alle credenziali di accesso di un dispositivo o di un portale o di un software: questo sicuramente è un aspetto importante e critico della sicurezza, ma a volte anche determinate configurazioni standard possono rivelarsi determinanti in un attacco.
Con un po’ di fantasia, tempo e un minimo di conoscenza è possibile avere una mappa non solo dei dispositivi direttamente pubblicati su internet ma anche quali di questi hanno le credenziali di default o configurazioni standard che possono essere usate per accedere facilmente a dispositivi come server, Webcam, database o router per chiunque abbia intenzioni malevoli.
È dunque utile valutare alcune di queste situazioni in modo da individuare le cosiddette vulnerabilità by default.
Indice degli argomenti
Vulnerabilità by default: i protocolli
uPnP o PnP: è un protocollo che permette di auto-configurare il dialogo tra due host. Chiaramente è una comodità indiscutibile per aggiungere o configurare automaticamente un dispositivo o un software, ma questo protocollo è spesso lasciato attivo o non viene personalizzato successivamente e può, su un dispositivo di interconnessione come un router, bypassare le barriere di sicurezza e creare ponti comunicativi direttamente tra un attaccante e il suo target.
SNMP: almeno una volta nella vita abbiamo avuto a che fare con il protocollo SNMP. Per chi non lo conoscesse, il protocollo SNMP serve per reperire informazioni, monitorare e interagire con apparati hardware/software di rete. Questo protocollo di rete ha, nelle prime due versioni, l’utilizzo di due stringhe per interagire con l’apparato o il software da esso gestito. Le configurazioni di default hanno la stringa “PUBLIC” per la connessione in modalità di sola lettura e “PRIVATE” in modalità di lettura e scrittura. Lasciare questa configurazione di default è chiaramente una falla di sicurezza, pensate se fosse direttamente pubblicato su internet e alla mercé di tutti.
Vulnerabilità by default: i dispositivi
Router: tutti i router hanno utenti di default con relative password (es: admin/admin – admin/password) e, come spiegavo precedentemente, reperirle è estremamente facile visto che queste credenziali sono esplicitamente inserite nei manuali che si possono trovare e scaricare da Internet. Una volta avuto l’accesso al router le possibilità di sfruttarlo sono infinite.
Raspberry: tutti gli apparati Raspberry o i terminali utilizzati nel mondo VDI (Virtual Desktop Infrastructure) hanno credenziali di default che servono per la loro configurazione e sono basati su sistemi Linux che, anche se aggiornati e resi “sicuri” a livello di vulnerabilità, possono cadere nelle mani di hacker se vengono mantenuti i dati di accesso standard. E una volta compromesso un dispositivo, l’attaccante può effettuare una privilege escalation o lateral movements.
Webcam: le webcam direttamente pubblicate su internet sono tantissime e molte di queste conservano le credenziali di default. Pensiamo non solo alle immagini pubblicate online, ma anche alla possibilità di disabilitarle nel caso siano webcam di sicurezza oppure utilizzarle per attacchi di APT o come partenza per DDoS.
IoT Device: le nostre case e i nostri uffici stanno adottando sempre di più dispositivi di questo tipo e anche loro come tutti gli altri hanno credenziali di default: magari non sono raggiungibili esternamente, ma comunque una volta trovato il modo per arrivare ad esse, perché lasciarli in balia degli attaccanti?
ICS Industrial Control System: immaginate se un PLC o un dispositivo che governa un impianto industriale avesse le credenziali di accesso di default e magari fosse anche direttamente pubblicato su internet. Lasciare un accesso facilmente reperibile ad un sistema di questa importanza risulterebbe non solo una vulnerabilità ed un pericolo a livello informatico, ma anche a livello umano.
Vulnerabilità by default: gli applicativi
Il mondo delle credenziali di default non riguarda solo apparati o protocolli ma anche applicativi, che possono essere esposti ad attacchi o possono governare direttamente dispositivi:
Database come MySQL o PostgreSQL sono spesso utilizzati in internet e quindi resi vulnerabili agli attaccanti e anch’essi hanno credenziali di default o configurazioni di default che possono essere sfruttate per accedere ai dati contenuti in essi.
Tools di configurazione massiva che vengono utilizzati per accedere a dispositivi per la loro gestione, pensate se ad un software come Cisco Configuration Professional lasciassi le credenziali standard, potrei anche cambiare le credenziali a tutti i dispositivi che gestisce ma renderei l’intero sistema vulnerabile da un unico punto di gestione centralizzata con ovvie conseguenze.
Per finire con il Cloud, che amplifica ancora di più la risonanza del lasciare le credenziali standard.
Conclusioni
Non basta quindi avere una gestione delle vulnerabilità a livello tecnologico, necessaria ed indispensabile visto che ogni giorno si scoprono nuove CVE, ma occorre che vengano prese in considerazioni procedure e checklist che portino a escludere l’errore umano nel non cambiare o variare le configurazioni di default (ad esempio, su alcuni manuali non vengono citate le credenziali di default ma vengono applicate etichette sul dispositivo stesso).
Una buona pratica è quella di variare subito la password o, dove è possibile, disabilitare l’account di default e aggiungerne uno completamente personalizzato in modo tale da diminuire la superficie d’attacco per l’hacker.
Inoltre, introdurre soluzioni di MFA (autenticazione a più fattori) rendono ancora più sicuro l’accesso ai dispositivi o agli applicativi, ma dove questo non è possibile una buona password complessa può diventare un ottimo compromesso.
Per quanto riguarda le configurazioni standard, sempre meglio customizzare tutto o disabilitare eventuali protocolli non utilizzati o non strettamente utili soprattutto se questi sono direttamente accessibili da internet.