Abbiamo dimostrato che con qualche semplice intervento tecnico è possibile modificare l’app ufficiale VerificaC19, per la verifica del green pass, in modo fraudolento, con gravi danni per la sicurezza pubblica e la sicurezza – fisica e digitale – degli interessati.
Indice degli argomenti
Cosa si può fare con la versione modificata di VerificaC19
La versione modificata – utilizzando una semplice singola stringa di codice – ma per il resto identifica all’originale, permette di fatto di validare qualsiasi green pass: che si tratti di versioni valide, scadute o persino contraffatte.
Questa semplicità aumenta la possibilità che malintenzionati possano vanificare l’impegno messo in essere per tutelare la salute pubblica tenuto conto che l’app modificata potrebbe essere pubblicata su store non ufficiali o veicolata attraverso attività di social engineering.
La versione modificata può inoltre rubare i dati di pass veri.
I rischi
L’app modificata VerificaC19 potrebbe essere quindi usata per:
- Violare le disposizioni che regolano gli accessi alle aree indicate nelle disposizioni del DPCM del 17 giugno. I “verificatori” potrebbero usare deliberatamente una app modificata a beneficio dei gestori (di palestre, ristoranti…), che quindi farebbero entrare chiunque.
- Truffare gli utenti attraverso la vendita di green pass fasulli;
- Raccogliere le informazioni e dati dei possessori di Green Pass;
Di seguito la foto che prova la modifica fatta da noi. Per un fantomatico utente Topo Lino (“Topolino”).
L’app VerificaC19
L’app Verifica C19 serve verificare che questo “lasciapassare” digitale – green pass – per bar, ristoranti, stadi sia valido. Si tratta di un software gratuito e istituzionale per evitare falsificazioni e imbrogli con i Green Pass.
Come si legge in una nota del Ministero della salute: “l’App VerificaC19 può essere utilizzata solo dai soggetti “verificatori”, ovvero soggetti deputati al controllo delle Certificazioni verdi COVID-19, che erogano servizi per fruire dei quali è prescritto il possesso di tale certificazione e gli organizzatori di eventi ed attività per partecipare ai quali è prescritto il possesso della medesima certificazione, nonché i pubblici ufficiali nell’esercizio delle relative funzioni”.
Verifica C19 non è sicura: ecco cosa abbiamo scoperto
L’offensive team di Swascan ha deciso di investigare sulla sicurezza dell’app.
I presupposti tecnici e giuridici
L’app VerificaC19 per la verifica del Green Pass europeo prevede
- Un codice QR-CODE contenente dati personali e dati relativi alla vaccinazione
- L’applicazione “Verifica C19” per la verifica della firma digitale contenuta nei QR-CODE da parte dei verificatori
La verifica della firma digitale prevede l’uso della chiave pubblica corrispondente alla chiave privata che ha effettuato la firma.
L’app “VerificaC19” scarica le chiavi pubbliche relative a tutti gli enti che generano Green Pass validi e le utilizza per la loro verifica.
Una volta verificata la firma digitale attraverso la scansione del QR-CODE , viene visualizzata la schermata che conferma, a video, la validità del QR-CODE .
Dal punto di vista formale, Verifica C19 deve essere impiegata secondo questi passaggi:
- Il verificatore richiede la Certificazione all’Interessato, il quale mostra il relativo QR-Code (in formato digitale oppure cartaceo).
- L’App VerificaC19 legge il QR-Code , ne estrae le informazioni e procede con il controllo di autenticità tramite la verifica della firma digitale.
- L’App VerificaC19 applica le regole previste per la verifica della scadenza della Certificazione in relazione alla tipologia di certificazione (Vaccinazione, Tampone Molecolare e/o Antigenico e guarigione) e alla sua data di emissione
- L’App VerificaC19 mostra graficamente al verificatore l’effettiva autenticità e validità della Certificazione nonché il nome, il cognome e la data di nascita dell’intestatario e all’identificativo univoco della stessa.
- L’intestatario su richiesta del verificatore esibisce un proprio documento di identità in corso di validità ai fini della verifica di corrispondenza dei dati anagrafici presenti nel documento con quelli visualizzati dall’App.
Dati e informazioni
I dettagli dei dati presenti all’interno del QR-Code sono i seguenti:
• Data di nascita
• Cognome
• Codice Fiscale
• Nome
• ID Certificato
• Paese di vaccinazione
• Numero dosi effettuate
• Data di vaccinazione
• Emittente certificato
• Azienda produttrice vaccino
• Product ID vaccino
• Numero totali di dosi (da effettuare)
• Malattie a cui si è soggetti
• Vaccino o Profilassi
• JSON Schema Version
• Emittente QR-Code
• Scadenza QR-Code
• Data Rilascio QR-Code
Scenari di rischio
Un verificatore potrebbe installare una versione dell’app VerificaC19 modificata, che per ogni Green Pass, anche scaduti, visualizzi sempre la schermata di validità dello stesso, consentendo quindi in ogni caso l’ingresso nel locale.
Truffatori potrebbero generarne e distribuirne in modo arbitrario Green Pass non validi, leggibili dall’app ufficiale VerificaC19 e ma sempre autorizzati da un app VerificaC19 modificata.
Allo stesso modo, versioni “modificate” dell’applicazione potrebbero essere oggetto di commercio e vendita da parte di criminali anche per attività di raccolta informazioni e dati dei possessori di Green Pass. I criminali potrebbero mettere in giro le app modificate nella speranza che un gestore ci caschi e poi loro catturano i dati.
Allo stesso modo essere utilizzate per frodi e attività di social engineering.
Il rischio concreto è che vi sia una diffusione di questi cloni; vanificando gli sforzi messi in atto per proteggerci.
Modifica dell’app VerificaC19
Per verificare l’effettiva plausibilità di questo scenario, l’offensive team di Swascan ha scaricato l’apk al fine di modificare l’app VerificaC19, per la versione Android.
Fatto questo ha eseguito questi step:
- Download del file apk dell’app dal Play Store (it.ministerodellasalute.verificaC19)
- Decompilazione del file apk in codice Dalvik
- Modifica dei file .smali
- Rigenerazione del file apk
- Installazione del file apk accettando sorgenti sconosciute
- Generazione di un QR-CODE arbitrario e test
Mostriamo alcuni di questi passaggi.
Modifica del codice Dalvik
Allo scopo abbiamo utilizzato apktool:
- https://github.com/iBotPeaches/Apktool
Il comando precedente genera la directory contenente i file .smali.
A mero titolo di esempio, si mostra come sia possibile effettuare una modifica per rendere valido qualsiasi QR-CODE . L’applicazione può naturalmente essere modificata anche molto più di quanto mostrato.
Si modifica il file:
- dgca/verifier/app/decoder/cose/VerificationCryptoService.smali
Per garantire che il QR-CODE risulti sempre valido, si è aggiunta l’istruzione Dalvik “const/4 v1, 0x1” prima della chiamata al metodo setCoseVerified() come mostrato di seguito:
Generazione del QR-CODE di un Green Pass
Il QR-CODE relativo al Green Pass contiene i dati personali e dati relativi alla vaccinazione del paziente. Ecco di seguito un dump delle informazioni contenute e leggibili da qualsiasi lettore QR-CODE , dopo una semplice operazione di decodifica.
Si poteva evitare il rischio con una cifratura del QR-Code
Nel QR-CODE del Green Pass è presente un campo contenente una firma digitale che viene verificata dall’applicazione attraverso la chiave pubblica dell’ente che lo ha emesso. Tuttavia, la mancanza di cifratura consente la generazione di QR-CODE contenenti dati arbitrari.
Si è quindi creato uno script per la generazione di QR-CODE di Green Pass arbitrari partendo dallo script seguente, utile alla sua decodifica:
- https://github.com/hannob/vacdec
Per la generazione dell’immagine si è utilizzato un tool disponibile online per la generazione di QR-CODE .
- https://www.the-QR-Code -generator.com/
Il QR-CODE risultante è il seguente:
Il risultato della frode
Scansionando il QR-CODE generato, utilizzando l’applicazione modificata si ottiene la schermata seguente.
Screenshot VerificaC19 Modificata
Proseguendo nell’analisi, l’Offensive team di Swascan ha inoltre riscontrato che:
- I dati forniti nel QR-CODE sono probabilmente sovrabbondanti rispetto a quelli necessari alla verifica della validità del pass. Un Criminal Hacker potrebbe modificare l’app e raccogliere informazioni dettagliate su tamponi, dati sui vaccini, etc…delle persone che vengono scansionate attraverso quel device;
- Le informazioni nel QR-CODE di cui sopra sono solo codificate e non cifrate. Quindi, possono essere lette da qualsiasi lettore QR-CODE grazie ad uno script per decodificarle rendendole praticamente in chiaro.
Come verificare che il pass è fasullo
Si precisa che il processo di verifica della firma digitale, se effettuato con l’applicazione originale, funziona correttamente.
Screenshot VerificaC19 Ufficiale
Ma il problema resta perché qui il rischio è che un verificatore utilizzi deliberatamente un’app modificata per accettare qualunque pass (anche fasullo); oppure per rubare dati di pass veri.