Le principali vulnerabilità coinvolte nel componente WebView sono riferimenti agli oggetti diretti di Insecure, SQL Injection e XSS (Cross-Site Scripting).
Sebbene tutti e tre siano potenzialmente enormi rischi, il potenziale di vulnerabilità XSS può essere utilizzato per accedere ai file delle preferenze condivise usando il comando file: /// o può utilizzare smsJSInterface.launchSMSActivity per inviare messaggi SMS indesiderati dal telefono, oltre rubare credenziali o fornire un falso fronte a HTML, CSS, Javascript o altri comportamenti a livello di browser.
Se disattivi setJavaScriptEnabled come segue, gli avversari non saranno in grado di eseguire Javascript per eseguire attacchi XSS:
myWebView.getSettings().setJavaScriptEnabled(false);
Oppure, se non riesci a farlo, assicurati che ogni contesto sia evaso correttamente utilizzando un componente filtro XSS come OWASP Java Encoder Project.
Puoi vedere quali dati sono disponibili per ogni WebView usando lo strumento da riga di comando sqlite3 o un browser compatibile con SQLite3 per visualizzare il file /app/-packagename-/db/webview.db. Ovviamente, qualsiasi input che si insinua nel database SQLite3 o che esegue una query o altra operazione stringa contro di esso può diventare un potenziale punto di inserimento per l'iniezione SQL, anche se in alcuni casi può essere richiesto uno scenario MITM di rete.
Alcuni esempi di riferimenti agli oggetti diretti insicuri possono essere trovati in questi tutorial di penetration testing contro l'app HerdFinancial che fa parte di OWASP GoatDroid Project :