image

WebViews são usados em aplicativos android para carregar conteúdo e páginas HTML dentro do aplicativo. Devido a essa funcionalidade, a implementação do WebView deve ser segura para não introduzir o aplicativo a um grande risco.

1. Carregando conteúdo de texto claro:

Se o WebView permitir carregar conteúdo de texto claro da Internet, ele estará aberto a várias formas de ataque, como o MiTM.

Trechos de amostra em código:

myWebView.loadUrl (“http://www.droidsec.org/tests/addjsif/”)

2. Manipulação de erros do SSL:

O código abaixo instrui o cliente Do WebView a prosseguir quando ocorrer um erro SSL. Isso significa que o aplicativo é vulnerável a ataques MiTM, pois poderia permitir que um invasor lesse ou modifique conteúdo que seja exibido ao usuário, já que qualquer certificado seria aceito pelo aplicativo.

Trechos de amostra em código:

@Override

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)

{

handler.proceed();

}

3. JavaScript ativado:

Permitir que o conteúdo JavaScript seja executado dentro do aplicativo via WebView pode dar a oportunidade a um invasor executar o código JavaScript arbitrário, a fim de executar ações maliciosas. Essas configurações permitem que o WebView execute o código JavaScript.

Trechos de amostra em código:

WebSettings webSettings = myWebView.getSettings();

webSettings.setJavaScriptEnabled(true);

A função “JavascriptInterface” permite a ponte entre o código JavaScript e o código Java nativo. Isso significa que o código JavaScript pode acessar e injetar objetos Java e código Java a ser chamado pelo JavaScript.

4. Acessando recursos locais:

Se o WebView está permitindo acessar conteúdo de outros aplicativos que existem no mesmo dispositivo, então pode ser possível que um invasor crie um arquivo html malicioso que poderia ser injetado dentro do aplicativo de destino através do uso “file:scheme”. Para que este arquivo malicioso seja carregado precisa ter WORLD_READABLE permissões.

Mitigação: (Recursos Locais):

Principal solução para o WebView não acessar recursos locais sensíveis através do esquema de arquivos:

Qualquer URI recebido através de uma intenção de fora de um limite de confiança deve ser validado antes de renderizar-o com o WebView. Por exemplo, como código.

String intentUrl = getIntent().getStringExtra("http://example.com");

String localUrl = "about:blank";

if (!intentUrl.startsWith("file:"))

{

loadUrl = intentUrl;

}

WebView e o WebView que habilitam métodos vulneráveis:

Métodos vulneráveis quando o WebView está no lugar:

  • setAllowContentAccess()
  • setAllowFileAccess()
  • setAllowFileAccessFromFileURLs()
  • setAllowUniversalAccessFromFileURLs()
  • setJavaScriptEnabled()
  • setPluginState()

Autor: Kailesh Manoharan

Artigo Original