← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-0026 · CWE-862 · Disclosed 2026-03-02

In removePermission of PermissionManagerServiceImpl

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a master key flaw that still requires the thief to get inside the building first

CVE-2026-0026 is an Android local privilege-escalation bug in PermissionManagerServiceImpl.removePermission(). The fix shows the core mistake: Android should reject removal of non-dynamic permissions and return immediately, but vulnerable builds could continue into the removal path, creating a way to override system permissions. Public records tie the issue to Android 14 and fixes shipped in the 2026-03-01 Android security patch level; OSV also shows a related fix carried into 16-qpr2-next development branches.

Google scored it High 7.8, which is technically defensible in a lab because the post-exploit impact is big. In real enterprise conditions, that overstates urgency: this is not remotely reachable, needs local code execution plus user interaction, and mostly matters after an attacker already lands a malicious app on the device. That combination pushes it down from emergency patch territory to a controlled mobile-fleet remediation item.

"Serious on a compromised Android 14 handset, but not an enterprise fire drill: local, user-assisted, and narrow."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land a malicious app

The attacker needs an APK on the target handset, typically via a trojanized app, sideload, third-party store, or a phishing lure into an allowed install flow. There is no network listener here; the exploit starts only after code is already running locally on the device.
Conditions required:
  • Target device runs vulnerable Android 14
  • Attacker can deliver or stage a malicious APK locally
  • Device policy permits the app to be installed or executed
Where this breaks in practice:
  • Managed Google Play, allowlisting, and EMM app controls block most commodity delivery paths
  • Google Play Protect and mobile threat defense products can flag or block known-bad APKs
  • Many enterprise devices disable sideloading outright
Detection/coverage: Traditional network scanners will miss this completely. Detection is mainly through EMM inventory, Play Protect alerts, mobile threat defense telemetry, and app-install events.
STEP 02

Get the user to interact

The CVSS vector includes UI:R, so the attack chain needs some user action such as installing, opening, or otherwise engaging with the malicious app. In practice this means the exploit is social-engineering-assisted, not silent remote compromise.
Conditions required:
  • User interacts with the delivered app or install prompt
  • No enterprise control intercepts the action first
Where this breaks in practice:
  • User training, managed enrollment UX, and store restrictions reduce click-through success
  • Conditional access and work-profile controls can limit what an untrusted app can touch before escalation
Detection/coverage: User-assisted install/open events are usually visible to EMM, MTD, and sometimes Google enterprise logging; exploit success itself is far less directly visible.
STEP 03

Trigger the permission-manager logic error

A weaponized custom APK exploit would call into the vulnerable permission-management path and abuse the missing early return on non-dynamic permissions. The public AOSP fix is literally to stop processing after logging an attempt to modify a non-dynamic permission, which strongly suggests exploitation depends on reaching that bad code path on an unpatched build.
Conditions required:
  • Device is missing the 2026-03-01 fix
  • Exploit code can reach the affected permission-management flow locally
  • Build behavior matches the vulnerable Android 14 path
Where this breaks in practice:
  • No public weaponized PoC was found in the sources reviewed
  • Exploit reliability may vary across OEM builds and security customizations
  • Host-based protections may detect unusual permission-service abuse or suspicious app behavior
Detection/coverage: Static version checks are straightforward; runtime exploit detection is weak unless a mobile EDR/MTD product watches permission-state anomalies or suspicious system-service calls.
STEP 04

Abuse the new permission state for follow-on access

Once the app can override protected permissions, it can pivot into sensitive data access or stronger persistence on that handset. The blast radius is the single device or profile the attacker already landed on, not your whole enterprise estate.
Conditions required:
  • Exploit succeeds on the specific handset
  • Attacker has an objective that benefits from elevated local permissions
Where this breaks in practice:
  • Enterprise containerization and work-profile boundaries may still limit access to corporate data
  • The exploit does not inherently give remote fleet-wide reach or server-side code execution
  • Device wipe, compliance quarantine, or app removal can contain the compromised endpoint
