MASTG-TEST-0031: Teste de Execução JavaScript em WebViews
Deprecated Test
This test is deprecated and should not be used anymore. Reason: Having JavaScript enabled is not considered a vulnerability by itself, but it can lead to security issues in combination with other weaknesses, such as local file access in WebViews, which are covered by other tests in the MASTG v2. This test is therefore not considered a standalone test anymore.
Please check the following MASTG v2 tests that cover this v1 test:
No tests are covering this weakness.
Visão Geral¶
Para testar a execução de JavaScript em WebViews)), verifique se o app utiliza WebViews e avalie se cada WebView deve ou não permitir a execução de JavaScript. Se a execução de JavaScript for necessária para o funcionamento normal do app, é preciso garantir que o app siga todas as melhores práticas.
Análise Estática¶
Para criar e usar uma WebView, um app deve criar uma instância da classe WebView.
WebView webview = new WebView(this);
setContentView(webview);
webview.loadUrl("https://www.owasp.org/");
Várias configurações podem ser aplicadas à WebView (ativar/desativar JavaScript é um exemplo). O JavaScript é desativado por padrão em WebViews e deve ser habilitado explicitamente. Procure pelo método setJavaScriptEnabled para verificar a ativação do JavaScript.
webview.getSettings().setJavaScriptEnabled(true);
Isso permite que a WebView interprete JavaScript. Ele deve ser habilitado apenas se for necessário, para reduzir a superfície de ataque do app. Se o JavaScript for necessário, você deve garantir que:
- A comunicação com os endpoints dependa consistentemente de HTTPS (ou outros protocolos que permitam criptografia) para proteger HTML e JavaScript contra adulteração durante a transmissão.
- JavaScript e HTML sejam carregados localmente, a partir do diretório de dados do app ou apenas de servidores web confiáveis.
- O usuário não possa definir quais fontes carregar por meio do carregamento de diferentes recursos com base em uma entrada fornecida pelo usuário.
Para remover todo o código-fonte JavaScript e os dados armazenados localmente, limpe o cache da WebView com clearCache quando o app for fechado.
Dispositivos que executam plataformas anteriores ao Android 4.4 (nível de API 19) usam uma versão do WebKit que tem várias questões de segurança. Como medida alternativa, o app deve confirmar que os objetos WebView exibem apenas conteúdo confiável se o app for executado nesses dispositivos.
Análise Dinâmica¶
A Análise Dinâmica depende das condições operacionais. Existem várias maneiras de injetar JavaScript em uma WebView do app:
- Vulnerabilidades de Cross-Site Scripting armazenado em um endpoint; a exploração será enviada para a WebView do app móvel quando o usuário navegar para a função vulnerável.
- O invasor assume uma posição de Homem-no-Meio (MITM))) e adultera a resposta injetando JavaScript.
- Malware que adultera arquivos locais que são carregados pela WebView.
Para abordar esses vetores de ataque, verifique o seguinte:
- Todas as funções oferecidas pelo endpoint devem estar livres de XSS armazenado.
-
Apenas arquivos que estão no diretório de dados do app devem ser renderizados em uma WebView (consulte o caso de teste "Testando para Inclusão de Arquivo Local em WebViews").
-
A comunicação HTTPS deve ser implementada de acordo com as melhores práticas para evitar ataques MITM. Isso significa que:
- toda a comunicação é criptografada via TLS,
- o certificado é verificado adequadamente, e/ou
- o certificado deve ser fixado (pinned).