App-übergreifende Skripts

OWASP-Kategorie:MASVS-CODE: Codequalität

Übersicht

Ein WebView ist eine in Android-Anwendungen eingebettete Browserkomponente, die die Anzeige von Webinhalten in einer App erleichtern. Es rendert HTML, CSS und JavaScript auf der Benutzeroberfläche der App.

Cross-App Scripting wird häufig mit der Ausführung von schädlichem Code in Verbindung gebracht. im Kontext eines Opferantrags. Im Rahmen dieser Dokumentation beschränkt sich die Subjekt ausschließlich auf das Einschleusen schädlicher JavaScript-Code in eine anfällige WebView verschieben.

Wenn eine App schädlichen JavaScript-Code in eine WebView akzeptiert, obwohl nicht ausreichend Validierung oder Bereinigung ist die Anwendung anfällig für anwendungsübergreifende Skripting.

Positiv beeinflussen

Cross-App-Scripting-Sicherheitslücken können ausgenutzt werden, wenn von Angreifern kontrollierte JavaScript-Inhalte an die WebView der anfälligen App übergeben werden, ohne validiert oder bereinigt zu werden. Daraus folgt, dass der JavaScript-Code, der von der der Angreifer im Zusammenhang mit dem WebView der Opferanwendung ausgeführt wird. Der schädliche JavaScript-Code kann dann dieselben Berechtigungen wie die der Opfer-App verwenden, was zum Diebstahl sensibler Nutzerdaten und zum Hacken von Konten führen kann.

Abhilfemaßnahmen

JavaScript deaktivieren

Wenn Ihre Anwendung JavaScript nicht benötigt, können Sie es deaktivieren, um sicherzustellen, nicht zu einer Bedrohung wird:

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);

Wenn für Ihre Anwendung JavaScript erforderlich ist, müssen Sie Inhaber oder Administrator des an WebView übergebenen JavaScript sein. Vermeiden Sie es, WebView zu erlauben, beliebiges JavaScript auszuführen. Weitere Informationen finden Sie im nächsten Abschnitt.

Sicherstellen, dass nur erwartete Inhalte in WebView geladen werden

Wenn Sie Methoden wie shouldOverrideUrlLoading(), loadUrl() oder evaluateJavascript(), muss dafür sorgen, dass alle an sie übergebenen URLs aktiviert. Wie bereits erwähnt, sollte JavaScript, das an die WebView übergeben wird, nur von erwarteten Domains stammen. Daher ist es wichtig, zu prüfen, was geladen wird.

Lesen Sie die Dokumentation zur Eingabevalidierung von OWASP und diesen Android- Sicherheits-Checkliste für WebViews finden Sie hilfreiche Tipps und Beispiele.

Einstellungen für den sicheren Dateizugriff für WebView festlegen

Wenn Sie dafür sorgen, dass kein Zugriff auf Dateien möglich ist, kann verhindert werden, dass beliebiges JavaScript in WebViews ausgeführt wird. Beachten Sie beim Schützen des Dateizugriffs Folgendes: WebSettings

  • Deaktivieren Sie den Dateizugriff. Standardmäßig ist setAllowFileAccess in API-Ebene 29 und niedriger auf True festgelegt, was den Zugriff auf lokale Dateien ermöglicht. In API-Level 30 und höher ist der Standardwert False. Um sicherzustellen, dass der Dateizugriff nicht erlaubt ist, setAllowFileAccess explizit auf False setzen
  • Deaktivieren Sie den Inhaltszugriff. Die Standardeinstellung von setAllowContentAccess ist True. Über den Zugriff auf die Content-URL kann WebView Inhalte von einem im System installierten Contentanbieter laden. Wenn für Ihre App kein Zugriff auf Inhalte erforderlich ist, Setzen Sie setAllowContentAccess auf False, um einen potenziellen Missbrauch zu verhindern. App-übergreifende Scripting-Attacke.

  • 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);

Safe Browsing aktivieren

Aktivieren Sie Safe Browsing in AndroidManifest.xml, um URLs zu scannen, die an WebView für Phishing oder schädliche Domains:

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

Ressourcen