Device security

Android system app security

How Otukan maps, hardens and validates the privileged apps and services in an Android system image, per model, through every authorised build and update.

  • Know every privilege

    Otukan builds an inventory of each preinstalled app and system service, the permissions it holds and the interfaces it exposes to other code.

  • Least privilege by design

    Privileges that a component does not need are removed or narrowed in your build, so a flaw in one component reaches less of the device.

  • Rechecked with each release

    Every authorised build is compared against the approved privilege map, so a new permission or exposed interface is a reviewed decision.

Privileged-component risks Otukan handles

Each risk has a finding, a fix in your build and a record your security owner can review.

Over-granted permissions

  1. Detect

    Otukan compares the permissions each preinstalled app holds with the functions it actually performs.

  2. Respond

    Unneeded privileged or default-granted permissions are removed from the allowlist in your build.

  3. Report

    The privilege map records each grant, its owner and the reason it stays.

Unguarded exported component

  1. Detect

    Exported components and system service calls are listed with the permission that protects them, or the lack of one.

  2. Respond

    The component is unexported, protected by a signature permission or given caller checks, per the fix agreed with its owner.

  3. Report

    Each change is logged against the component and the build that carries it.

Excessive system identity

  1. Detect

    Apps sharing the system user ID or signed with the platform key are flagged for review.

  2. Respond

    Where the function allows, the app moves to its own identity and its own signing key.

  3. Report

    Components that keep system identity are listed with the justification from their owner.

Supplier component with a known flaw

  1. Detect

    Supplier-provided apps and services are tracked by version against the fixes their suppliers publish.

  2. Respond

    Otukan contains the exposure in your build while the supplier prepares its fix, and verifies that fix when it arrives.

  3. Report

    Open supplier findings are reported with owner, containment and status.

What Otukan examines in a system image

Privilege on Android comes from several sources. Otukan reviews each one for every model in your programme.

  • Platform-signed apps

    Otukan lists every app signed with your platform key, the signature permissions it holds and whether it runs with the shared system user ID.

  • Privileged app directories

    Otukan checks each app in the priv-app directories of the system, product, system_ext and vendor partitions against its privileged permission allowlist.

  • Exported interfaces

    Otukan maps the activities, services, receivers, content providers and system service calls other apps can reach, and the permission guarding each one.

  • Access control domains

    Otukan records the SELinux domain each component runs in and which files, devices and services its policy lets it touch.

How Otukan hardens privileged components

  1. Inventory the image

    We list every preinstalled app, system service and vendor component in each model's system image.

  2. Map the privileges

    Permissions, signing identity, exported interfaces and access control domains are recorded per component.

  3. Agree the scope

    Each finding is assigned to monitoring, hardening in your build, or remediation by its supplier.

  4. Harden and verify

    Changes land in your build, and tests on the physical device confirm that functions still work.

  5. Recheck every release

    Each authorised build and security update is compared with the approved map before it ships.

Otukan hardens the privileged components of an Android device by mapping what each preinstalled app and system service is allowed to do, removing privilege it does not need, and checking that map again in every authorised build and security update. The work covers apps signed with your platform key, apps in the privileged directories of your system image, vendor services and the interfaces they expose to other code. It runs inside your build and signing process, per model and chipset, for Android-based devices whose system image you or your ODM build. It is part of a device programme, not a scan of an arbitrary image.

Privilege map

A privileged component is any code in the system image that can do more than a store app. On Android, that power comes from a small number of sources, and Otukan records each one per component.

Where privilege comes from

  • Signing identity. Apps signed with the platform key can be granted signature permissions. Apps that also declare the shared system user ID run with the identity of the system itself.
  • Privileged directories. Apps placed in a priv-app directory can request privileged permissions, and the build must list each grant in an allowlist file. Otukan checks that every entry has a reason.
  • Default grants. Runtime permissions can be granted in advance to preinstalled apps, without the user seeing a prompt.
  • Access control domain. Each process runs in an SELinux domain whose policy decides which files, devices and services it may touch.

Interfaces and attack boundaries

Privilege becomes risk where other code can reach it. Otukan lists the exported activities, services, broadcast receivers and content providers of each privileged app, and the system service calls a vendor service offers, together with the permission that guards each entry point. An interface that a store app can call without a matching permission is an attack boundary, and it goes on the map with its owner.

ComponentPrivilege sourceReachable fromGuarded by
Platform-signed settings appPlatform key, shared system user IDOther apps through exported activitiesSignature permission per activity
Preinstalled update clientPriv-app directory, allowlisted privileged permissionsSystem and apps through a bound serviceCaller signature check
Vendor hardware serviceVendor partition, own SELinux domainSystem services through its interfaceSELinux policy and interface permissions

The table shows the shape of the map, not a finding. Your map lists the real components of each model.

Control scope

Not every finding calls for the same action. Otukan agrees with you, for each finding, which of three routes applies, so ownership is clear before work starts.

  • Monitoring. A privilege that the component legitimately needs stays in place and is watched. Otukan records the justification and reports any change to it in later builds.
  • Hardening in your build. Where you own the configuration, Otukan narrows it: permissions leave the allowlist, an exported interface closes or gains a signature permission, a component moves from system identity to its own, an SELinux rule becomes stricter. Each change is tested on the physical device so that functions users depend on keep working.
  • Supplier remediation. Where the flaw sits in code a supplier owns, the fix belongs to that supplier. Otukan contains the exposure in your image in the meantime, tracks the finding by component version, and verifies the corrected release when it arrives.

This split makes ownership explicit from the first finding. A preinstalled component that no one owns is itself a finding, and the programme names an owner before the build ships.

Validation through builds and updates

A privilege map is only useful while it matches the image on the device. Otukan keeps it current through the life of the model.

  • Authorised builds. Every candidate build is compared with the approved map. A new privileged app, a new allowlist entry or a newly exported interface is raised for review before release.
  • Security updates. Platform and vendor security updates change system components. Otukan checks that fixes arrived as expected and that no privilege widened on the way.
  • Supplier updates. A new version of a supplier component is checked against its predecessor, so a changed permission request or interface is seen before it reaches devices.
  • Evidence for owners. Each release carries a record of what changed, who approved it and which tests ran on which device.

What a sensitive public-sector programme should ask about privileged components is covered on government mobile device security. Whether a device is running the build you approved is covered on device integrity signals. Firmware integrity is covered on Android firmware integrity. The wider device architecture is covered on Android device security architecture. For the full device programme, see mobile device security.

Common questions

  • Why are preinstalled apps a security concern for a device maker?

    Preinstalled apps and services often hold permissions no store app can obtain, and they cannot be removed by the user. A flaw in one of them can give an attacker system-level reach. Otukan treats these components as part of the device's attack surface and reviews them with the same care as the boot chain.

  • Does Otukan fix flaws in apps supplied by other vendors?

    Otukan contains the exposure in your system image, for example by narrowing permissions or closing an exported interface, and tracks the finding until the supplier ships its own fix. Changes inside a supplier's code stay with that supplier, and Otukan verifies the corrected version in your next build.

  • Is this a scanning service for any firmware we send?

    No. Otukan works inside a device programme, with the OEM or institution that owns the build, one model and chipset at a time. The privilege map is part of that engineering work, kept current as your builds change, rather than a one-off scan of an image.

Narrow what every system app can reach

Tell us whether you are an OEM or an institution, which models and chipsets are in scope, and who supplies the preinstalled apps and vendor services. We do not ask for signing keys, source code or firmware images at this stage.

Or request a technical demo