Script per più app

Categoria OWASP: MASVS-CODE: Qualità del codice

Panoramica

WebView è un componente del browser incorporato nelle applicazioni Android che facilita la visualizzazione dei contenuti web all'interno di un'app. Esegue il rendering di HTML, CSS e JavaScript all'interno dell'interfaccia utente dell'app.

Lo scripting cross-app è generalmente associato all'esecuzione di codice dannoso nel contesto di un'applicazione vittima. Ai fini della presente documentazione, il soggetto sarà vincolato specificamente all'inserimento di malware codice JavaScript in un componente WebView vulnerabile.

Quando un'app accetta JavaScript dannoso in un componente WebView senza convalida o sanificazione sufficienti, l'applicazione è vulnerabile al cross-app scripting.

Impatto

Le vulnerabilità del cross-app scripting possono essere sfruttate quando i soggetti malintenzionati I contenuti JavaScript vengono trasmessi alla WebView dell'app vulnerabile senza essere convalidate o sanitizzate. Di conseguenza, il codice JavaScript fornito l’autore dell’attacco viene eseguito nel contesto della WebView dell’applicazione vittima. Il codice JavaScript dannoso può quindi utilizzare le stesse autorizzazioni dell'app vittima, il che può comportare il furto di dati utente sensibili e il furto d'identità dell'account.

Mitigazioni

Disattivare JavaScript

Se la tua applicazione non richiede JavaScript, la disattivazione garantisce che non diventi una minaccia:

Kotlin

// Get the WebView Object
val webView = findViewById<WebView>(R.id.webView)
val webSettings = webView.settings

// Disable JavaScript
webSettings.javaScriptEnabled = false

Java

// Get the WebView Object
WebView webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();

// Disable JavaScript for the WebView
webSettings.setJavaScriptEnabled(false);

Se la tua applicazione richiede JavaScript, assicurati di possedere o controllare qualsiasi JavaScript passato a WebView. Evita di consentire a WebView di eseguire in modo arbitrario JavaScript, consulta le indicazioni nella sezione successiva.

Assicurati che in WebView vengano caricati solo i contenuti previsti

Quando utilizzi metodi come shouldOverrideUrlLoading(), loadUrl() o evaluateJavascript(),, assicurati che gli URL che vengono loro passati siano controllati. Come affermato in precedenza, qualsiasi codice JavaScript passato a WebView deve provenire solo da domini previsti, pertanto è importante verificare cosa viene caricato.

Controlla la documentazione di convalida dell'input di OWASP e questa elenco di controllo per la sicurezza di WebView per trovare consigli ed esempi validi.

Impostare le impostazioni di accesso sicuro ai file per WebView

Garantire che i file non siano accessibili può impedire l'esecuzione di JavaScript arbitrario all'interno di WebView. Quando si protegge l'accesso ai file, devono essere considerati i seguenti WebSettings:

  • Disattiva l'accesso ai file. Per impostazione predefinita, setAllowFileAccess è impostato su True nel Livello API 29 e versioni precedenti, il che consente l'accesso ai file locali. Nel livello API 30 mentre se il valore predefinito è False, Per assicurarti che l'accesso ai file non sia consentito, imposta esplicitamente setAllowFileAccess su False
  • Disattivare l'accesso ai contenuti. L'impostazione predefinita di setAllowContentAccess è True. L'accesso all'URL dei contenuti consente a WebView di caricare contenuti da un fornitore di contenuti installato nel sistema. Se la tua app non richiede l'accesso ai contenuti, Imposta setAllowContentAccess su False per prevenire potenziali usi impropri in caso di cross-app scripting.

  • kotlin kotlin webView.settings.javaScriptEnabled = false webView.settings.domStorageEnabled = true webView.settings.allowFileAccess = false webView.settings.allowContentAccess = false

  • java java webView.getSettings().setJavaScriptEnabled(false); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setAllowFileAccess(false); webView.getSettings().setAllowContentAccess(false);

Attiva Navigazione sicura

Attiva Navigazione sicura in AndroidManifest.xml per eseguire la scansione degli URL passati a WebView alla ricerca di phishing o domini dannosi.

<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
   android:value="true" />

Risorse