Como corrigir a vulnerabilidade de Injeções de fragmentos

Estas informações destinam-se aos programadores com aplicações que utilizam uma implementação não segura das classes PreferenceActivity que as tornam suscetíveis a Injeções de fragmentos. Essa implementação pode permitir que uma aplicação externa maliciosa carregue Fragmentos que deveriam ser privados.

O que está a acontecer

A partir de 1 de março de 2017, o Google Play começou a bloquear a publicação de novas aplicações ou atualizações em que as classes PreferenceActivity possam estar vulneráveis a Injeções de fragmentos. Consulte o aviso na Play ConsoleApós os prazos apresentados na Play Console, as aplicações que contenham vulnerabilidades de segurança não corrigidas poderão ser removidas do Google Play.

Ação necessária​

  1. Inicie sessão na Play Console e navegue até à secção Alertas para ver quais as aplicações afetadas e os prazos para resolver estes problemas.
  2. Atualize as aplicações afetadas e corrija a vulnerabilidade.
  3. Envie as versões atualizadas das aplicações afetadas.

Depois de voltar a enviar, a sua aplicação será revista novamente. Este processo pode demorar várias horas. Se a aplicação passar na revisão e for publicada com êxito, não será necessária qualquer ação adicional. Se a aplicação falhar na revisão, a nova versão da aplicação não será publicada e receberá uma notificação por email.

Detalhes adicionais

Sempre que possível, defina exported=false para a classe PreferenceActivity no seu Manifesto. Esta ação impede que as aplicações externas enviem Intenções para esta classe.

Se for necessário exportar a classe PreferenceActivity vulnerável para aplicações externas, determine por que motivo a classe é vulnerável e efetue as ações adequadas. Existem duas possibilidades:

  1. Implementação incorreta de isValidFragment:

Verifique se a classe vulnerável contém ou herda uma implementação de isValidFragment que devolve verdadeiro em todos os caminhos de código. Se tal acontecer, atualize a classe para verificar se existe uma lista de classes de Fragmentos permitidos. Por exemplo: se a classe PreferenceActivity tiver de permitir classes MyFragment e mais nenhum Fragmento, implemente uma verificação como a que se segue:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. targetSdkVersion é inferior a 19 e não implementa isValidFragment:

Se, atualmente, a aplicação definir a respetiva targetSdkVersion no manifesto para um valor inferior a 19 e a classe vulnerável não contiver qualquer implementação de isValidFragment, a vulnerabilidade é herdada da PreferenceActivity.

Para corrigir isto, os programadores devem atualizar a targetSdkVersion para 19 ou superior. Em alternativa, se não for possível atualizar a targetSdkVersion, os programadores devem implementar isValidFragment conforme descrito na secção 1) para verificar a existência de classes de fragmentos permitidos.

As aplicações também devem estar em conformidade com o Contrato de Distribuição para Programadores e a Política de Conteúdos

Estamos aqui para ajudar

Se tiver perguntas técnicas acerca da vulnerabilidade, pode publicar uma mensagem no Stack Overflow e utilizar a etiqueta "android-security". Para obter um esclarecimento sobre os passos que tem de efetuar para resolver este problema, pode contactar a nossa equipa de apoio técnico a programadores.

false
Menu principal
15831755577957491068
true
Pesquisar no Centro de ajuda
true
true
true
true
true
5016068
false
false