Detection/coverage: Look for anomalous app privilege patterns, sudden access to protected sensors/data, and MTD detections on post-exploit behavior rather than the exploit primitive itself.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public evidence of active exploitation found in the reviewed sources. Google's March 2026 bulletin only flags CVE-2026-21385 as under limited targeted exploitation, not this CVE.
KEV statusNot listed in CISA's Known Exploited Vulnerabilities Catalog as reviewed.
Proof-of-concept availabilityNo public GitHub PoC or weaponized exploit surfaced in source review. Third-party trackers reviewed indicate no public PoC found.
EPSSUser-provided EPSS is 0.00003; third-party tracking places it around the 0.07th percentile, which is effectively basement-level exploitation likelihood.
CVSS vector reality checkAV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H means local-only, no starting privileges, but user interaction required. That is a classic post-delivery privilege-escalation profile, not an internet-borne emergency.
Affected versionsNVD and OSV tie the public impact to Android 14 / 14.0. Android's March 2026 bulletin lists CVE-2026-0026 in the Framework section with updated AOSP version 14.
Fixed versionsAddressed by the 2026-03-01 Android security patch level. OSV maps the fix to AOSP commit 528a87e90ff9354581d54fd37fbe9f95cccbcdb1, with related carry-forward into 16-qpr2-next.
Root cause and fix signalThe patch message says: 'Fix error handling for non-dynamic permissions' and adds an early return before mRegistry.removePermission(permName). That is strong evidence of a reachable authorization/logic flaw rather than a speculative hardening-only change.
Scanning and exposure dataShodan/Censys/FOFA-style exposure data is not applicable. This is a handset-local flaw in Android permission management, not a remotely exposed service.
Disclosure and attributionPublished 2026-03-02. The bulletin and NVD do not publicly credit an external finder; the visible AOSP fix is authored by Yi-an Chen.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.6/10)

The decisive factor is attacker position: this bug only matters after an attacker gets code onto the handset and persuades the user to interact with it. That sharply narrows real-world exposure compared with a remotely reachable enterprise service, even though the on-device impact after success is high.

HIGH Affected version scope is narrow: public records consistently point to Android 14
HIGH Exploitability is constrained by local access plus user interaction
MEDIUM No public exploitation or PoC visibility from reviewed sources

Why this verdict

  • Down from vendor 7.8: AV:L is the biggest drag. This is not remotely reachable, so an attacker must already be on the handset with executable code.
  • Further down: UI:R means the chain needs the user to do something useful for the attacker, which modern mobile enterprise controls often disrupt.
  • Population cap: the public scope is basically Android 14, not a broad cross-version Android fleet issue.
  • Blast radius is local: compromise is per-device or per-profile, not a server-side or tenant-wide takeover primitive.
  • No exploitation heat: no KEV listing, no public PoC found, and EPSS is near zero.

Why not higher?

If this were remotely triggerable, wormable, or already showing active exploitation, it would climb fast. But every major prerequisite compounds downward pressure: local foothold, user action, and a narrow affected version set mean this is a post-delivery escalation bug, not an initial-access event.

Why not lower?

This is still a genuine privilege-escalation flaw in the Android permission model, not harmless noise. If an attacker does get a malicious app onto a vulnerable handset, the resulting integrity and data-access impact on that device can be serious enough that backlog-only treatment would be too casual.

05 · Compensating Control

What to do — in priority order.

  1. Block sideloading — Use EMM/MDM policy to disable unknown-source installs and restrict app sources to managed Google Play. This attacks the most important prerequisite in the chain; for a MEDIUM verdict there is no mitigation SLA, so apply on the next policy cycle and then patch through normal mobile maintenance.
  2. Enforce app allowlisting — Limit devices to approved apps, especially on corporate-owned profiles. That materially reduces the reachable population because this CVE needs local code execution first; for MEDIUM, there is no mitigation SLA — go straight to the 365-day remediation window while maintaining this policy control.
  3. Turn on Play Protect and MTD — Verify Google Play Protect is enabled and integrate mobile threat defense where available to catch malicious APKs and suspicious post-install behavior. This will not 'fix' the bug, but it is one of the few controls that can stop the chain before privilege escalation; with MEDIUM, keep it enforced continuously while scheduling patch rollout.
  4. Inventory Android 14 with old SPLs — Query EMM for devices on Android 14 with ro.build.version.security_patch earlier than 2026-03-01. That gives you the real exposure set instead of treating the entire mobile fleet as affected; for MEDIUM, use that inventory to drive patching inside the normal remediation window.
  5. Tighten high-risk user cohorts first — Prioritize executives, admins, developers, and frequent travelers whose phones see more untrusted content or sideload requests. The CVE is not internet-scale, so risk is driven by user behavior and app hygiene more than raw device count.
