Android security tags, read closely by Lightrion

CVE-2025-48558 AI-generated analysis

platform/frameworks/base, services/core BatteryService (system_server)

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 (2 corrections). Verify against the commit before relying on it.

BatteryService now resolves the ACTION_REQUEST_SHUTDOWN intent it fires on low battery or over-temperature to an explicit component whose owning uid holds android.permission.SHUTDOWN. Before, it launched the implicit intent from the system process, so any activity with a matching intent-filter could resolve.

Root cause

In services/core/java/com/android/server/BatteryService.java, shutdownIfNoPowerLocked() and shutdownIfOverTempLocked() each posted a Runnable. That Runnable built an implicit Intent(Intent.ACTION_REQUEST_SHUTDOWN) with EXTRA_KEY_CONFIRM=false, EXTRA_REASON (SHUTDOWN_LOW_BATTERY or SHUTDOWN_BATTERY_THERMAL_STATE) and FLAG_ACTIVITY_NEW_TASK, then called mContext.startActivityAsUser(intent, UserHandle.CURRENT) with no component set. Because the intent was implicit and started by system_server, any activity declaring an intent-filter for ACTION_REQUEST_SHUTDOWN could be resolved and launched, with no check that the target held android.permission.SHUTDOWN.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to September 2025 · Findings