Correggere una vulnerabilità di cross-app scripting

Queste informazioni sono rivolte agli sviluppatori delle app vulnerabili al cross-app scripting.

Situazione attuale

Una o più delle tue app presentano un problema di cross-app scripting con WebView, che potrebbe consentire ad app dannose di sottrarre i cookie e altri dati degli utenti. Leggi la notifica su Play ConsoleDopo le scadenze indicate in Play Console, le app che contengono vulnerabilità di sicurezza non corrette potrebbero essere rimosse da Google Play.

Azione richiesta

  1. Accedi a Play Console e vai alla sezione Avvisi per scoprire quali app sono interessate dai problemi e le scadenze per risolverli.
  2. Aggiorna le app interessate e correggi la vulnerabilità.
  3. Invia le versioni aggiornate delle app interessate.

In questo lasso di tempo, la tua nuova app o l'aggiornamento dell'app presenterà lo stato In attesa di pubblicazione fino al termine dell'esame della tua richiesta. Se l'app non è stata aggiornata correttamente, continuerai a vedere l'avviso.

Ulteriori dettagli

I WebView che consentono JavaScript e caricano letture di dati da intent non attendibili possono essere ingannati da app dannose per l'esecuzione di codice JavaScript in un contesto non sicuro. È consigliabile evitare questa vulnerabilità seguendo una delle procedure indicate sotto:

Opzione 1: assicurati che le attività interessate dal problema non vengano esportate

Trova le attività con componenti WebView che presentano il problema. Se queste attività non devono acquisire intent da altre app, puoi impostare android:exported=false per le attività nel file manifest. In questo modo puoi assicurarti che le app dannose non possano inviare input dannosi ai componenti WebView in queste attività.

Opzione 2: proteggi i componenti WebView nelle attività esportate

Se vuoi impostare come esportata un'attività con un componente WebView interessato dal problema, ti consigliamo di apportare le seguenti modifiche:

  1. Proteggi le chiamate a evaluateJavascript e loadUrl

    Assicurati che i parametri per evaluateJavascript siano sempre attendibili. Chiamare evaluateJavascript tramite input non sottoposti a sanitizzazione da intent non attendibili consente agli utenti malintenzionati di eseguire script dannosi nel componente WebView in questione. In modo simile, chiamare loadUrl tramite input non sottoposti a sanitizzazione contenenti URL con schema javascript: consente agli utenti malintenzionati di eseguire script dannosi.

  2. Impedisci i caricamenti di file non sicuri

    Assicurati che i componenti WebView interessati dal problema non possano caricare il database dei cookie. I componenti WebView che caricano URL file:// non sottoposti a sanitizzazione da intent non attendibili possono subire attacchi da app dannose in due fasi. Prima fase: una pagina web dannosa può inserire tag <script> nel database dei cookie. Seconda fase: il file di questo database dei cookie modificato può essere caricato se un'app dannosa invia un intent con un URL file:// che rimanda al database dei cookie del tuo componente WebView oppure se la pagina web dannosa stessa rimanda il tuo componente WebView all'URL del file. Lo <script> dannoso memorizzato nel database dei cookie verrà caricato ed eseguito e potrà sottrarre informazioni sulla sessione.

    Per fare in modo che i componenti WebView interessati dal problema non possano caricare il database dei cookie di WebView hai tre opzioni:

    1. Disattiva l'intero accesso al file.
    2. Assicurati che il componente WebView carichi soltanto URL file:// e verifica che tutti gli URL file:// caricati indirizzino a file sicuri. Tieni presente che un utente malintenzionato può utilizzare un link simbolico per ingannare i controlli sul percorso dell'URL. Per evitare un attacco, assicurati di controllare il percorso canonico di qualsiasi URL file:// non attendibile prima del caricamento, anziché controllare solo il percorso dell'URL.
    3. Se vuoi consentire sia gli URL http:// sia gli URL file://, implementa la verifica degli URL file:// usando shouldOverrideUrlLoading e shouldInterceptRequest in WebViewClient. In questo modo verranno verificati tutti gli URL caricati nel componente WebView, non soltanto gli URL forniti direttamente per una chiamata funzione loadUrl().

Siamo a tua disposizione
Puoi pubblicare eventuali domande tecniche relative alla vulnerabilità su Stack Overflow utilizzando il tag "android-security". Per chiarimenti sui passaggi da seguire per risolvere il problema, puoi contattare il nostro team di assistenza per gli sviluppatori.

È stato utile?

Come possiamo migliorare l'articolo?
false
Menu principale
11128351558045872884
true
Cerca nel Centro assistenza
true
true
true
true
true
5016068
false
false