android:exported
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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ê
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 2025-07-27 UTC."],[],[],null,["# android:exported\n\n\u003cbr /\u003e\n\n**OWASP category:** [MASVS-PLATFORM: Platform Interaction](https://mas.owasp.org/MASVS/09-MASVS-PLATFORM)\n\nOverview\n--------\n\nThe `android:exported` [attribute](/guide/topics/manifest/activity-element#exported) sets whether a component (activity, service, broadcast receiver, etc.) can be launched by components of other applications:\n\n- If `true`, any app can access the activity and launch it by its exact class name.\n- If `false`, only components of the same application, applications with the same user ID, or privileged system components can launch the activity.\n\nThe logic behind the default value of this attribute changed over time and was different depending on the component types and Android versions. For example, on API level 16 (Android 4.1.1) or lower the value for `\u003cprovider\u003e` elements is set to `true` by default. Not setting this attribute explicitly carries the risk of having different default values between some devices.\n\nImpact\n------\n\nThe situation with different default values means you could accidentally expose internal application components. A few examples of the consequences could be the following:\n\nDenial of service attacks.\nOther apps inappropriately accessing internal components to modify your app's internal functionality.\nLeaking of sensitive data.\nCode execution in the context of the vulnerable application.\n\nMitigations\n-----------\n\nAlways explicitly set the `android:exported` attribute. This will leave no room for interpretation and clearly signal your intention with regard to a component's visibility.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [# Key management {:#key-management}](/topic/security/data)\n- [Run embedded DEX code directly from APK](/topic/security/dex)\n- [Tapjacking](/topic/security/risks/tapjacking)"]]