What doesn't work
  • Perimeter scanners or external attack-surface tools do not help; there is no remotely exposed service to scan.
  • A WAF, IPS, or network ACL will not stop a local permission-manager bug triggered by an installed app.
  • Email security alone is insufficient; even perfect phishing filtering does not cover USB sideloading, third-party stores, or already-present unwanted apps.
  • Assuming 'no public PoC' means 'safe to ignore' is wrong; local Android LPEs are routinely useful once an app foothold exists.
06 · Verification

Crowdsourced verification payload.

Run this from an auditor workstation with adb installed and USB/network debugging access to the target Android device. Invoke it as ./check-cve-2026-0026.sh <serial> or ./check-cve-2026-0026.sh for the only attached device; it needs adb access only, not root on the handset.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2026-0026.sh
# Detect likely exposure to CVE-2026-0026 on Android devices via adb.
# Logic:
#   - Vulnerable population from public records: Android 14
#   - Fixed by Android security patch level 2026-03-01 or later
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=usage/runtime error

set -u

TARGET="${1:-}"
ADB_BASE=(adb)
if [[ -n "$TARGET" ]]; then
  ADB_BASE+=( -s "$TARGET" )
fi

fail_unknown() {
  echo "UNKNOWN: $1"
  exit 2
}

if ! command -v adb >/dev/null 2>&1; then
  echo "UNKNOWN: adb not found in PATH"
  exit 3
fi

if ! "${ADB_BASE[@]}" get-state >/dev/null 2>&1; then
  echo "UNKNOWN: no reachable adb device${TARGET:+ for serial $TARGET}"
  exit 3
fi

getprop_trim() {
  "${ADB_BASE[@]}" shell getprop "$1" 2>/dev/null | tr -d '\r' | tail -n 1 | xargs
}

ANDROID_RELEASE="$(getprop_trim ro.build.version.release)"
SDK="$(getprop_trim ro.build.version.sdk)"
PATCH="$(getprop_trim ro.build.version.security_patch)"
FINGERPRINT="$(getprop_trim ro.build.fingerprint)"

if [[ -z "$ANDROID_RELEASE" && -z "$SDK" && -z "$PATCH" ]]; then
  fail_unknown "unable to read Android properties"
fi

# Normalize Android major version from release string.
MAJOR=""
if [[ "$ANDROID_RELEASE" =~ ^([0-9]+) ]]; then
  MAJOR="${BASH_REMATCH[1]}"
fi

# Fallback via SDK if release is unavailable.
# Android 14 == SDK 34
if [[ -z "$MAJOR" && "$SDK" == "34" ]]; then
  MAJOR="14"
fi

# Validate patch date format YYYY-MM-DD
valid_patch=0
if [[ "$PATCH" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
  valid_patch=1
fi

echo "Device fingerprint: ${FINGERPRINT:-unknown}"
echo "Android release: ${ANDROID_RELEASE:-unknown}"
echo "SDK: ${SDK:-unknown}"
echo "Security patch level: ${PATCH:-unknown}"

if [[ -z "$MAJOR" ]]; then
  fail_unknown "cannot determine Android major version"
fi

# Public sources tie CVE-2026-0026 mainly to Android 14.
if [[ "$MAJOR" != "14" ]]; then
  echo "PATCHED: device is not in the public affected Android 14 population"
  exit 0
fi

if [[ $valid_patch -ne 1 ]]; then
  fail_unknown "Android 14 device but security patch level is unreadable"
fi

FIXED_PATCH="2026-03-01"

# Lexicographic compare is safe for YYYY-MM-DD.
if [[ "$PATCH" < "$FIXED_PATCH" ]]; then
  echo "VULNERABLE: Android 14 with security patch level older than $FIXED_PATCH"
  exit 1
else
  echo "PATCHED: Android 14 with security patch level $PATCH (fixed if OEM backporting is accurate)"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, have the mobile team pull an EMM report for Android 14 devices with security patch levels earlier than 2026-03-01, then validate whether sideloading and unmanaged app installs are blocked on those users. For this MEDIUM verdict there is no noisgate mitigation SLA — go straight to the 365-day remediation window while keeping Play Protect, allowlisting, and sideload restrictions enforced; the noisgate remediation SLA is ≤ 365 days for getting affected devices onto a fixed security patch level or retiring them from the managed fleet.

Sources

  1. Android Security Bulletin — March 2026
  2. NVD entry for CVE-2026-0026
  3. OSV advisory ASB-A-321711213
  4. OSV entry for CVE-2026-0026
  5. AOSP fix commit for PermissionManagerServiceImpl
  6. CISA Known Exploited Vulnerabilities Catalog
  7. Stack.watch EPSS/affected-version summary for CVE-2026-0026
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.