Corrigir uma vulnerabilidade de cross-app scripting

Estas informações são destinadas a desenvolvedores com apps que contenham uma vulnerabilidade de cross-app scripting.

O que está acontecendo

Um ou mais dos seus apps contêm um problema de cross-app scripting de WebView que pode permitir que apps maliciosos roubem cookies e outros dados dos usuários. Consulte o aviso no Play Console. Depois do prazo final apresentado no Play Console, todos os apps com vulnerabilidades de segurança não corrigidas poderão ser removidos do Google Play.

Ação necessária

  1. Faça login no Play Console e acesse a seção "Alertas" para ver os apps afetados e os prazos para resolver os problemas.
  2. Atualize esses apps e corrija a vulnerabilidade.
  3. Envie as versões atualizadas dos apps afetados.

Durante esse período, o novo app ou a atualização terá o status Publicação pendente até que sua solicitação seja analisada. Se o app não tiver sido atualizado corretamente, o aviso ainda será exibido.

Detalhes adicionais

Os WebViews que ativam JavaScript e carregam dados lidos de Intents não confiáveis podem ser levados por apps maliciosos a executar código JavaScript em um contexto não seguro. Recomendamos evitar essa vulnerabilidade com um dos métodos a seguir:

Opção 1: impedir a exportação das atividades afetadas

Encontre atividades com WebViews afetados. Se essas atividades não precisarem usar intents de outros apps, você poderá definir android:exported=false nas atividades no manifesto. Isso evita que apps maliciosos enviem entradas prejudiciais para os WebViews nessas atividades.

Opção 2: proteger os WebViews em atividades exportadas

Para definir uma Activity com um WebView afetado como exportada, recomendamos que você faça as seguintes modificações:

  1. Proteja as chamadas para evaluateJavascript e loadUrl

    Os parâmetros de evaluateJavascript precisam sempre ser confiáveis. Chamar o evaluateJavascript usando a entrada não corrigida de Intents não confiáveis permite que os invasores executem scripts nocivos no WebView afetado. Da mesma forma, chamar loadUrl com a entrada não corrigida com o javascript: scheme URLs permite que invasores executem scripts nocivos.

  2. Evite o carregamento não seguro de arquivos

    Não permita que os WebViews afetados carreguem o banco de dados de cookies. Os WebViews que carregam URLs file:// não corrigidos de Intents não confiáveis podem ser atacados por apps maliciosos em duas etapas. Primeira etapa: uma página da Web maliciosa pode gravar tags <script> no banco de dados de cookies. Segunda etapa: esse arquivo de banco de dados de cookies modificado pode ser carregado se um app mal-intencionado enviar uma Intent com um URL file:// que leva ao banco de dados de cookies do WebView ou se a página da Web maliciosa redirecionar seu WebView para o URL do arquivo. O <script> malicioso armazenado no banco de dados de cookies será carregado e executado, o que pode roubar informações da sessão.

    Há três maneiras de impedir que os WebViews afetados carreguem o banco de dados de cookies do WebView.

    1. Desative todo o acesso a arquivos.
    2. Confirme se o WebView carrega somente URLs file:// e verifique se os carregados apontam para arquivos seguros. Um invasor pode usar um symbolic link para enganar as verificações no caminho do URL. Para evitar esse tipo de ataque, verifique o caminho canônico de qualquer URL file:// não confiável antes do carregamento em vez de somente verificar o caminho do URL.
    3. Se você quiser permitir URLs http:// e file://, implemente a verificação de URL file:// usandoshouldOverrideUrlLoading eshouldInterceptRequest emWebViewClient. Isso garante que todos os URLs carregados no WebView sejam verificados, não limitados aos URLs fornecidos diretamente a uma chamada de função loadUrl().

Estamos aqui para ajudar
Caso tenha dúvidas técnicas sobre a vulnerabilidade, escreva uma postagem no Stack Overflow e use a tag "android-security". Se precisar de mais informações sobre as etapas necessárias para resolver esse problema, entre em contato com nossa equipe de suporte ao desenvolvedor.

Isso foi útil?

Como podemos melhorá-lo?
false
Menu principal
591287139141274058
true
Pesquisar na Central de Ajuda
true
true
true
true
true
5016068
false
false