1. QR Code Security
I QR (Quick Response) Code sono matrici bidimensionali che vengono usate per
codificare l’informazione. Vennero inizialmente inventati per tracciare le varie parti durante
un generico processo di produzione e oggi sono stati adattati a una grande varietà di
casistiche. Uno degli utilizzi più comuni riguarda quello di codifica di un URL, al fine di
rendere l’informazione disponibile immediatamente.
Tuttavia, i QR Code sono anche spesso utilizzati come vettori di attacchi di Social
Engineering: l’attaccante codifica il link malevolo (che conduce un sito di phishing o che
porta all’esecuzione di codice malevolo) in un QR Code e lo stampa su un adesivo che può
essere sovrapposto a uno già esistente. Inoltre, è anche possibile modificare dei moduli
precisi, rendendoli da bianchi a neri e viceversa, in modo da sovrascrivere il contenuto
originale.
1. LO STANDARD QR
I QR Code sono codici a barre che codificano l’informazione sia in senso verticale che
in senso orizzontale. Per accedere ai dati codificati da un QR Code, una fotocamera deve
catturarne l’immagine e decodificarla tramite un software.
Ci sono 40 versioni diverse di QR Code con differenti capacità, di cui l’ultima produce il più
grande QR Code possibile, con 4296 caratteri possibilmente codificabili.
Ciononostante, la versione 2 è quella più utilizzata. I codici, inoltre, sono leggibili da diverse
angolazioni e possono essere decodificati anche se parte di esso è coperta o
danneggiata: questo è possibile grazie alla robusta error correction basata sui codici
di Reed-Solomon.
Ci sono quattro livelli di error correction:
• Low: 7% danneggiato
• Medium: 15% danneggiato
• Quartile: 25% danneggiato
• High: 30% danneggiato
Aumentando il livello di error correction, aumenta proporzionalmente l’area del codice
riservata alla correzione dell’errore e, di conseguenza, diminuisce l’area riservata ai dati
veri e propri: è per questo motivo che, solitamente, si opta per il livello più basso.
2. Un processo addizionale nella fase di decodifica è quella del masking: questa feature assicura
una distribuzione equa delle porzioni bianche e delle porzioni nere e il masking
adeguato viene scelto dal software stesso, automaticamente.
Esempio di QR Code versione 2
2. UTILIZZI DEL QR CODE
I QR Code hanno gli utilizzi più disparati.
PUBBLICITA’: l’utilizzo più comune è quello pubblicitario, in cui si codificano URL
relativi a informazioni di contatto, geolocalizzazione, oppure per rendere delle informazioni
istantaneamente disponibili all’utente.
PAGAMENTI MOBILE: i QR Code possono essere di supporto anche per pagamenti
online e forniscono opportunità di acquisto semplicemente scannerizzando un codice; ci si
riferisce a questa pratica come “One Click Payment”; dopo aver scannerizzato il codice,
l’utente viene direzionato verso una pagina intermedia proprietaria dell’agent di pagamento.
CONTROLLO DEGLI ACCESSI: essi possono essere usati per il controllo degli accessi,
in combinazione con altre metodologie. Tra i sistemi proposti, per esempio, c’è n’è uno che
combina i QR Code e le One Time Password: le informazioni dell’utente sono
memorizzate sul server principale, un’applicazione genera il QR Code e un PC appropriata
scannerizzata tale codice; il codice generato dall’utente sarà relativo alla sua
password generata per autenticarsi.
REALTA’ AUMENTATA E NAVIGAZIONE: i QR Code sono usati negli ambienti
governativi per distribuire efficacemente le informazioni al pubblico, oppure per fornire
materiale aggiuntivo ed educativo durante visite guidate, eventi, meeting.
3. 3. QR CODE COME VETTORI DI ATTACCO
Ci sono due attacchi principali che riguardano i QR Code:
• l’attaccante sostituisce l’intero QR Code: tanto semplice quanto efficace, nel
nuovo codice l’attaccante può nascondere link malevoli codificati
• l’attaccante modifica moduli individuali del QR Code: in questo modo, si
cambia il contenuto del codice mirando a una porzione specifica
Nel 2012, venne dimostrato che i codici Man-Machine-Interface (MMI), possono essere
usati contro i dispositivi Samsung, facendo comporre ai telefoni il codice MMI *2767*3855#,
al fine di cancellare ogni dato presente al proprio interno; l’attaccante codificava questo
codice in un QR con prefisso tel, al fine di innescare l’esecuzione del suddetto.
Se uno scanner, inoltre, utilizza un database per memorizzare tutte le entità
scannerizzate, è possibile eseguire un SQL Injection scannerizzando valori come 1’ OR
1=1 – al fine di bypassare i meccanismi di autenticazione.
Gli attacchi sono anche legati al typosquatting: si tratta di una registrazione intenzionale
di siti web che prendono il nome di siti famosi e ne cambiano alcune lettere; nel
2010 è stato stimato che ci fossero almeno 938.000 siti del genere che si rifacevano al nome
del 3264 .com più popolari, la maggior parte dei quali supportava pubblicità pay-
per click.
4. INTERAZIONE CON GLI UTENTI
Sono diversi gli studi proposti per comprendere il comportamento di un generico utente
di fronte a un QR Code.
Uno di questi, per esempio, ha investigato su come gli utenti interagiscano di fronte a QR
Code inseriti sotto forma di stickers e appiccicati ai muri dei locali della città (nello studio,
Melbourne). In questo modo, quanto un utente lo scansionava, poteva leggere i commenti
della clientela venuta prima di lui: i risultati dello studio, dunque, suggeriscono che è
principalmente la curiosità a far nascere negli utenti il desiderio di scansionare
dei QR Code senza alcun contesto. Questo motivo, legato alla fretta di scoprire cosa si
4. cela dietro al codice, tende a far ignorare gli aspetti di sicurezza legati alla scansione
di codici provenienti da sorgenti non verificate.
In un altro studio, si è analizzato come è possibile effettuare degli attacchi di phishing,
attraverso due esperimenti. Nel primo, quello di “sorveglianza”, si è osservato che una
buona fetta di utenti scannerizzava il codice ma non visitava l’URL all’interno contenuto.
Nel secondo, quello di “QRishing”, si sono inseriti QR Code su tre tipi di poster e
volantini, al fine di determinare la “suscettibilità” a un attacco di phishing. Il
codice conteneva un link a un sondaggio, con l’intento di modellare il comportamento delle
persone che lo hanno scansionato.
I risultati dello studio hanno sottolineato il fatto che sono necessari strumenti più
adeguati a supportare la rilevazione di potenziali minacce. Inoltre, i lettori di codici
non forniscono strumenti per rilevare automaticamente delle minacce e quindi minimizzare
l’impatto sulla privacy e la sicurezza dell’utente: è per questo motivo che è necessaria la
pratica di scansione al fine di decodificare il QR Code e anche dopo di essa, resta
comunque difficile giudicare l’affidabilità di un URL.
5. FRAMEWORK DI SICUREZZA
Al fine di supportare lo sviluppo di un framework sicuro per la progettazione di codici QR,
è necessario fornire delle linee guida, che hanno lo scopo di rafforzare il codice stesso, il
lettore e la rilevazione di potenziali minacce. Di seguito, dunque, viene proposta una
serie di requisiti che possono tornare utili allo scopo.
1) Visual QR Codes: un visual QR Code può significativamente supportare l’utente
nel rilevare un QR modificato o sostituito; più complesso è il codice, più difficile
è per l’attaccante andare a modificarlo
2) Firma Digitale: inserimento di una firma digitale nella creazione del QR, in modo
da verificare il creatore del codice e, dunque, capire se esso sia stato
manomesso; con la presenza della suddetta firma, diventerebbe molto più
complicato, per l’attaccante, modificare il QR, in quanto dovrà modificare il checksum
e il processo di verifica. Tuttavia, ciò significherebbe inserire un’altra porzione di dati
che andrà a ridurre lo spazio dei dati veri e propri da codificare
3) Masking: il pattern delle sezioni bianche e nere è determinato dal masking, che
stabilisce se cambiare o meno colore a una determinata sezione. Data la robustezza
fornita dai codici di Reed-Solomon, la presenza di zone corrotte non inficia la capacità
di decodifica, tuttavia, maggiore è la deviazione da una distribuzione pari tra
5. zone bianche e nere, maggiore è la probabilità che il codice sia stato
modificato
4) Malicious URL Detection: è possibile utilizzare delle metriche che permettono di
stabilire se l’URL codificato sia malevolo, associando questa pratica a una blacklist
5) Content Display: dato che il QR Code non sono human-readable, mostrare il
contenuto di un codice è fondamentale per un utente al fine di
comprenderne il contenuto
6) Content Preprocessing: nel caso di URL abbreviato, mostrare il contenuto non è
sufficiente a fornire le informazioni necessarie ed è per questo motivo che diventa
necessaria un’unità che si occupi del preprocessing dell’URL, in modo che esso
avvenga in background e solo successivamente si mostra l’URL vero e
proprio all’utente
7) Anti-Phishing Tools: è importante che il processo di verifica sia trasparente
all’utente ma la principale sfida è informare correttamente l’utente circa il
tentativo di phishing
8) Content Verification: in aggiunta al preprocessing, sarebbe utile utilizzare altri
strumenti di verifica, come appunto delle blacklist, in quanto è stato dimostrato
che semplici warning non sono efficaci nel fermare l’utente dal proseguire verso
l’URL malevolo
QR Code Security: A Survey of Attacks and Challenges for Usable Security
Katharina Krombholz, Peter FrŁuhwirt, Peter Kieseberg, Ioannis Kapsalis, Markus Huber, Edgar Weippl