Al giorno d’oggi un buon numero di web-services investe notevoli risorse per migliorare l’esperienza dell’utente. In particolare, le precedenti interazioni dell’utente vengono memorizzate e utilizzate per questo scopo; uno dei casi d’uso più diffusi è quello dell’autocompletamento nei campi di ricerca: appena l’utente immette le prime lettere, gli vengono immediatamente proposti suggerimenti per completare la ricerca, permettendo all’utente di non dover scrivere per intero la stringa di testo che stava immettendo.
Vedremo che questo meccanismo può essere usato in siti web disonesti per attaccare utenti che abbiano attive una o più sessioni in siti famosi e utilizzati giornalmente come Google, Yahoo! e Bing.
L’attacco permette di poter controllare il primo suggerimento di autocompletamento con praticamente ogni prefisso possibile che l’utente possa immettere.
Come sfruttare questo attacco
Ci sono molti modi per sfruttare l’AIA (Autocomplete Injection Attack) e ne verranno presentati quattro: Phishing, Framing, Illegitimate content-promotion e Persistent cross-site scripting.
- Phishing. In questo tipo di attaco, la vittima viene portata a visitare un sito internet illeggittimo, il quale imita il comportamento (e il design) di un sito conosciuto e considerato come sicuro. Uno svantaggio del phishing è che, ad esempio, per visitare il sito non sicuro, l’utente dovrà cliccare su un url contenuto in una email che solitamente non fa parte delle sue newsletter e che risulta quindi al di fuori della normalità: se l’utente è consapevole dell’esistenza di questo tipo di attacco, sarà sicuramente scettico e non cliccherà sul link. L’ autocomplete injection permette di ingannare l’utente facendogli visitare una pagina web pericolosa cliccando su un risultato della ricerca sul search engine preferito.
- Illegitimate content-promotion. Nell’ambito della ricerca web il content-promotion consiste nel far ritornare al primo posto dei risultati della ricerca il sito web illegittimo, così da far aumentare la probabilità che l’utente possa visitarlo (senza cambiare la routine a cui è abituato e perciò insospettirlo). Per quanto riguarda l’autocompletamento si tratta semplicemente di promuovere il proprio sito illegittimo tra i vari suggerimenti (qualcosa di molto simile alla tecnica del search poisoning).
- Cross-site framing. Per utenti diversi, il sistema di ricerca suggerirà contenuti diversi, proprio per il discorso della personalizzazione dell’esperienza dell’utente. Un attaccante può quindi alterare i suggerimenti, portando l’ambiente intorno a lui a pensare che abbia interessi completamente diversi poi da quelli reali. Ad esempio, si potrebbe modificare i suggerimenti, facendo in modo che un utente sposato possa sembrare che sia interessato a siti di appuntamenti.
- Scripting Cross-site persistente. I moderni motori di ricerca sono soggetti ad attacchi come quello che prevede di includere uno script nella stringa di autocompletamento della ricerca e più avanti vedremo come questo sia possibile su Yahoo!.
Sull’eticità
Utilizzare questo tipo di attacco è chiaramente una violazione della legge. Gli esperimenti sono stati effettuati evitando qualsiasi danno all’utente o al servizio web. Inoltre, i siti coinvolti sono stati allertati e informati sul problema.
Come funziona l’attacco?
Cosa fa l’attaccante
L’attacco chiamato “Cross-site Attack” (su cui si basa l’AIA) consiste nel semplice controllo di una pagina web disonesta da parte dell’attaccante. Quest’ultimo non deve fare altro che portare l’ignaro utente a visitare la pagina web, la quale spesso contiene uno script che manda una richiesta ad un determinato servizio web: questo tipo di richiesta si chiama “Cross-site Request”, ed è la base dell’attacco di cui tratta l’articolo. È bene precisare, tuttavia, che le richieste cross-site sono largamente utilizzate nel web in modo legittimo e sono essenziali per l’interazione tra siti web e l’utilizzo di internet in generale.
Phishing e autocompletamento
I motori di ricerca mantengono un log delle ricerche effettuate dall’utente: si tratta di una vera e propria cronologia che permette in un secondo tempo di suggerire all’utente i contenuti ricercati in precedenza come prime opzioni dell’autocompletamento (quelle successive sono di solito basate sui trend locali o globali). L’AIA è basato proprio sulla possibilità di inserire all’interno del log (inviando una richiesta cross-site) contenuti a piacimento dell’attaccante e proporli all’utente come facessero parte della sua cronologia di ricerca.
La difficoltà di eseguire questo tipo di attacco è che i motori di ricerca sono sempre più intelligenti. Per fare in modo che ad esempio Google suggerisca il sito dell’attaccante, invece di quello legittimo, bisogna che si verifichino determinate condizioni:
- Il risultato maligno sia considerato “di rilievo” da parte dell’utente, così da essere scelto senza sospetti.
- Il risultato legittimo non compaia tra i primi risultati.
- Il risultato illegittimo sia il primo dei risultati.
Inoltre, molte volte una semplice modifica, e impercettibile ad una prima occhiata, al nome del sito non è sufficiente, in quanto il motore di ricerca potrebbe riconoscerlo come errore di battitura e suggerire in ogni caso il sito reale.
“Bank of America” o “Bank of America” ?
Vi chiederete: perché il titolo di questo paragrafo? Non vi siete accorti subito della differenza? Bene, è proprio questo su cui fa affidamento l’attacco basato sul phishing.
Gli omografi sono uno o più caratteri che ad un rapido esame non vengono facilmente distinti. C’è infatti una profonda (almeno a livello di interpretazione da parte del computer) differenza tra il carattere “o” (Unicode 006F) e il carattere “o” (Unicode 043E), e per l’occhio umano, questa differenza è impercettibile. L’utilizzo degli omografi è tanto complesso, quanto efficace. Complesso perché alcuni caratteri non sono comuni durante una ricerca: per questa ragione è preferibile sostituire quanti più caratteri possibili, così che il motore di ricerca non li consideri come errori di scrittura, e preferibilmente inserirli verso la fine della stringa da ricercare, così da avere un prefisso legittimo quanto più lungo possibile.
Come proteggersi dal phishing
Come detto in precedenza, i motori di ricerca sono abbastanza intelligenti e si possono accorgere di errori di scrittura. Il famoso “Forse cercavi…”, è lo strumento che può evitare qualsiasi problema. Infatti, cliccando su di esso verrà effettuata una nuova ricerca, tra i cui risultati non vi sarà più traccia del sito web illegittimo.
Framing Attack
Come detto in precedenza, l’obiettivo di questo attaccato è far credere alle persone intorno all’utente, che questo abbia determinati interessi, che sono chiaramente in conflitto col suo tipo di vita (siti di appuntamenti, se l’utente è sposato).
Uno degli autori del paper ha testato personalmente questa tecnica ed è bastato un giorno perché sua moglie gli abbia chiesto spiegazioni.
La cosa interessante di questa tecnica, è che vengono sollevate non solo problematiche di tipo etico, ma anche di tipo psico-sociologico. Il fenomeno cosidetto Bystander Effect o “Effetto spettatore” inibisce una persona a prestare aiuto nel caso in cui siano presenti altre persone (relazione oltretutto inversamente proporzionale: più spettatori, meno possibilità che la persona intervenga). Questo fenomeno è stato registrato anche nel caso in cui l’utente si renda conto che i suoi risultati sono falsi e che non rispecchiano i suoi principi, ma non fa nulla per denunciare o riparare la cosa, in quanto non ne sente il bisogno o non si sente in grado di farlo.
Cross-site Scripting (XSS)
La Same Origin Policy, [SOP][https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy], impedisce ai siti web di eseguire script che possano modificare pagine web con dominio differente. Il XSS evita le restrizioni del SOP, inserendo lo script direttamente all’interno della pagina web da attaccare, potendolo così eseguire senza problemi. L’attaccante può iniettare lo script (che sarà eseguito nel momento in cui un utente comincerà ad effettuare una ricerca) direttamente nel server utilizzando il campo di ricerca e sfruttando ad esempio l’assenza di input validation.
In questo caso, solamente Yahoo! è risultato vulnerabile: inserendo lo script nell’attributo onerror del tag HTML img con un valore di src intenzionalmente errato, si è visto come nel momento in cui l’utente evidenzi col mouse il risultato, lo script viene automaticamente eseguito.
Come difendersi dall’Autocomplete Injection Attack
Queste vulnerabilità devono essere risolte dai servizi web coinvolti, in particolare mettendo in atto contromisure contro gli attacchi Cross-site. Per vari motivi, tuttavia, molti sono riluttanti a risolvere queste fragilità del sistema, ed è per questo che sono state anche sviluppate varie proposte lato client, come ad esempio far rifiutare ai browser richieste Cross-site che facciano potenziale uso degli omografi (i browser, dal punto di vista di velocità e performance, non avrebbero comunque problemi anche a individuare tali attacchi in tempo reale).
Tuttavia, solamente google, tra i servizi citati, dà la possibilità all’utente di portare all’attenzione degli amministratori di sistema eventuali predizioni inappropriate, cliccando sul bottone “Report inappropriate predictions”, che compare in fondo all’elenco dei suggerimenti. Ciò permette all’utente di contribuire alla scoperta di eventuali contenuti malevoli e avvertire Google stessa, ottenendo suggerimenti su come agire nel caso vi siano anche problemi legali.
Credits to: Conference Paper, Gelernter Nethanel & Herzberg Amir. (2016). Autocomplete Injection Attack.