Solução da vulnerabilidade de PendingIntent implícita

Estas informações são destinadas a desenvolvedores de apps com vulnerabilidade de PendingIntent implícita.

O que está acontecendo

Um ou mais dos seus apps têm um problema de PendingIntent implícita que pode causar ameaças à segurança na forma de negação de serviço, roubo de dados particulares e escalonamento de privilégios. Confira abaixo as etapas detalhadas para corrigir o problema dos seus apps. Você pode encontrar os locais de uso de PendingIntent implícita na notificação do Play Console. A terminação "(em código carregado dinamicamente)" indica que o local está no código carregado dinamicamente pelo app ou pelas bibliotecas usadas por ele. Em geral, os apps usam o código carregado dinamicamente pelo envio de recursos sob demanda, embora existam outras técnicas não recomendadas. Algumas dessas técnicas 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 do aplicativo em código carregado dinamicamente.

Recomendamos corrigir esse problema, mas isso não é obrigatório. O status de publicação do app não será afetado pela presença desse problema.

Detalhes adicionais

Os apps Android enviam mensagens entre componentes usando intents. As intents podem especificar o componente-alvo (intent explícita) ou listar uma ação geral e deixar o sistema operacional entregar a intent a qualquer componente no dispositivo que registra um filtro de intent correspondente à ação (intent implícita).

As PendingIntents são intents delegadas a outro app para que sejam entregues em um momento futuro. A criação de uma intent implícita empacotada em uma PendingIntent é uma vulnerabilidade de segurança que pode levar a negação de serviço, roubo de dados particulares e escalonamento de privilégios.

Próximas etapas

1. Atualize o app e corrija os alertas de "PendingIntent implícita" seguindo as etapas destacadas abaixo.

Revise o app para ver o local em que uma PendingIntent é criada. Por exemplo, o código a seguir cria uma PendingIntent empacotando uma intent implícita:

// Crie uma intent de base implícita e empacote-a em uma PendingIntent

Intent base = new Intent("ACTION_FOO");

base.setPackage("some_package");

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

O Google recomenda que os desenvolvedores corrijam a vulnerabilidade com a aplicação de uma ou, melhor ainda, todas as opções a seguir:

  • Garantir que os campos de ação, pacote e componente da intent de base estejam definidos
  • Garantir que a PendingIntent seja entregue apenas a componentes confiáveis
  • Usar FLAG_IMMUTABLE (adicionado no SDK 23) para criar PendingIntents. Isso impede que apps que recebem a PendingIntent preencham as propriedades não preenchidas. Caso o app também seja executado em dispositivos com SDK 22 ou mais antigo, recomendamos que os desenvolvedores apliquem as opções anteriores e reforcem a criação da PendingIntent com o padrão:

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

  // Crie uma PendingIntent com FLAG_IMMUTABLE

} else {

  // O código existente cria uma PendingIntent

}

2. Envie o APK atualizado.

Para enviar um pacote de apps ou APK atualizado, faça o seguinte:

  1. Acesse o Play Console.
  2. Selecione o app.
  3. Acesse o Explorador de pacotes de apps.
  4. Selecione e anote a versão do app do APK/pacote não compatível no menu suspenso no canto superior direito.
  5. Acesse a faixa com o problema de política. Ela será uma destas quatro páginas: teste interno, fechado, aberto ou produção.
  6. No canto superior direito da página, clique em Criar nova versão. Talvez seja necessário clicar em "Gerenciar faixa" primeiro.
    • Se a versão do APK com violação estiver em estado de rascunho, descarte-a.
  7. Adicione a versão dos pacotes de apps ou APKs compatíveis com a política.
    • Confira se a versão que não está em conformidade dos pacotes de apps ou APKs está na seção Não incluídos desta versão. Para mais orientações, confira a seção "Não incluídos (pacotes de app e APKs)" neste artigo da Central de Ajuda do Play Console.
  8. Para salvar as alterações da versão, selecione Salvar.
  9. Depois de preparar a versão, selecione Avaliar versão.

Se o APK não compatível for lançado em várias faixas, repita as etapas 5 a 9 em cada uma delas.

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

Estamos aqui para ajudar

Em caso de dúvidas técnicas sobre a vulnerabilidade, escreva uma postagem no Stack Overflow (em inglês) 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.

Isso foi útil?

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