Skip to content

MASTG-BEST-0008: Depuração Desativada para WebViews

Garanta que a depuração de WebView esteja desativada em builds de produção para evitar que atacantes explorem essa funcionalidade para interceptar, modificar ou depurar a comunicação dentro de WebViews.

  • Defina WebView.setWebContentsDebuggingEnabled como false em produção, ou remova as chamadas completamente se forem desnecessárias.
  • Se a depuração de WebView for necessária durante o desenvolvimento, garanta que esteja habilitada apenas quando o aplicativo estiver em estado depurável verificando a flag ApplicationInfo.FLAG_DEBUGGABLE em tempo de execução.

Por exemplo:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
    { WebView.setWebContentsDebuggingEnabled(true); }
}

Nota: Desativar a depuração de WebView dessa forma ajuda a proteger um aplicativo já em execução em um dispositivo. Para que um atacante explore a depuração de WebView, ele precisa ter acesso físico ao dispositivo (por exemplo, um dispositivo roubado ou de teste) ou acesso remoto por meio de malware ou outros meios maliciosos. Além disso, o dispositivo normalmente precisa estar desbloqueado, e o atacante precisaria saber o PIN, senha ou autenticação biométrica do dispositivo para obter controle total e conectar ferramentas de depuração como adb ou Chrome DevTools.

No entanto, desativar a depuração de WebView não elimina todos os vetores de ataque. Um atacante poderia:

  1. Fazer um patch no aplicativo para adicionar chamadas a essas APIs (consulte Correção), então reempacotá-lo e reassiná-lo (consulte Repackaging and Re-Signing).
  2. Usar hooking de métodos em tempo de execução (consulte Enganchamento de Métodos) para habilitar a depuração de WebView dinamicamente durante a execução.

Desativar a depuração de WebView serve como uma camada de defesa para reduzir riscos, mas deve ser combinada com outras medidas de segurança.

Tests

MASTG-TEST-0227: Depuração Ativada para WebViews