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:
- Acesse o Play Console.
- Selecione o app.
- Acesse o Explorador de pacotes de apps.
- Selecione e anote a versão do app do APK/pacote não compatível no menu suspenso no canto superior direito.
- Acesse a faixa com o problema de política. Ela será uma destas quatro páginas: teste interno, fechado, aberto ou produção.
- 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.
- 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.
- Para salvar as alterações da versão, selecione Salvar.
- 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.