Join our Newsletter — 33% off our NHI Course
Home FAQ Cyber Security What happens when a browser can launch a…
Cyber Security

What happens when a browser can launch a vulnerable Unity activity with attacker-controlled extras?

← Back to all FAQ
By NHI Mgmt Group Editorial Team Updated September 20, 2026 Domain: Cyber Security

In the worst case, a website can trigger the app through a browsable intent and pass parameters that point the runtime at malicious native code. Remote exploitation is constrained by Android storage and SELinux rules, but it becomes more plausible if the app exposes browsable activity entry points and writes attacker-controlled content into private storage.

How a browsable Unity activity turns into an attack path

The core issue is that a browser can hand control to an app entry point that was never meant to trust web-originated input. If that activity accepts extras that influence file paths, native library loading, or runtime configuration, the browser becomes a delivery mechanism for attacker-supplied parameters rather than a safe launch boundary. The browser is not “executing” the code, but it can still steer the app into unsafe behaviour.

That distinction matters because Unity apps often bridge managed code, native plugins, and platform storage APIs. When a browsable activity exposes that bridge, the security question is less about the browser itself and more about whether the app treats incoming intent data as trusted. If the app later writes those values into private storage or uses them to resolve executable or loadable content, the attack surface widens significantly.

For a useful comparison with real-world compromise patterns, see The 52 NHI breaches Report and United Nations Breach, which both illustrate how a small trust mistake around exposed entry points or credentials can turn into broader exploitation.

Why this can become code execution, not just parameter abuse

Attacker-controlled extras only become dangerous when they influence something the app later uses in a privileged way. The highest-risk patterns are path injection into writable app space, control over a name that selects a native library or asset, and a flow that copies web-supplied content into internal storage and later loads it. In that case, the browser is just the first hop in a chain that ends with the app consuming malicious native code.

Android does impose constraints. Storage isolation, app sandboxing, and SELinux reduce the chance that a browser can directly drop arbitrary code into another app’s executable path. That is why many of these issues are constrained by default. But the constraint is only a defense if the app does not create a more permissive path itself, such as by writing attacker-controlled data into a location it later trusts for execution or loading.

Browser launch behavior is also important. A browsable activity means the app has explicitly allowed external invocation from web content or deep links. If the activity accepts extras without strict allowlisting, validation, and canonicalization, then the attack surface includes every parameter that can influence file handling or code selection. The weak point is the app’s trust boundary, not the browser protocol alone.

For standards and platform guidance that map to this kind of input and execution boundary, the most useful references are W3C for browser and web platform security context, and CISA cyber threat advisories for exploit and abuse patterns that rely on exposed externally reachable entry points. Where the issue becomes a local software security weakness, the NIST SP 800-53 Rev 5 Security and Privacy Controls access-control and system-integrity controls are the closest fit.

Risk and Threat Considerations

The main risk is that a web-triggered app launch becomes a path from untrusted browser input to privileged local behavior. If attacker-controlled extras influence how the app resolves files, loads assets, or chooses native components, the impact can range from data tampering to local code execution within the app’s trust context. The danger increases when the app writes those inputs into private storage and later treats them as trusted.

Failure mechanism: An exposed browsable activity accepts parameters that survive into a file, path, or loading decision, and the app later consumes that data as if it were safe. Android sandboxing and SELinux may block direct abuse, but a vulnerable app can still create its own unsafe trust path.

Impact: An attacker may be able to influence the app to load malicious native code, alter app state, or create a foothold for deeper compromise of the app’s data or execution flow.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

CIS Controls v8 and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
CIS Controls v8CIS 6 — Access Control ManagementRestricts how externally triggered input can influence privileged app behavior.
CIS 10 — Data RecoverySupports safe handling of app-written content that could be abused after compromise.
Recommendation — Enforce least privilege and review externally reachable access paths that can alter execution state. Protect and restore app data locations that external input can corrupt.
NIST CSF 2.0PR.AC — Identity Management, Authentication and Access ControlBrowsed entry points are access paths that must be controlled and validated.
PR.DS — Data SecurityAttacker-controlled extras become risky when they reach stored data or loaded content.
PR.IP — Information Protection Processes and ProceduresThis issue depends on secure input handling and safe storage-to-execution procedures.
Recommendation — Control externally reachable launch points and validate the access path before trust is granted. Protect stored app data so untrusted input cannot later be consumed as executable content. Define and enforce procedures for sanitizing external inputs before storage or reuse.

Practitioner Guidance

What to verify: Treat every browsable activity as an externally reachable input surface and confirm that extras are allowlisted, type-checked, length-limited, and canonicalized before they influence file paths, storage locations, or runtime-loading decisions. If the value can reach native code selection or executable content, it needs a stricter review than ordinary UI input.

Decision rule: If an intent extra can change where the app reads from or what it loads, assume it is security-sensitive and block any flow that copies it into private storage for later execution without an explicit trust check. If the app only uses the value for display or non-security-critical state, the risk is lower, but it still needs validation to prevent path traversal and state corruption.

Practitioner takeaway: The important question is not whether the browser is “allowed” to launch the app, it is whether the app turns that launch into a trusted execution path. If web-originated input can influence native loading or executable state, you should treat the activity as part of the attack surface, not just a convenience entry point.

Deepen Your Knowledge

Sign up to our weekly newsletter — get 33% off our NHI Foundation Level Course

    NHIMG Editorial Note
    Reviewed and updated by the NHIMG editorial team on September 20, 2026.
    NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org