Categoria do OWASP: MASVS-PLATFORM - Interação com plataformas
Visão geral
O atributo android:exported
define se um componente (atividade, serviço, broadcast receiver etc.) pode ser iniciado por componentes de outros aplicativos:
- Se ele for definido como
true
, qualquer app poderá acessar a atividade e iniciá-la pelo nome exato da classe. - Se ele for definido como
false
, a atividade só poderá ser iniciada por componentes do mesmo aplicativo ou com o mesmo ID do usuário ou componentes de sistema privilegiados.
A lógica por trás do valor padrão desse atributo mudou com tempo, variando de acordo com os tipos de componente e as versões do Android. Por exemplo, no nível 16 da API (Android 4.1.1) e anteriores, o valor de elementos <provider>
é definido como true
por padrão. Não definir esse atributo aumenta explicitamente o risco de ter valores padrão diferentes entre alguns dispositivos.
Impacto
A situação com valores padrão diferentes significa que os componentes internos do aplicativo podem ser expostos acidentalmente. Confira alguns exemplos de consequências:
Ataques de negação de serviço. Outros apps que acessam componentes internos de forma inadequada para modificar a funcionalidade interna do app. Vazamento de dados sensíveis. Execução de código no contexto do aplicativo vulnerável.
Mitigações
Sempre defina o atributo android:exported
explicitamente. Isso não deixa espaço para interpretações e indica sua intenção quanto à visibilidade de um componente.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado
- # Gerenciamento de chaves {:#key-management}
- Executar código DEX incorporado diretamente no APK
- Tapjacking