Field note 02 · Android security

Exported Android components: exposure is not exploitability

An exported Android component is an entry point worth reviewing. It is not, by itself, proof that a vulnerability exists.

What does “exported” mean?

Android applications contain components such as activities, services, broadcast receivers and content providers. The exported configuration influences whether other applications can interact with a component, subject to Android version rules, permissions, enabled state and other controls.

It is sensible for a researcher to inspect exported components because they may cross an app-to-app trust boundary. But listing an exported activity in a report without understanding its behaviour is not sufficient to establish a vulnerability.

Four questions to ask first

  1. Is it reachable? Confirm the effective manifest state, platform behaviour, any intent filters and whether the component is enabled.
  2. What protects it? Check component-level permissions, custom permissions, calling-identity validation and relevant provider read/write permissions.
  3. What does it do? Trace the data it accepts and the operations it performs. A public deep-link entry can be a normal product feature.
  4. What impact is demonstrable? Verify whether an untrusted caller can bypass a control, access protected data or cause an unauthorized action in a permitted test environment.

A safe illustrative scenario

Imagine a training app containing an exported activity that accepts a document identifier. That activity is not automatically insecure. The question is whether it performs a server-side ownership check before retrieving the document, and whether an untrusted app could influence the selection.

In a lab, a test with two synthetic accounts might demonstrate that the second account cannot access the first account’s document. That is evidence of a correctly enforced boundary for the tested case. If authorization fails in a documented lab, the researcher can explain the root cause and mitigation without exposing real users.

From static observation to dynamic validation

A reliable workflow pairs manifest inspection with targeted, authorized runtime testing. Compare the APK’s effective configuration with observed application behaviour. Record the Android version, component name, test conditions and what was actually reachable.

For content providers, consider URI permissions, path permissions and exported state. For activities, consider intents, authentication state and any operations reached through navigation. Avoid relying on a single Boolean flag to decide severity.

How developers should respond

Restrict components that do not need to be accessible, apply suitable permissions where they do, validate inputs, and enforce authorization at each sensitive operation. Prefer clear security boundaries over user-interface assumptions.

Research boundary

This article explains general Android security assessment concepts. It does not report a vulnerability in a named third-party application.

Further reading