Suggerimenti per la sicurezza per i backup

Categoria OWASP: MASVS-CODE: Qualità del codice

Panoramica

Lo scopo dei backup delle app è preservare i dati degli utenti in modo che possano essere ripristinati in un secondo momento su un nuovo dispositivo o in caso di perdita di dati. I consigli di sicurezza esistenti relativi ai backup delle app sono sfumati e variano in base alle versioni di Android e ai produttori di dispositivi. Il tema comune è che questi consigli mirano a garantire che non vengano divulgati dati sensibili.

Il sistema di backup di Android standard offre la soluzione più sicura, affidabile e semplice per consentire alle app di eseguire il backup dei dati sul cloud o di trasferire i dati su un nuovo dispositivo mediante il backup automatico (abilitato per impostazione predefinita, non richiede alcuna operazione di implementazione e può anche essere esteso) e il backup delle coppie chiave-valore. Ti consigliamo di utilizzare questa soluzione perché archivia i dati di backup risultanti in directory non accessibili ad altre app di terze parti. Inoltre, è possibile semplificare la crittografia at-rest, la crittografia dei dati in transito e le configurazioni che consentono l'esclusione dei dati sensibili dai backup.

Se invece un'app implementa una soluzione di backup che non si basa sul sistema di backup Android standard, la probabilità di errori che possono portare a fughe di dati sensibili potrebbe aumentare. Esempi di soluzioni di backup non standard che espongono i dati utente a fughe di dati includono app che offrono una funzionalità di "esportazione" o "backup" che crea una copia dei dati dell'app in directory leggibili da altre app e che sono quindi soggette a fughe di dati (direttamente o tramite altre vulnerabilità).

Impatto

Seguire i consigli di sicurezza durante la configurazione dei backup delle app impedisce la potenziale fuga di dati sensibili che potrebbero essere inclusi nei backup. A seconda dei dati effettivi e delle intenzioni dell'utente malintenzionato, la fuga di dati sensibili può comportare la divulgazione di informazioni, il furto d'identità degli utenti e la perdita finanziaria.

Mitigazioni

Utilizzare il sistema di backup standard di Android

Il sistema di backup di Android standard cripta sempre i dati di backup in transito e at-rest. Questa crittografia viene applicata indipendentemente dalla versione di Android in uso e dal fatto che il dispositivo abbia o meno una schermata di blocco. A partire da Android 9, se sul dispositivo è impostata una schermata di blocco, i dati di backup non sono solo criptati, ma criptati con una chiave non nota a Google (il segreto della schermata di blocco protegge la chiave di crittografia, attivando così la crittografia end-to-end).

In generale, ricordati di seguire le linee guida per l'archiviazione dei dati e la sicurezza.

Se il backup include dati particolarmente sensibili, ti consigliamo di escluderli o, se non puoi, di richiedere la crittografia end-to-end come descritto nella sezione seguente.

Esclusione di dati dal backup

Puoi specificare quali dati escludere da un backup utilizzando un file di regole, convenzionalmente chiamato backup_rules.xmle inserito nella cartella dell'app res/xml. Esistono alcune differenze nella configurazione delle regole di backup a seconda della versione di Android utilizzata:

  • Per le versioni di Android 12 (livello API 31) e successive, aggiungi un attributo android:dataExtractionRules all'elemento <application> all'interno di AndroidManifest.xml:
  • xml xml <application android:name="com.example.foo" android:dataExtractionRules="@xml/backup_rules_extraction"> … </application>

Poi, configura il file backup_rules.xml in base ai requisiti di sicurezza e persistenza dei dati dell'applicazione, seguendo il formato di configurazione aggiornato.

Il formato richiesto per la configurazione del file backup_rules.xml consente agli sviluppatori di definire regole di backup personalizzate sia per i trasferimenti su Cloud sia per i trasferimenti da dispositivo a dispositivo (D2D). Se l'attributo <device-transfer> non è impostato, tutti i dati dell'applicazione verranno trasferiti durante una migrazione D2D. È importante sottolineare che anche se l'applicazione di destinazione ha come target Android 12 o versioni successive, deve sempre essere specificato un file separato con un ulteriore insieme di regole di backup per i dispositivi con Android 11 (livello API 30) o versioni precedenti.

  • Per Android 11 e versioni precedenti, aggiungi un attributo android:fullBackupContent all'elemento <application> all'interno di AndroidManifest.xml:
  • XML xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>

Configura quindi il file backup_rules.xml in base ai requisiti di persistenza dei dati e sicurezza dell'applicazione utilizzando la sintassi riportata nell'articolo sul backup dei dati utente.

Richiedere la crittografia end-to-end

Se non riesci a escludere i dati sensibili dal backup, ti consigliamo di richiedere la crittografia end-to-end, il che significa consentire i backup solo su Android 9 o versioni successive e solo quando è impostata la schermata di blocco. Puoi farlo utilizzando il flag requireFlags="clientSideEncryption", che deve essere rinominato in disableIfNoEncryptionCapabilities e impostato su true a partire da Android 12.

Se non riesci a utilizzare il sistema di backup standard di Android

Se non puoi utilizzare il sistema di backup standard di Android, l'archiviazione sicura dei dati di backup e la specifica di quali dati escludere dal backup è più complessa. Questo deve essere specificato a livello di codice ed è quindi soggetto a errori, con il rischio di fughe di dati. In questo caso, ti consigliamo anche di eseguire regolarmente test sull'implementazione per assicurarti che non siano state apportate alterazioni al comportamento del backup previsto.

Risorse