
Exploit Denial of Service per il Device Portal di Microsoft HoloLens tramite richieste di accoppiamento API ripetute, causando sovraccarico della CPU e mancanza di risposta del sistema.
Tânia Silva, António Pinto, Pedro Pinto e Sara Paiva
Un attacco Denial of Service (DoS) mira a sovraccaricare un sistema target in modo tale che esso diventi gradualmente incapace di rispondere a tutte le richieste inviate. In questo modo, un utente legittimo perde l'accesso a un servizio, che, a seconda del dominio applicativo, può essere cruciale per il suo processo. Per questo problema, abbiamo analizzato i visori HoloLens che offrono un'esperienza di Realtà Mista (MR). HoloLens 1 e 2 forniscono un framework per gestire e manipolare i contenuti e le funzionalità sull'HoloLens da remoto. Lo strumento si chiama "Device Portal", come mostrato in Figura 1.1, e consente all'utente di gestire applicazioni, documenti e contenuti multimediali archiviati sul dispositivo head-mounted. Questo strumento permette anche la visualizzazione in tempo reale delle attività dell'utente sul dispositivo e la registrazione immediata o l'acquisizione dello schermo. Inoltre, questo strumento consente il monitoraggio dei componenti di sistema, nonché la gestione dei processi in esecuzione in quel momento sul sistema.
Figura 1.1: Device Portal di HoloLens
Nella Figura 1.2 è illustrata l'architettura dell'attacco effettuato. Per eseguire l'attacco, il malintenzionato deve essere connesso alla stessa rete del target. Questa connessione consente all'hacker di utilizzare uno scanner di sicurezza per analizzare l'intera rete con l'intenzione di identificare i dispositivi disponibili sulla rete.
Qualsiasi dispositivo connesso alla rete può accedere al "Device Portal" semplicemente inserendo l'IP corrispondente dell'HoloLens in un browser. Dalle informazioni raccolte dallo scanner, l'attaccante può identificare l'IP e usarlo per tentare di accedere al servizio di gestione remota. Analizzando il traffico di rete quando viene eseguita un'azione sul "Device Portal", l'hacker ottiene l'accesso alle richieste effettuate all'API del dispositivo. Con queste informazioni, può sviluppare uno script per eseguire queste richieste all'API in modo consecutivo. Ricevendo tutte queste richieste, la CPU diventa sovraccarica e, di conseguenza, il sistema diventa non reattivo ai comandi degli utenti legittimi, bloccando l'uso dell'HoloLens. Anche se l'utente decide di riavviare i visori, l'attacco continua finché l'IP rimane invariato o l'attaccante decide di fermarlo.
Figura 1.2: Architettura dell'attacco DoS su HoloLens
I requisiti necessari per la corretta riproduzione di questo attacco sono:
Non è necessario avere un sistema operativo specifico per eseguire l'attacco. Lo script utilizzato per il DoS deve essere adattato secondo i requisiti dello strumento scelto per eseguire lo script.
Il malintenzionato avvia l'attacco selezionando uno strumento di scansione della rete per identificare l'IP corrente dei visori connessi alla rete. Per accedere alla homepage del "Device Portal", è sufficiente inserire l'IP dei visori nel browser. In questa pagina, ti verrà chiesto di inserire le credenziali di accesso. Tuttavia, una volta raggiunto un conteggio di 3 tentativi errati, l'utente viene reindirizzato alla pagina in cui è possibile richiedere un nuovo abbinamento con i visori e, successivamente, creare un nuovo utente. Ispezionando gli elementi di questa pagina web, è possibile analizzare le richieste di rete effettuate all'API di HoloLens. Queste richieste contengono informazioni sul corpo e sulle intestazioni della richiesta, che possono essere facilmente replicate in un altro strumento, come presentato in Figura 1.3. La capacità di inviare queste richieste è stato il vettore d'attacco identificato.
Figura 1.3: Richiesta all'API di HoloLens
Ogni volta che viene effettuata una nuova richiesta di abbinamento, i processi dell'HoloLens vengono messi in pausa e un PIN viene sovrapposto alla vista dell'utente, che deve essere inserito nella pagina web per procedere con l'abbinamento del dispositivo, come rappresentato in Figura 1.4. L'HoloLens riprende il funzionamento normale solo quando questo PIN scompare. Per farlo scomparire, l'utente può completare il processo di abbinamento sulla pagina web o aprire un Menu delle Impostazioni in cui può tornare alla visualizzazione tipica dell'HoloLens.
Figura 1.4: PIN di abbinamento HoloLens
Per testare questo problema, è stato sviluppato uno script per effettuare ripetutamente richieste di abbinamento all'API, ignorando eventuali errori che potrebbero verificarsi fino a quando questo processo non viene fermato manualmente dall'attaccante (vedi Figura 1.5 e Appendice A). Questo script è stato sviluppato per Windows PowerShell, poiché è possibile pianificare l'esecuzione dello script ogni volta che il computer viene acceso. In questo modo, l'attaccante può installare lo script sulle macchine target, che di solito sono connesse alla stessa rete dell'HoloLens. L'attacco viene eseguito in background senza che gli utenti se ne accorgano, rendendo l'apparecchiatura inutilizzabile. PowerShell fornisce il comando New-ScheduledTask, che consente di creare un trigger per eseguire lo script malevolo ogni volta che il computer viene acceso.
Figura 1.5: Script PowerShell
Ogni volta che viene effettuata una richiesta di abbinamento, il PIN di abbinamento viene sovrapposto alla vista dell'utente. Come risultato dei test condotti con lo script precedente, è stato osservato che l'invio continuo di richieste fa sì che l'HoloLens sovrapponga costantemente nuovi PIN alla vista dell'utente, impedendogli di eseguire qualsiasi altra operazione. L'utente ha la possibilità di aprire un menu su questo PIN, tuttavia, poiché i visori ricevono costantemente nuove richieste, l'utente non ha il tempo di eseguire alcuna operazione in questo menu. Col passare del tempo, gli occhiali iniziano a dare problemi e l'HoloLens fa fatica a comprendere i gesti o i comandi pronunciati dall'utente. In questo modo, l'utente non può più utilizzare il dispositivo finché l'attacco non viene fermato.
L'attacco è stato testato in diversi scenari e si è dimostrato efficace nella sua interezza. Quando l'utente tenta di riavviare l'HoloLens, come previsto, l'API smette di rispondere. Tuttavia, come definito nello script, gli errori restituiti dal server dovrebbero essere ignorati, consentendo allo script di continuare a essere eseguito in background. Una volta rilevato che l'HoloLens ha ristabilito una connessione alla rete, l'attacco persiste, impedendo all'utente di eseguire qualsiasi altra operazione. Il test è stato condotto anche quando un dispositivo attendibile era già abbinato ai visori. Il risultato è stato lo stesso: è possibile effettuare l'attacco purché l'IP del mittente sia diverso da quello già abbinato.
Durante i test condotti, è stato osservato che i visori subivano un surriscaldamento a causa del sovraccarico della CPU. Nella Figura 1.6 viene mostrata l'elaborazione della CPU e della memoria dei visori durante l'attacco. Come si può vedere in alcuni momenti, la CPU viene elevata a livelli molto alti, causando il surriscaldamento dell'apparecchiatura e ritardando la sua risposta ad altri servizi.
Figura 1.6: Elaborazione di CPU e memoria
In sostanza, questo attacco DoS comporta il sovraccarico dell'API di HoloLens con richieste di abbinamento. In questo modo, nuovi PIN vengono costantemente sovrapposti alla vista dell'utente nel giro di secondi. Questo comportamento impedisce all'utente legittimo di svolgere qualsiasi altra attività sull'HoloLens fino a quando l'attacco non viene fermato. I metodi di mitigazione appropriati per questo tipo di attacco sarebbero a livello di API, applicando una restrizione sulle richieste di abbinamento provenienti da un IP specifico. Tuttavia, se l'attaccante intende falsificare l'IP nelle sue richieste, questa metodologia potrebbe essere facilmente superata. Pertanto, si propone anche di limitare il numero totale di richieste effettuate in un breve periodo di tempo.