This is a stolen staff badge inside the building, not a burglar kicking in the front door
CVE-2026-0013 is a *local* Android elevation-of-privilege bug in DocumentsUI's PickActivity. Google says affected AOSP versions are Android 14, 15, and 16, and the fixing change clears a malicious Intent selector before the app reuses the incoming request. In plain English: a rogue app already running on the device can try to trick the system's file-picker app into launching an arbitrary activity *as DocumentsUI* instead of as the untrusted app.
The vendor's HIGH 8.4 score reflects the technical impact once an attacker is already on the handset, but it overstates enterprise urgency. The decisive friction is attacker position: this starts at AV:L, which means the adversary already has code execution on the device through a malicious app, sideload, or prior compromise. That makes this a useful *chain* bug for mobile malware, not a stand-alone fleet fire.
4 steps from start to impact.
Land code on the device
adb, or a prior exploit chain that already achieved app-level code execution.- Target is running Android 14, 15, or 16
- Attacker can execute code locally as an unprivileged app
- DocumentsUI component is present and reachable
- This is not remotely reachable from the internet
- Managed enterprise devices often block unknown app sources
- Play Protect, MDM allow-lists, and app reputation controls can stop the initial foothold
Send a crafted picker request
PickActivity and supplies an Intent with a hostile selector. The AOSP fix notes that PickActivity reused the incoming intent while showing alternate apps, so the selector could survive into a privileged launch path.- Attacker can call exported or reachable picker flows
- Crafted
Intentselector is accepted into the vulnerable path
- Exploit reliability depends on exact component behavior and OEM build parity
- Exported-activity and intent-filter differences across devices can reduce portability
Abuse the confused deputy
- Vulnerable
PickActivity.setupLayoutcode path is hit - DocumentsUI has permission or trust the attacker app lacks
- The payoff depends on what target activities can actually be launched meaningfully under DocumentsUI's context
- SELinux, app sandboxing, and component permission checks still constrain follow-on abuse
Pivot to on-device privilege gain
- Chosen activity yields meaningful access when started as DocumentsUI
- User/device state exposes data worth stealing
- Blast radius is usually one handset at a time
- This does not directly become tenant-wide or domain-wide compromise
- Enterprise impact is serious mainly when chained with spyware or high-value mobile access
The supporting signals.
| In-the-wild status | No confirmed exploitation found in the sources reviewed. *Inference:* absence from CISA KEV and no vendor note about active exploitation lowers urgency, but does not prove zero use. |
|---|---|
| Proof-of-concept availability | No public PoC repo or researcher write-up was found in the reviewed sources. The public AOSP fix is enough for a capable Android exploit developer to reconstruct the issue, but there is no obvious mass-commodity exploit signal. |
| EPSS | 0.00003 from the supplied intel; percentile not verified from a primary source during this review. Directionally, that is extremely low exploit-likelihood compared with internet-facing bugs. |
| KEV status | Not listed in CISA KEV as of this assessment. No KEV date applies. |
| CVSS vector | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — the key word is AV:L. It is easy to trigger *after* code is already on-device, but it is not an external entry point. |
| Affected versions | Android 14, 15, and 16 per the March 1, 2026 Android bulletin and NVD/OSV records. The vulnerable component is Documents UI, which the bulletin also lists under Google Play system updates. |
| Fixed state | Addressed in the Android Security Bulletin dated 2026-03-01, with the public AOSP fix 9f2d3f09f8fdc099d5a2d4c8bf3e8ec460bb9233. Because this is a Mainline-associated component, defenders should verify both device patching and Google Play system update posture. |
| Exposure / scanning data | Shodan/Censys/GreyNoise-style exposure is effectively not applicable here because this is not a network service. *Inference from AV:L and the affected component:* exposure population is the set of managed Android endpoints, not internet-exposed hosts. |
| Disclosure date | 2026-03-02 |
| Reporting / patch provenance | Public provenance points to Google Android/AOSP. The patch commit message says: *prevent a malicious selector from launching an arbitrary activity* and ties the fix to bug 447135012. |
noisgate verdict.
The single biggest downward driver is attacker position: exploitation requires *local app execution on the handset first*. That makes CVE-2026-0013 a valuable *post-compromise privilege-escalation primitive* for mobile malware, but not the kind of bug that creates internet-scale exposure by itself.
Why this verdict
- Downgrade for attacker position: vendor CVSS starts high because the impact is full local EoP, but
AV:Lmeans the attacker is already on the device. That is immediate downward pressure for enterprise prioritization. - Downgrade for exposure population: this is reachable only on Android endpoints running affected
DocumentsUIcode, not on public-facing infrastructure. Real exposed population is far narrower than a browser, VPN, or mail gateway bug. - Downgrade for controls that should break step 1: mobile app allow-listing, Play Protect, managed Play, MTD, and sideload restrictions can stop the prerequisite malicious app before this CVE matters.
- Hold at MEDIUM, not LOW: once a malicious app lands, exploitation appears low-complexity and needs no extra privileges or user interaction. That makes it a credible second-stage privilege escalator in mobile intrusion chains.
- Hold at MEDIUM because of enterprise data value: on high-value devices with SSO tokens, corporate mail, chat, and MDM enrollment, a local EoP can materially improve attacker access even if the blast radius is one device at a time.
Why not higher?
There is no internet-reachable entry point, no KEV listing, no confirmed active exploitation in the sources reviewed, and no public mass-weaponized PoC signal. Most importantly, AV:L implies the attacker has already crossed the hardest boundary by executing code on the endpoint.
Why not lower?
This is still a real privilege-boundary failure in a system component, not a cosmetic bug or lab-only edge case. If a hostile app is present, the exploit chain removes meaningful sandbox friction and can materially strengthen mobile malware operations against corporate data on the device.
What to do — in priority order.
- Block untrusted app installs — Enforce managed Play allow-lists, disable unknown sources, and restrict developer-mode pathways because the prerequisite for this CVE is attacker-controlled code on the device. For a MEDIUM verdict there is no mitigation SLA — go straight to the 365-day remediation window, but this control should already be baseline for Android fleet hygiene.
- Harden mobile threat telemetry — Tune MTD/EDR/EMM to alert on sideloaded apps, low-prevalence packages, unexpected
adbuse, and suspicious launches into system components such as DocumentsUI. This does not patch the bug, but it raises the odds of catching the only realistic precondition before attackers can use the deputy flaw. - Segment high-risk Android cohorts — Prioritize executives, admins, developers, and users with broad SaaS/mobile access for update verification because the exploit is per-device and value-driven. On those cohorts, confirm both Android patch state and Google Play system update state rather than trusting one date string alone.
- Reduce local code-exec paths — Turn off unnecessary
adbin production, restrict test-signing exceptions, and review MDM policies that permit unmanaged app installs. This directly attacks the exploit chain's first step, which matters more than overreacting to the CVSS label.
- A perimeter IDS/IPS will not help much because this is not a network-reachable service vulnerability.
- A WAF is irrelevant; there is no HTTP request path to protect.
- MFA does not stop the exploit itself because the issue is an on-device privilege pivot inside Android, not an authentication workflow weakness.
- Relying only on the Android security patch date can miss Mainline-delivered component state; this component is called out under Google Play system updates.
Crowdsourced verification payload.
Run this from an auditor workstation that has adb installed and USB debugging authorized on the target Android device. Invoke it as bash check-cve-2026-0013.sh SERIAL or omit the serial for a single attached device; no root is required, but adb shell access is required.
#!/usr/bin/env bash
# check-cve-2026-0013.sh
# Best-effort verifier for CVE-2026-0013 on Android devices via adb.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=usage/adb error
set -u
SERIAL_ARG="${1:-}"
ADB_BASE=(adb)
if [[ -n "$SERIAL_ARG" ]]; then
ADB_BASE+=( -s "$SERIAL_ARG" )
fi
run_adb() {
"${ADB_BASE[@]}" "$@"
}
# Basic connectivity check
if ! run_adb get-state >/dev/null 2>&1; then
echo "UNKNOWN: adb device not reachable"
exit 3
fi
# Helper to trim CRs often returned by adb shell
trim() {
tr -d '\r'
}
ANDROID_VERSION=$(run_adb shell getprop ro.build.version.release 2>/dev/null | trim)
SDK_INT=$(run_adb shell getprop ro.build.version.sdk 2>/dev/null | trim)
SEC_PATCH=$(run_adb shell getprop ro.build.version.security_patch 2>/dev/null | trim)
DOC_PKG=""
# Find likely DocumentsUI package name
for pkg in com.android.documentsui com.google.android.documentsui; do
if run_adb shell pm path "$pkg" >/dev/null 2>&1; then
DOC_PKG="$pkg"
break
fi
done
DOC_VER=""
if [[ -n "$DOC_PKG" ]]; then
DOC_VER=$(run_adb shell dumpsys package "$DOC_PKG" 2>/dev/null | trim | awk -F= '/versionName=/{print $2; exit}')
fi
# Try to read a visible Google Play system update date from secure settings if present.
# This is not guaranteed across OEMs, so absence is normal.
GPSU_DATE=$(run_adb shell settings get secure "android_version_mainline" 2>/dev/null | trim)
if [[ "$GPSU_DATE" == "null" ]]; then
GPSU_DATE=""
fi
# Normalize version gating from vendor advisory/NVD: Android 14, 15, 16 affected.
AFFECTED_OS=0
case "$ANDROID_VERSION" in
14*|15*|16*) AFFECTED_OS=1 ;;
*) AFFECTED_OS=0 ;;
esac
if [[ $AFFECTED_OS -eq 0 ]]; then
echo "PATCHED: Android version '$ANDROID_VERSION' is outside the documented affected range (14/15/16)"
exit 0
fi
# Best-effort patch decision:
# - If security patch level is >= 2026-03-01, treat as PATCHED.
# - Else if we cannot establish component patching, return UNKNOWN.
# - Else if affected OS and clearly pre-bulletin, return VULNERABLE.
# Note: This CVE sits in a Mainline-associated component, so security patch date alone is imperfect.
compare_dates() {
# lexical compare works on YYYY-MM-DD
local left="$1"
local right="$2"
[[ "$left" > "$right" || "$left" == "$right" ]]
}
TARGET_DATE="2026-03-01"
if [[ -n "$SEC_PATCH" ]]; then
if compare_dates "$SEC_PATCH" "$TARGET_DATE"; then
echo "PATCHED: security patch level '$SEC_PATCH' is at or after $TARGET_DATE; package='$DOC_PKG' version='${DOC_VER:-unknown}'"
exit 0
fi
fi
# If the device is in the affected OS family and clearly behind the bulletin date,
# call it vulnerable unless there is evidence of newer component delivery.
if [[ -n "$SEC_PATCH" && "$SEC_PATCH" < "$TARGET_DATE" ]]; then
if [[ -n "$GPSU_DATE" ]]; then
echo "UNKNOWN: security patch '$SEC_PATCH' is before $TARGET_DATE, but Google Play system update state '$GPSU_DATE' needs manual validation for Mainline-delivered DocumentsUI; package='$DOC_PKG' version='${DOC_VER:-unknown}'"
exit 2
else
echo "VULNERABLE: affected Android version '$ANDROID_VERSION' with security patch '$SEC_PATCH' before $TARGET_DATE; package='$DOC_PKG' version='${DOC_VER:-unknown}'"
exit 1
fi
fi
# No usable patch signal beyond OS range.
echo "UNKNOWN: affected Android version '$ANDROID_VERSION'; unable to prove Mainline/DocumentsUI fix state. security_patch='${SEC_PATCH:-unknown}' package='$DOC_PKG' version='${DOC_VER:-unknown}' play_system='${GPSU_DATE:-unknown}'"
exit 2
If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.