Giornata Tecnica da Piave Servizi, 11 aprile 2024 | ALBIERO Andrea
Extended Summary of "Sok: The Evolution of Trusted UI on Mobile"
1. UNIVERSITÀ DEGLI STUDI DI TRIESTE
Dipartimento di Ingegneria e Architettura
Tesi di Laurea Triennale
Ingegneria Elettronica e Informatica
Extended Summary of
"SOK: The Evolution of Trusted
UI on Mobile"
Relatore: Chiar.mo Prof. Eric Medvet
Laureando: Simone Cossaro
Anno Accademico 2021-2022
1
3. 1 Introduzione
L’interfaccia utente è il mezzo con cui l’uomo interagisce con una macchina, sia
essa un computer o uno smartphone.
Attualmente, il concetto di interfaccia utente affidabile non è universalmente
implementato sui dispositivi mobili di consumo.
Sui computer sono presenti vari indicatori che consentono di riconoscere un’app
specifica, mentre le interfacce dei dispositivi mobili, sebbene offrano numerose
funzionalità, nascondono molti dettagli. Gli utenti infatti non sono in grado
di identificare in modo affidabile quale contenuto dello schermo sia autentico e
quale potenzialmente manipolato.
I dispositivi mobili sono centrali nella vita quotidiana delle persone e
all’interno vengono trasferite sempre maggiori informazioni. La loro sicurezza
risulta quindi estremamente importante per evitare che incidenti fortuiti possano
causare gravi danni.
In questo documento vengono elencati i problemi dell’interfaccia utente che
minacciano la sicurezza dei dispositivi con sistema operativo Android e le contro-
misure per arginarli. Vengono inoltre presentate alcune questioni da considerare
per futuri sforzi di ricerca.
2 Background
Il sistema Android si basa sulle funzionalità del kernel Linux.
Un elemento fondamentale è l’Android Application Sandbox, meccanismo di
sicurezza che vieta alle app di accedere a dati o codice di altre app. In pratica,
ogni applicazione viene eseguita nel proprio spazio di memoria.
Il sistema operativo offre però un modello basato su permessi per concedere
l’accesso a risorse specifiche. La verifica di queste autorizzazioni effettuata dal
sistema garantisce che nessuna app esponga involontariamente i propri dati.
I TEE (Trusted Execution Environment) sono una funzionalità della CPU
che offre un ambiente isolato per l’elaborazione dei dati, allo scopo di eseguire
in sicurezza applicazioni specifiche, dette trustlet, anche in presenza di un
sistema operativo compromesso. Queste applicazioni trustlet sono responsabili
dell’esecuzione di operazioni critiche come la crittografia e l’autenticazione.
Nella maggior parte dei dispositivi Android è implementato ARM TrustZone,
un meccanismo che presenta due domini di sicurezza: ‘Normal World’ e
‘Secure World’. Nel primo è in esecuzione il normale sistema operativo, mentre il
secondo esegue un sistema operativo con TEE aggiuntivo. Il Normal World non
può accedere direttamente al Secure World, la comunicazione avviene effettuando
una chiamata SMC (Secure Monitor Call) ad un software detto Secure Monitor.
3
4. Figura 1: L’architettura software di un dispositivo Android con TrustZone
In un sistema esistono tre livelli di privilegio, in ordine crescente:
• utente
• OS
• TEE
Se in uno di essi un attaccante può scrivere del codice arbitrario, tale livello
risulta non attendibile insieme ai sottostanti.
Una difesa può essere utilizzata solo a un livello superiore rispetto a quello
considerato non attendibile.
3 Problemi di progettazione
I principali difetti di progettazione del sistema operativo Android riguardano la
gestione delle finestre e i servizi di accessibilità.
Nella gestione delle finestre si riscontrano i seguenti problemi:
1. Indicatori mancanti
Qualsiasi applicazione può impersonare un’altra app legittima, in quanto
può utilizzare interfacce utente a schermo intero per coprire il display e
il sistema operativo non offre alcuna identificazione dei contenuti dello
schermo.
Gli utenti possono accedere alla schermata “Informazioni app”, dalla quale
però ottengono solamente informazioni di base come nome e icona dell’app,
niente che aiuti a distinguere un’app legittima da una dannosa o di
indirizzamento errato.
2. Overlay
Gli overlay sono finestre che si sovrappongono ad altre finestre sullo schermo.
4
5. Figura 2: Alcuni esempi di come gli overlay possano sovrapporsi [1]
Possono essere utilizzate da qualsiasi app attiva e non vengono trattate
come finestre normali: non compaiono nel selettore di app e sono prive di
barra del titolo e layout obbligatorio.
Gli overlay possono essere sfruttati per attacchi di clickjacking e context
hiding.
Il clickjacking consiste nel reindirizzare un click verso un oggetto diverso
da quello atteso. Un utente crede di consultare una pagina normale ma in
realtà naviga su una "trasparente" in sovrapposizione. I rischi derivanti dai
click vanno dal semplice invio di spam, al download di file, fino all’ordinare
prodotti da siti di e-commerce. [2]
Il context hiding, invece, consiste nell’utilizzare un overlay per nascondere
il contenuto dello schermo attorno ai controlli dell’interfaccia utente come
i pulsanti, rimuovendo quindi qualsiasi indicazione sulla finestra a cui
appartiene il controllo. In una finestra di dialogo di conferma, nascondere
il testo e sostituirlo con uno diverso potrebbe indurre l’utente ad accettare
tutto ciò che vuole un malintenzionato.
3. Reindirizzamento
In generale, Android associa un’attività a un task specifico, in modo da
non rimuovere dalla memoria una finestra fino al completamento del task.
Nelle app di terze parti, le attività possono definire un attributo
taskAffinity, che indica al sistema operativo a quale task preferiscono
appartenere. Un secondo attributo, allowTaskReparenting, permette ad
un’attività di trasferirsi da un task ad un altro. Entrambi sono controllati
dallo sviluppatore, perciò possono essere combinati per consentire a un’app
dannosa di essere associata a un’app legittima. Ciò significa che l’app
dannosa può posizionarsi sopra l’app legittima o reindirizzare l’utente a
un’altra attività per eseguire vari attacchi, come il furto di credenziali, il
blocco del dispositivo o il monitoraggio delle azioni dell’utente.
Per quanto riguarda i servizi di accessibilità, il loro scopo è migliorare l’espe-
rienza degli utenti diversamente abili. Possono monitorare le azioni dell’utente,
eseguirle per lui e sono in grado di recuperare i contenuti di altre finestre.
Sono quindi progettati per avere accesso ad azioni privilegiate che interessano
l’intero sistema operativo, aggirando le limitazioni imposte dal sandboxing.
Le loro potenzialità possono essere sfruttate da attaccanti per abilitare altri
servizi, concedere autorizzazioni aggiuntive alle app e accedere a dati sensibili.
Utilizzando l’input simulato, possono installare app aggiuntive per acquisire
maggior controllo del dispositivo e per aumentare la persistenza possono moni-
torare il sistema per rilevare e prevenire tentativi di rimozione del malware.
5
6. Una volta che un servizio di accessibilità dannoso è attivo, l’utente può perdere
il controllo del dispositivo.
4 Contromisure
Le difese contro i problemi elencati sono per lo più implementate a livello di
sistema operativo e nello spazio del kernel, con poche eccezioni che fanno uso di
soluzioni TEE basate su hardware.
Nel corso degli anni, Google ha migliorato le proprie misure di sicurezza per
contrastare gli overlay:
• introducendo dei flag per rilevarli e ignorare input indesiderati
• impedendogli di coprire il menù e la barra di stato delle applicazioni
• suddividendoli in classi di priorità per stabilire quale finestra possa collocarsi
sopra le altre
• facendoli scomparire durante i dialoghi critici
• attivando notifiche al momento della loro creazione e attivazione
Figura 3: tipico messaggio di notifica
L’introduzione di Android Protected Confirmation ha offerto un metodo
per ottenere una decisione dell’utente verificabile attraverso l’uso di metodi
crittografici consolidati. Dal punto di vista dell’utente, si tratta di una schermata
visualizzata a schermo intero contenente un piccolo messaggio che non può essere
manipolato e la conferma viene eseguita premendo un pulsante.
Un meccanismo difensivo realizzato nei confronti del clickjacking è ClickShield.
Si basa sul deblending, ovvero un algoritmo che confronta ciò che un utente vede
e ciò che dovrebbe vedere.
Quando un utente preme un bottone sensibile si attiva ClickShield, il quale
verifica la presenza di overlay. Se ne rileva almeno uno al centro dello schermo,
attiva il deblending che si occupa di stabilire se l’overlay è in grado di ingannare
l’utente. In caso affermativo, viene mostrata una finestra di dialogo che consente
all’utente di rimuovere l’applicazione dannosa oppure appare solamente un avviso
che lascia libertà su come proseguire. [3]
Ricerche hanno esplorato soluzioni difensive che consistono nello spostamento
dell’intero stack dell’interfaccia utente nel TEE. Questo meccanismo richiede
molte modifiche al TEE e al sistema operativo Android sottostante.
Il Trusted Computing Base (TCB) corrisponde al numero di righe di codice
6
7. eseguite nell’ambiente attendibile e va minimizzato in modo da ridurre la pos-
sibilità di bug. Lo spostamento dello stack nel TEE comporta un aumento
significativo del TCB, oltre ad un peggioramento delle prestazioni. Quindi la
soluzione non risulta vantaggiosa.
Altre soluzioni introducono il concetto di indicatori “LED sicuri”, il cui
accesso è possibile solo dal mondo attendibile (Secure World).
Il LED attivo potrebbe ad esempio informare l’utente che lo schermo corrente
è sicuro. Questo però comprometterebbe una funzionalità di Android, ovvero
la possibilità delle app di utilizzare il LED per notifiche o come indicatore della
batteria.
5 Sfide Future
L’autore ritiene che alcuni campi come la ricerca di Root Of Trust e percorsi
attendibili nei dispositivi mobili siano meritevoli di un’approfondimento più
accurato.
Gli attacchi attribuiti agli indicatori mancanti potrebbero essere mitigati con
un semplice indicatore aggiuntivo che mostri l’origine dell’app, in modo simile
ai certificati dei browser.
Deve essere ulteriormente esplorato il passaggio ad hardware di sicurezza
dedicato e mancano architetture open source che potrebbero contribuire signi-
ficativamente all’affidabilità dei dispositivi.
Ma il punto cruciale è la considerazione degli utenti finali. Non sempre
possiedono conoscenze approfondite sui meccanismi dell’interfaccia utente e
alcune funzioni potrebbero confonderli. In fase di progettazione occorre pre-
diligere l’usabilità per consentire un utilizzo efficace dei dispositivi. È stata
dimostrata una correlazione tra usabilità e sicurezza: diminuire l’usabilità può
portare a una minore sicurezza.
6 Conclusione
I problemi principali presentati sono gli overlay e il controllo dell’interfaccia
utente, per i quali sono riportate delle efficienti contromisure che possono però
solamente limitare i danni e non estinguere completamente i problemi.
Occorre mantenere il giusto equilibrio tra sicurezza e funzionalità, cercando
di non eccedere nella seconda.
La ricerca nel campo della mobile security ha fatto enormi passi avanti, ma
rimangono ancora molte questioni da approfondire.
L’uso costantemente crescente dei dispositivi mobili non fa altro che aumentare
l’esposizione a questi rischi di sicurezza informatica e un piccolo errore può
portare a danni come fughe di dati, violazioni della privacy e perdite di denaro.
Data la delicatezza del tema, risultano indispensabili ulteriori ricerche e
perfezionamenti.
7
8. Riferimenti bibliografici
[1] Yuxuan Yan, Zhenhua Li, Qi Alfred Chen, Christo Wilson, Tianyin
Xu, Ennan Zhai, Yong Li, Yunhao Liu. Understanding and Detecting
Overlay-based Android Malware at Market Scales. 2019.
URL: https://www.ics.uci.edu/ alfchen/yuxuan_mobisys19.pdf
[2] Wikipedia. Clickjacking. 2022. URL: https://it.wikipedia.org/wiki/Clickjacking
(visitato in data 07/06/2022)
[3] Andrea Possemato, Andrea Lanzi, Simon Pak Ho Chung, Wenke Lee, Yanick
Fratantonio. ClickShield: Are You Hiding Something? Towards Eradicating
Clickjacking on Android. 2018.
URL: https://reyammer.io/publications/2018_ccs_clickshield.pdf
8