Solução para a vulnerabilidade de PendingIntent implícito

Estas informações destinam-se aos programadores com apps que contêm a vulnerabilidade de PendingIntent implícito.

O que está a acontecer

Uma ou mais das suas apps contêm um problema de PendingIntent implícito que pode causar ameaças de segurança sob a forma de negação de serviço, roubo de dados privados e escalamento de privilégios. Reveja os passos detalhados abaixo para corrigir o problema com as suas apps. Pode encontrar as localizações das utilizações de PendingIntent implícito na sua app na notificação da Play Console relativa à app. Se uma localização terminar com "(no código carregado dinamicamente)", a localização está no código carregado dinamicamente pela app ou por bibliotecas usadas pela app. Geralmente, as aplicações usam código carregado dinamicamente através do fornecimento de funcionalidades a pedido, embora existam outras técnicas não recomendadas (algumas técnicas não recomendadas também violam a Política do Google Play e não devem ser usadas). Além disso, os empacotadores podem transformar o código da aplicação em código carregado dinamicamente.

Recomendamos que corrija este problema, mas não é obrigatório. O estado da publicação da sua app não será afetado pela presença deste problema.

Detalhes adicionais

As apps Android enviam mensagens entre componentes através de intents. Os intents podem especificar o componente de destino (intent explícito) ou indicar uma ação geral e deixar que o sistema operativo envie o intent para qualquer componente no dispositivo que registe um filtro de intent que corresponda a essa ação (intent implícito).

Os PendingIntents são intents delegados a outra app para serem enviados numa data futura. A criação de uma intenção implícita unida num PendingIntent é uma vulnerabilidade de segurança que pode levar a negação de serviço, roubo de dados privados e escalamento de privilégios. 

Passos seguintes

1. Atualize a sua app e corrija os alertas de "PendingIntent implícita" ao seguir os passos realçados abaixo.

Reveja a sua app para ver a localização em que é criado um PendingIntent. Por exemplo, o código seguinte cria um PendingIntent que une uma intenção implícita: 

// Crie um intent de base implícita e una-o num PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

PendingIntent pi = PendingIntent.getService(this, 0, base, 0);

A Google recomenda que os programadores corrijam a vulnerabilidade ao aplicar qualquer uma das (ou ainda melhor, todas as) seguintes opções:

  • Assegurar que os campos da ação, do pacote e dos componentes do intent de base estão definidos;
  • Assegurar que o PendingIntent só é enviado a componentes fidedignos;
  • Utilizar o JOIN_IMMUTABLE (adicionado no SDK 23) para criar PendingIntents. Isto impede que as apps que recebem o PendingIntent sejam preenchidas em propriedades não preenchidas. Se a app também for executada em dispositivos com o SDK 22 ou anterior, recomendamos que os programadores apliquem as opções anteriores enquanto reforçam a criação do PendingIntent com o padrão:

if (android.os.Build.VERSION.SDK_INT >= 23) {

  // Create a PendingIntent using FLAG_IMMUTABLE

} else {

  // Código existente que cria um PendingIntent

}

2. Envie o APK atualizado

Para enviar um app bundle ou APK atualizado:

  1. Aceda à Play Console.
  2. Selecione a app.
  3. Aceda ao Explorador de app bundles.
  4. Selecione a versão da app do APK/app bundle que não está em conformidade no menu pendente na parte superior direita e tome nota dos lançamentos em que se encontram.
  5. Aceda à faixa com o problema de política. Será uma destas 4 páginas: Testes internos/fechados/abertos ou Produção.
  6. Junto à parte superior direita da página, clique em Criar novo lançamento. (Pode ter de clicar primeiro em Gerir faixa)
    • Se o lançamento com o APK em violação estiver no estado de rascunho, rejeite o lançamento.
  7. Adicione a versão em conformidade com a política dos app bundles ou APKs.
    • Certifique-se de que a versão que não está em conformidade dos APKs ou dos app bundles está na secção Não incluídos deste lançamento. Para obter mais orientações, veja a secção "Não incluídos (app bundles e APKs)" neste artigo de ajuda da Play Console.
  8. Para guardar todas as alterações efetuadas ao lançamento, selecione Guardar.
  9. Quando terminar de preparar o lançamento, selecione Rever lançamento.

Se o APK não que não está em conformidade for lançado em várias faixas, repita os passos 5 a 9 em cada faixa.

Durante este período, a nova app ou a atualização da app estará num estado em revisão até que o seu pedido seja revisto. Se a app não tiver sido atualizada corretamente, continuará a ver o aviso.

Estamos aqui para ajudar

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

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