Android security tags, read closely by Lightrion

CVE-2025-48652 AI-generated analysis

platform/frameworks/base, packages/PackageInstaller (InstallStart activity, and the PIA v2 InstallRepository on 16/17)

AI-generated: written from the bulletin and the fixing diffs by claude-fable-5-1, then checked against the code by claude-opus-5-5 (7 corrections). Verify against the commit before relying on it.

PackageInstaller's InstallStart no longer lets a caller that holds INSTALL_PACKAGES skip the unknown-sources user-restriction checks when it starts the installer with an ACTION_VIEW or ACTION_INSTALL_PACKAGE intent. The bypass now applies only to non-intent installs by INSTALL_PACKAGES holders and to privileged callers that set EXTRA_NOT_UNKNOWN_SOURCE.

Root cause

In InstallStart.onCreate, checkDevicePolicyRestrictions(isTrustedSource) decided which user restrictions to enforce. When isTrustedSource was true, only DISALLOW_INSTALL_APPS was checked. Otherwise the unknown-sources restrictions were checked as well. Judging from the removed Kotlin helper isInstallRequestFromTrustedSource on 16/17 and from the commit message, isTrustedSource was true when the caller was a privileged app that set EXTRA_NOT_UNKNOWN_SOURCE OR when the caller held INSTALL_PACKAGES. The INSTALL_PACKAGES condition did not look at how the installer was launched. As a result, an intent-driven install (ACTION_VIEW / ACTION_INSTALL_PACKAGE) from an INSTALL_PACKAGES holder skipped the unknown-sources user restrictions.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to June 2026 · Findings