-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
It Wallet - [Graphene OS] - Criteri di sicurezza Documenti su IO #6327
Comments
Mi hai preceduto di poche ore, stavo per aprire la stessa issue. Pare che il Wallet di IO utilizzi Play Integrity API per validare la sicurezza del dispositivo: https://github.com/pagopa/io-react-native-wallet/blob/master/src/wallet-instance/README.md GrapheneOS non può passare l'attestazione anche se con bootloader bloccato e senza root in quanto non allowlisted da Google sebbene sia significativamente più sicuro dell'OS stock dei Pixel e praticamente di ogni altro telefono Android. Difatti l'app non valida realmente la sicurezza ma solo che il dispositivo passi l'attestazione hardware di Play Integrity, tuttavia questa la può passare un dispositivo Android con mesi addietro di patch di sicurezza (ad esempio privilege escalation and remote code execution regolarmente corrette nei bollettini di sicurezza). Non mi pare Play Integrity o IO facciano questa valutazione. IO dovrebbe lasciar passare GrapheneOS implementando attestazione hardware con cui è pienamente compatibile, non c'è motivo per rifiutarlo sulla base di un giudizio fuorviante di Play Integrity: https://grapheneos.org/articles/attestation-compatibility-guide |
Corretto, il motivo mi torna, è la stessa validazione hw usata per i tanto agognati pagamenti tramite nfc che su GOS non funzionano. L'attestazione dovrebbe avvenire in altro modo e non in subordine a metodi di un fornitore privato come google. |
Dovrebbe avvenire tramite attestazione standard di Android, possibilmente verificando anche il patch level in modo che non sia un security theater con il solo scopo reale di vietare sistemi operativi alternativi. Immagino alla luce del Digital Markets Act, l'UE non apprezzerebbe l'impiego di Play Integrity API. |
Sembrerebbe ancora più forte. Google Wallet funziona se l'esito di Play Integrity include Basic + Device integrity. Io sono nella situazione per cui ho Basic + Device (ma non Strong integrity), oltre al bootloader che risulta bloccato da Key Attestation Demo. Tuttavia, IT-Wallet non funziona, dando codice di errore KEY_IS_NOT_HARDWARE_BACKED. |
Google Pay occasionalmente oscilla tra
Sì, IT-Wallet senza dubbio richiede strong integrity, o per lo meno richiede chiave basata su hardware per la quale si basano comunque sul lasciapassare di Google per averne contezza, altrimenti funzionerebbe su GrapheneOS. |
@orazioedoardo IO dovrebbe lasciar passare qualsiasi android, non solo GrapheneOS. |
In base ai README di questo repository e altri di pagoPA è chiaro che si richieda un certo livello di sicurezza dai dispositivi su cui scaricare il digital ID. Non tutti gli OS di terze parti su Android sono allo stesso livello sotto questo punto di vista, ad esempio LineageOS anche senza root richiede bootloader sbloccato il che facilita accesso fisico alla partizione dati (basta cambiare recovery per fare bruteforce del PIN senza limiti). Inoltre non supporta Verified Boot, il che rende più facile a seguito di un attacco mantenere accesso persistente sul dispositivo dopo il riavvio. Si potrebbe aprire un'altra issue per discutere e giustificare i requisiti di sicurezza del digital ID in IO (IMHO LineageOS senza root potrebbe essere più che sufficiente considerato che per lo meno rispetto all'OS stock avresti le patch di Android più recenti sebbene non del firmware). È probabile che quanto implementato oggi in IO sia dovuto a una interpretazione di vari requisiti di sicurezza in vista del wallet europeo.
Dovrebbero effettuare una valutazione olistica del dispositivo sulla base dei meriti utilizzando API standard piuttosto che tramite un gatekeeper. |
Questo dipende dal bootloader e quindi dal modello del cellulare, in alcuni (come il mio) è possibile bloccare il bootloader in seguito all'installazione della ROM. Ma effettivamente sono casi rari. Dispositivi senza GMS o con microg sono invece più comuni. |
LineageOS does not preserve the security model. GrapheneOS not only preserves the security mode but substantially improves security. Unlike LineageOS, GrapheneOS supports verified boot and hardware attestation which enables verifying that it's genuine GrapheneOS. See https://grapheneos.org/articles/attestation-compatibility-guide. They should implement this rather than forbidding using GrapheneOS. It will not reduce their device security checks to implement this. |
Play integrity è inutile in quanto facilmente bypassabile con PIF + TS. |
Inoltre: Un altro problema è che si rende necessario contattare i server di Google. Perché devo chiedere il permesso a Google per avere i MIEI documenti italiani sul telefono? Cosa succede se i server di Google vanno giù? Cosa succede se decidono che il telefono di persona importante x non passa più l'integrity? |
IO sta creando un grave disservizio agli utenti che desiderano usare sistemi operativi più sicuri senza di fatto ostacolare aggressori che possono spoofare l'attestazione di Play Integrity tramite leaks di chiavi. È inverosimile che il team di sviluppo non abbia ancora letto questa issue e le altre due/tre dove si evidenzia questo approccio problematico alla sicurezza per cui a voler pensare bene la scelta non dipende da loro. La situazione non cambierà finché la discussione rimarrà confinata qui. È necessario un approccio concertato che generi più rumore su social network con coinvolgimento di media / siti di tecnologia come avvenne per la questione traccianti e allora forse prenderanno in considerazione. |
La FAQ sui documenti in IO a cui si viene indirizzati in caso di errore è fuorviante: https://io.italia.it/documenti-su-io/faq/#n1_12
Chiedo quanto possa valere l'attestazione di un dispositivo che nel migliore dei casi, ergo OEM benefattore, è indietro di 3 anni e 9 mesi nelle patch di sicurezza, il che si traduce in qualche centinaio di vulnerabilità con elevata severità oltre ovviamente a mancati miglioramenti strutturali alla sicurezza apportati nelle versioni più recenti di Android.
Un dispositivo sottoposto a jailbreak o root non implica sia compromesso. Inoltre sui Google Pixel lo sblocco del bootloader e il successivo blocco con un sistema operativo aftermarket è 100% supportata, non invalida neanche la garanzia, e permette di mantenere l'integrità e la sicurezza del sistema, come avviene con GrapheneOS. Il fatto che la stragrande maggioranza degli OEM azzoppi il telefono quando si cambi OS non rende la dicitura corretta.
Depistaggio, è IO che sceglie di utilizzare Play Integrity per vietare di fatto sistemi di terze parti, non Google. |
Quindi..., uno si prende un Pixel per installarci GrapheneOs e poi, per essere più realista del re e primo tra i primi, non appena il sistema da il via si sbatte e si arrovella nel tentativo di installare su quel telefono e su quel sistema operativo, uno di quelli che sarà tra i primi se non il primo strumento di controllo sociale? L'acqua bolle, ma la rana continua a credere che il caldo che sente sia per colpa del cambiamento climatico. Ambo, terno, quaterna, cinquina e tombola...., per il sistema! |
Stesso problema vostro, ho installato Lineage 21 sul mio Poco F2 Pro. Solo che anche con STRONG INTEGRITY mi dà che il mio dispositivo non e supportato. Probabilmente guarda se il bootloader e sbloccato |
@M4th12 Play Integrity API is supposed to be checked on the service, not in the app. Locally spoofing it for an app checking it won't bypass it for a proper implementation. Tricking the strong integrity check requires a leaked key which they can revoke once they detect it with their fingerprinting, although they probably won't for ones only used by a single person. |
True, but in the meantime I found a solution using a Module called Tricky Store, now I can use all the functions without an error. (I know is not the best for security, but I don't want to have a bad experience with the stock ROM) |
@M4th12 Are you using a leaked key? |
Caro team di IO, rispetto molto il vostro lavoro e vi sono grato per l'esempio virtuoso che date a tutta la PA per la gestione del progetto in maniera aperta. Mi sento però in questo momento di dover chiedere come mai, a due settimane dall'apertura dell'issue, non sia pervenuta ancora una risposta almeno ufficiosa. Andando avanti la discussione inevitabilmente si allargherà e sarà più difficile gestire il tutto. Già adesso il discorso si è esteso prendendo in considerazione la sicurezza di varie ROM e come bypassare il controllo da voi imposto, quando il problema è uno e molto semplice: l'API che usate è sbagliata in principio. Stiamo ricevendo anche il contributo del fondatore di quella che è probabilmente la ROM Android più sicura di sempre. Capisco che abbiate avuto le vostre gatte da pelare grazie ai tuttologi che su Twitter sono arrivati ad accusarvi di gestire male il progetto senza capirne niente, capisco anche che sia faticoso gestire un progetto open contribution, questo però non giustifica una totale negligenza nella comunicazione con il pubblico rispetto ad un problema che riguarda l'identità digitale del cittadino, un argomento che a poco a poco diventerà sempre più importante. |
Ho segnalato sul post dedicato a it wallet di IO su linkedin le due issues (questa e #6346 ). Un'altra soluzione è spingere google (aiutati da pagopa) ad ammettere GrapheneOS nella whitelist delle play untegrity api. |
L'issue su traffico in chiaro sembra avere una spiegazione semplice che ho appena aggiunto. Certo per GrapheneOS sarebbe ideale se Google lo aggiungesse in allowlist di Play Integrity in modo che funzioni con ogni app che ne fa uso, tuttavia la vedo dura e non affronterebbe il problema più grande, cioè l'uso stesso dell'API. |
@thestinger not leaked but given from a developer |
Gli sviluppatori non hanno accesso ai keybox. È una chiave leaked di certo se passi strong integrity. Detto ciò, io ora ho un problema ancora più grande perché il mio telefono è stato rilasciato con Android 7, aggiornato fino ad Android 10, ma non supporta neanche con sistema stock la STRONG INTEGRITY di Play Integrity. Di fatto non posso usare IT Wallet, se non appunto con trucchi vari, sul mio telefono stock con Android 10 (l'attestazione hardware non era un requisito con Android 7). Ovviamente usando custom rom con versioni più recenti di Android vale lo stesso, ma il fatto che io non possa usare una funzionalità come IT Wallet su un telefono stock mi pare alquanto assurdo. |
@roberto-sartori-gl Strong integrity depends on hardware key attestation which was required for devices launched with Android 8 and later so your device is too old. It's worth noting that only Android 12 or later has security support so devices with earlier versions lack security patches. It's ridiculous that a device with no patches for 8 years can pass Play Integrity device integrity but yet GrapheneOS is forbidden. GrapheneOS should pass both device and strong integrity, but unfortunately Google is taking a highly anti-competitive approach and apps like this are participating it. It's clearly illegal and we're not only considering legal action against Google but also app developers. |
My point is that the requirement for IT Wallet is 'Android 8', which is not true. The real requirement on Android is Play Integrity (with hardware attestation). Anyway, I don't think this is the thread to discuss GrapheneOS or not GrapheneOS. There are a lot of phones which don't have GraheneOS available so discussing GrapheneOS is not the point. Even Lineage may be considered more secure on old phones compared to the stock OEM OS. |
This thread was created about GrapheneOS, which not only preserves the standard security model (unlike LineageOS) but substantially improves security. A device without Android 12 or later with current security patches wouldn't pass their checks if they cared at all about security rather than doing performative security with a clearly illegal anti-competitive approach to pretend they care. They should either implement https://grapheneos.org/articles/attestation-compatibility-guide as a staritng point to permitting secure alternate operating systems or remove their checks. This thread was not created about LineageOS and LineageOS genuinely does not preserve the standard security model and features so convincing them to allow it is an entirely different topic from convincing them to allow a secure OS. Their lack of forbidding clearly insecure devices without security patches is simply strong evidence that they do not actually care about security but rather want to pretend they do, but they can prove that wrong by adding a check for a patch level from the past 4 months at a bare minimum. |
It still lacks most of the privacy/security patches, Nothing secure about that, and an app which wants to permit only secure devices would be checking for a current patch level and not allowing operating systems setting a fake patch level to mislead users like LineageOS does... LineageOS is a major part of the reason for why app developers are hostile towards alternate operating systems because they wrongly believe all of them have the same awful security as LineageOS, which is wrong. The person who filed this issue filed it about GrapheneOS and bringing up an insecure hobbyist OS is just weakening the attempt at getting them to follow https://grapheneos.org/articles/attestation-compatibility-guide. |
@thestinger the fact that the user who opened the issue is using GrapheneOS does not mean that we should discuss GrapheneOS only. We are in the io-app repository discussing IT Wallet. If you want to discuss GrapheneOS vs Lineage, you can discuss it on the Graphene OS repositories, I assume. Like I said, I have the same issue using the stock OS from the vendor of my phone. No Lineage or custom ROM. |
GrapheneOS supports hardware-based attestation which can be used to verify the device is running GrapheneOS as explained in https://grapheneos.org/articles/attestation-compatibility-guide. LineageOS doesn't support this so even if they wanted to allow it, there isn't a way for them to do it within their model of wanting to check the OS based on hardware attestation. This issue is about them implementing https://grapheneos.org/articles/attestation-compatibility-guide to verify the device is running either GrapheneOS or another alternate OS preserving the security model and supporting hardware attestation. We aren't aware of any others, but they could whitelist their keys very easily after they implement this. LineageOS doesn't provide current privacy/security patches, sets an inaccurate Android security patch level which misleads users, doesn't preserve the standard privacy/security model, doesn't leverage important hardware-based security features and introduces major issues. You're also talking about a phone running the stock OS which hasn't had security patches for years. Android 12 is the oldest Android OS version with ongoing security support and if this app cared about security instead of only performative security to pretend they're doing something for perception and legal reasons it would be the minimum OS version. You're bringing up LineageOS on an issue about permitting GrapheneOS so it's you who brought up this topic. LineageOS is indeed off topic for this issue, as is using a device with the stock OS that hasn't received security patches for years. It's not what the issue was filed about and all you're distracting from getting GrapheneOS permitted as it should be via our attestation compatibility guide. |
If they implement what's covered in our attestation compatibility guide by using the native Android hardware attestation API to verify the device is running either the stock OS or GrapheneOS, then they can easily add other operating systems. That is the starting point for adding other operating systems. |
Can you try if you're getting strong with both legacy and A13+ check? |
It won't work, as it will impede contacting Google servers to check Integrity |
On a related note the newest version of the app(2.81.0.8) finally checks if the phone is compliant BEFORE asking for credentials AND returns a better output when the check fails ( |
Credenziali dell'identità digitale? |
They're going to be getting a higher number of complaints from GrapheneOS users due to us adding Play Integrity API usage detection with a shortcut to leave feedback on the Play Store in the per-app menu for configuring the Play Integrity API linked from the notification. We could streamline this more and encourage giving feedback more directly. Perhaps this will have a positive impact on some of the apps doing it resulting in them permitting using GrapheneOS. Doubt it will help with this one since they're already well aware of it but haven't done anything. We have full support for hardware-based attestation and improve the security properties it provides compared to the stock OS. It's not clear what else we could possibly be doing from our side. We don't understand the apparent reluctance to implement https://grapheneos.org/articles/attestation-compatibility-guide. No answer has been provided about why GrapheneOS isn't being permitted via hardware attestation to verify it. |
I'm trying the new Play Integrity API usage identification feature on the "IO" app but I don't get any notifications and still the app blocks me from using it |
In that case, it seems that it might have other checks before using the Play Integrity API such as using hardware key attestation itself. |
Sì: prima ti faceva fare richiesta di login extra(per sicurezza) PRIMA di controllare che il telefono fosse papabile per l'uso.
So it's written in the FAQ: https://io.italia.it/documenti-su-io/faq/#n1_12 |
I got this message: It didn't call Play Integrity API, so they are using HW attestation probably |
They could easily add support for GrapheneOS via https://grapheneos.org/articles/attestation-compatibility-guide. All they have to do is permit the SelfSigned verified boot state when the key fingerprints are in the list of valid GrapheneOS key fingerprints which are provided on that page. We don't list the key fingerprints for end-of-life devices there but they're permitting stock OS devices with no security patches so there wouldn't actually be any reason not to permit end-of-life GrapheneOS devices. We're setting a far higher bar for security as a whole though. We don't understand the reluctance to permit a far more secure OS than any of the ones they permit right now, especially when they permit incredibly insecure ones with no security patches for a whole decade. What does GrapheneOS need to provide in order for them to permit it? It fully supports verifying the hardware, device and OS in a more secure way than the Play Integrity API. |
they're not letting your OS to support play integrity because that way more and more users will turn into Graphene OS because of privacy reasons and GOOGLE is hungry with OUR data because short term PROFITS hence blocking people from root and custom OS's, that's what they did with Win 11 now, how bloated that OS is filled with ads and trackers, they even went with blocking old pc's to upgrade to 11, so people would buy new pc's (profits). The more control they have, the more they can track you, the more money they'll make, the more their stock goes up, cycle never end, and you conusmer CANT do anythng or they'll just block you from using their services. |
App version 2.81.1.1 , documents work again. |
Perchè questo issue è stato segnato come un duplicato di un altro issue (ora chiuso come completato) creato 2 giorni fa? Il problema è stato risolto? |
Non è stata risolta, è marcata come duplicata. Sul mio pixel con graphene os ho un errore con il messaggio #6671 . |
Interessante, allora gli errori non sono neppure uniformi tra un Pixel e l'altro. Sul mio Pixel 7a con Graphene OS (con OS e app aggiornati all'ultima versione) invece leggo "Il tuo dispositivo non supporta Documenti su IO", e sotto "Mostra dettagli" segnala codice errore ERR_IO_WALLET_INSTANCE_INTEGRITY_FAILED. |
Allora mi sa che l'idea era fare il contrario, visto che questa è stata marcata come duplicata del nuovo, e non #6673 come duplicato di questa.
|
@biccio é possibile aggiornarci sullo stato del problema? |
Dato che non riceviamo risposte, taggo qualche sviluppatore che ha committato nel progetto, anche solo per sapere la loro opinione in merito. Grazie. |
Tiro a indovinare: no.
Avrebbero già risposto se avessero potuto. |
Mi intromettono per chiedere non si può semplicemente fornire un apk vanilla esponendo i rischi all'utente invece di usare ste passatemi il termine porcate! Devo usare per forza un sistema senza patch di sicurezza perché google fa credere a voi sviluppatori che è un sistema più sicuro di un fork con patch a ieri 🤷🏻♂️🤷🏻♂️ la cosa oltre ad essere assurda e ridicola limita la libertà di usare un OS alternativo... Dové la libertà di usare un OS libero da traccianti e nel contempo usare software che il governo dovrebbe permettere di usare a tutti. Che poi lo sappiamo tutti che sono "criteri di sicurezza" aggirabili con due moduli magisk ed il root🤷🏻♂️ |
No, se fornissero questa opzione allora dovrebbero buttare all'aria tutti i controlli lato server che effettuano per Play Integrity anche per la versione dell'app attualmente disponibile, visto che un hacker malintenzionato potrebbe semplicemente far finta di stare usando l'app con i soli avvisi piuttosto che blocchi così da bypassare il tutto. Non sembra abbiano intenzione di rinunciare a Play Integrity nonostante comunque sia bypassabile tramite i sistemi che menzioni. |
@orazioedoardo They don't have to give it up though, just follow https://grapheneos.org/articles/attestation-compatibility-guide to set up hardware attestation as a more secure alternative to the Play Integrity API for verifying the hardware, OS and app where GrapheneOS and other secure operating systems can be permitted. Makes no sense that they seemingly won't even consider it. |
È una cosa ridicola mettiamo muri per "proteggere" la gente normale che non ha una scala sapendo benissimo che i malintenzionati hanno scale ben più alte di questi muri
18 feb 2025 13:37:34 Orazio ***@***.***>:
…
[Immagine][orazioedoardo][https://avatars.githubusercontent.com/u/22700499?s=20&v=4]*orazioedoardo* left a comment (pagopa/io-app#6327)[#6327 (comment)]
non si può semplicemente fornire un apk vanilla esponendo i rischi all'utente
No, se fornissero questa opzione allora dovrebbero buttare all'aria tutti i controlli lato server che effettuano per Play Integrity anche per la versione dell'app attualmente disponibile, visto che un hacker malintenzionato potrebbe semplicemente far finta di stare usando l'app con i soli avvisi piuttosto che blocchi così da bypassare il tutto. Non sembra abbiano intenzione di rinunciare a Play Integrity nonostante comunque sia bypassabile tramite i sistemi che menzioni.
—
Reply to this email directly, view it on GitHub[#6327 (comment)], or unsubscribe[https://github.com/notifications/unsubscribe-auth/ADSEUU4E2WPV4DQB3PJW3632QMSQ5AVCNFSM6AAAAABQPXOXHWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMNRVGU4TIMJXGY].
You are receiving this because you commented.
|
Non mi è chiaro in realtà che problemi pratici ci siano a consentire anche un client custom. Con i green pass lo stato emetteva la certificazione firmata digitalmente, e poi tu potevi usarla con qualunque app e su qualunque sistema tu volessi. E quelli erano dati personali più sensibili che non la patente. |
Non ci sono, potrebbero disattivare Play Integrity e l'app funzionerebbe perfettamente, probabilmente in pochi minuti lato server senza aggiornare l'app.
È diverso, in questo caso IO dichiara di voler verificare che il sistema sia sicuro* per evitare di fornire documenti a un sistema o app compromessa il che potrebbe essere uno scenario realistico, ma non era realistico che qualcuno usasse Verifica C19 per mentire a sé stesso o ai clienti contro i propri interessi. * di fatto "sicuro" == approvato da Google sulla base di criteri discutibili |
Il green pass non era un documento di identità. Non ci potevi aprire un conto in banca, per dire. |
Non puoi aprire un conto in banca neanche con la patente su app IO, mi sembra. Da qua:
EDIT: e da qua, direttamente sul sito dell'app IO:
Non c'è scritto da nessuna parte che rimpiazzano un documento di identità; possono solo certificare l'abilitazione alla guida. Esattamente come il green pass certificava l'avvenuta vaccinazione. Non ho accesso alla sezione documenti dell'app, ma a quanto vedo dagli screenshot anche lì c'è scritto "puoi usare la tua patente su IO solo in Italia per dimostrare di essere abilitato alla guida in caso di controlli delle forze dell'ordine". |
Ti sta sfuggendo un punto fondamentale: PER ORA non è usabile come documento d'identità ma è sempre stato il fine ultimo, dichiarato escplicitamente. Al momento non è valido oltre che per la patente(che de facto comunque vale come documento di identità al momento della verifica della idoneità alla guida) perché, banalmente, lo stanno ancora testando ed essendo una cosa molto pericolosa stanno cauti. Ma l'INTERO PUNTO della implementazione dei documenti è dargli valore legale quando tale implementazione sarà matura. |
@LazyAfternoons @Vangaorth @LeleDallas @biccio È possibile sapere se è stato preso in considerazione permettere le chiavi di grapheneos? |
Salve, come da titolo non passo i requisiti minimi di sicurezza con pixel 6a.
Non uso l'os stock, ma ho installato Graphene OS proprio per ragioni di privacy e sicurezza. Non ho infatti alcun root al telefono e ho il bootloader bloccato (come la FAQ relativa suggerisce).
Android 15
GraoheneOS: build 2024102100
Grazie!
The text was updated successfully, but these errors were encountered: