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

In multiple locations

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

Like a rigged video file that only detonates in a very specific projector

CVE-2026-0006 is a heap-based buffer overflow in Android's Media Codecs path, tied to the APV decoder (libopenapv) used by the Media Codecs Mainline component. Google lists it in the System section of the March 2026 Android bulletin and maps it to Android 16; the same bulletin also says it is included in Google Play system updates under Media Codecs. The AOSP fix for bug 423894847 upgrades external/libopenapv to v0.2.0.0, so the practical affected range is Android 16 devices before the 2026-03-01 security patch level / pre-fix Media Codecs module, with upstream libopenapv builds before that upgrade considered suspect.

The vendor's 9.8/CRITICAL score is technically understandable because the bug is modeled as unauthenticated, no-click, network-deliverable RCE. In the field, though, this is not an internet-facing server bug and not a whole-fleet Android bug: it needs the right Android generation, the APV-capable codec path, and a delivery channel that causes preview or indexing of a crafted media file. That keeps it serious for mobile fleets, but it does not deserve the same operational urgency as a broadly exposed edge appliance or mass-scannable server RCE.

"Zero-click Android RCE is ugly, but this one hits a narrow slice of Android 16 devices rather than your whole fleet"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Build a malicious APV-in-MP4 lure

A public research repo shows weaponization using generate_overflow_mp4.py and related PoC code against Android's APV decoding path. The exploit idea is to craft metadata and frame values that cause the decoder to allocate for one size and decode another, producing a heap overwrite in the media stack.
Conditions required:
  • Attacker can generate or obtain a crafted APV/MP4 sample
  • Target device must include the vulnerable Android 16 Media Codecs/APV path
Where this breaks in practice:
  • APV is uncommon compared with JPEG/H.264, so attacker content looks less natural in many enterprise workflows
  • A vulnerable population exists only where Android 16 plus the affected Media Codecs module is present
Detection/coverage: Static network scanners do not help here. Artifact-based detection is possible in sandboxes or mobile detonation pipelines that open media files and watch for codec crashes.
STEP 02

Land the file in a previewable workflow

The attacker still has to get the file onto the handset through email, chat, browser download, MDM content sync, or another app that stores media locally. The attractive part of the bug is the claimed no user interaction path: if the receiving app or the OS generates thumbnails or metadata previews, the victim may never need to tap the file.
Conditions required:
  • Attacker can reach the user through a content-delivery channel
  • The receiving app or OS path preserves the malicious media sufficiently for the decoder to see it
Where this breaks in practice:
  • Secure email, chat, CASB, and content-disarm controls can block or rewrap unfamiliar attachments
  • Some apps do not auto-preview uncommon formats or strip previews server-side
Detection/coverage: Mail and collaboration platforms may log attachment delivery. Mobile Threat Defense products sometimes flag suspicious media delivery, but coverage is inconsistent.
STEP 03

Trigger Android's Media Codecs path

Once the file is indexed, previewed, or opened by a component that relies on the Media Codecs Mainline module, Android can invoke the APV decoder. Google explicitly places this CVE in the Media Codecs Mainline set, which is important because the attack surface is tied to a specific media-processing path rather than to every Android app indiscriminately.
Conditions required:
  • The file reaches a code path that invokes libcodec2_soft_apvdec / libopenapv
  • The device has not yet received the March 2026 fix level
Where this breaks in practice:
  • Not every app or OEM build will hit the vulnerable decoder automatically
  • Some enterprise mobile configs reduce local media indexing, cloud previewing, or attachment persistence
Detection/coverage: Best host-side evidence is crash/tombstone telemetry referencing mediaswcodec, libcodec2_soft_apvdec, or libopenapv. MDM inventory of security patch level is much more reliable than exploit-attempt detection.
STEP 04

Convert heap corruption into code execution

The heap overflow must still be made reliable under modern Android hardening and codec-process constraints. Public analysis indicates this is practical enough to reproduce, but real-world post-corruption reliability still depends on memory layout, sandbox posture, and OEM implementation details.
Conditions required:
  • The crafted file successfully reaches the vulnerable decoder path
  • The attacker can achieve a stable corruption primitive on the target build
Where this breaks in practice:
  • Modern mitigations such as allocator hardening, sandboxing, SELinux, and device-specific differences reduce one-shot exploit reliability
  • Impact is usually bounded to a single handset unless the attacker chains further privilege escalation or data-theft actions
Detection/coverage: Look for repeated media-service crashes, tombstones, and MTD alerts around suspicious media processing. Nessus-style network vuln scanning will miss this entirely.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo authoritative exploitation evidence found in the sources reviewed. Not present in CISA KEV; treat third-party claims of active exploitation as unverified.
Proof-of-concept availabilityYes. Public patch-analysis and reproduction material exists in mobilehackinglab/CVE-2026-0006-openapv-poc, including crafted media generation and Android test instructions.
EPSS0.00049 from the user-provided intel block — very low predicted exploitation probability despite the scary bug class.
KEV statusNo KEV listing found in the CISA catalog page checked for this assessment.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — vendor model assumes remote, unauthenticated, no-click compromise with full CIA impact.
Affected versionsGoogle maps the issue to Android 16 in the March 2026 bulletin. The bulletin also places it in Google Play system updates → Media Codecs.
Fixed versionsAndroid says security patch level 2026-03-01 or later addresses the 2026-03-01 set. The linked AOSP fix for bug 423894847 upgrades libopenapv to v0.2.0.0.
Scanning / exposure dataThis is not meaningfully Shodan/Censys/FOFA-addressable because the vulnerable surface is a client-side Android media codec, not a bannered internet service. Exposure should be measured with MDM inventory and patch-level reporting, not perimeter scans.
Disclosure date2026-03-02 in NVD/CVE publication history; Android bulletin is the March 2026 bulletin and ties the fix to the 2026-03-01 patch level.
Reporter / researcherGoogle's bulletin does not name the original reporter. Public PoC authors explicitly say they are reproducing the issue, not claiming original discovery.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to HIGH (8.1/10)

The decisive downward pressure is population reachability: this is an Android 16 Media Codecs/APV bug, not a mass-exposed edge service or universal Android flaw. It stays HIGH because once the right device sees the right file, the path is still unauthenticated, no-click RCE with public reproduction material.

HIGH Affected component and Android patch mapping
MEDIUM Exact real-world exploit reliability across OEM builds
MEDIUM Reassessed severity bucket

Why this verdict

  • Start at 9.8 because the vendor model is the worst-case one: unauthenticated, no-click, remote-triggered code execution with high impact.
  • Narrowed population: -1.0 because Google maps this to Android 16 and the Media Codecs/APV path. That is a much smaller exposed population than the CVSS label implies in a vacuum.
  • Delivery and trigger friction: -0.5 because the attacker still has to land a crafted media file into a preview/indexing workflow that actually invokes the vulnerable decoder; secure mail/chat controls and the rarity of APV media cut reachable victims.
  • Public PoC prevents a deeper downgrade: -0.2 only because exploitation is not purely theoretical anymore. Once a target is confirmed vulnerable, attacker development cost is materially lower.

Why not higher?

I am not calling this CRITICAL operationally because there is no authoritative active-exploitation signal in the sources reviewed, no KEV listing, and no evidence of broad internet-scale reach. This is a dangerous endpoint bug, but the exposed population is too narrow to justify the same bucket as a wormable edge device RCE.

Why not lower?

I am not dropping it to MEDIUM because the core path is still no-auth, no-click RCE on a managed endpoint class, and public reproduction exists. If your mobile fleet includes exposed Android 16 devices, a single malicious file can become a device-compromise event without the user doing anything obviously wrong.

05 · Compensating Control

What to do — in priority order.

  1. Inventory Android 16 exposure — Use MDM to identify all devices on Android 16 and collect both the Android security patch level and Google Play system update state. Do this first and complete it within 30 days so you can separate truly exposed devices from the rest of the mobile fleet.
  2. Block risky media delivery paths — Temporarily block or quarantine uncommon video/container formats and externally sourced media attachments in email, chat, and managed content channels where business impact is acceptable. For a HIGH verdict, put this control in place within 30 days on the cohorts you cannot patch immediately.
  3. Restrict unmanaged file handling — Use MDM/app protection policy to limit open-in flows, sideloaded apps, and unmanaged download paths that feed media into local preview/indexing. This reduces the odds that a crafted file ever reaches the vulnerable decoder and should be enforced within 30 days for exposed device groups.
  4. Hunt media-service crashes — Collect crash telemetry from mobile threat defense, EMM, or support tooling and alert on repeated mediaswcodec / libcodec2_soft_apvdec / libopenapv failures after receiving media. Stand this up within 30 days as a compensating detection while the fleet is being remediated.
What doesn't work
  • A WAF does not help; the vulnerable code runs in a client-side Android media decoder, not behind an HTTP server you control.
  • Perimeter vulnerability scanning does not help; there is no reliable internet-facing fingerprint for this codec path.
  • MFA does not materially reduce risk; the exploit path is media delivery and auto-processing, not account takeover.
  • Signature-only AV is weak here because malicious media can be novel, encrypted in transit, or container-repacked without stable signatures.
06 · Verification

Crowdsourced verification payload.

Run this on an auditor workstation with adb installed and USB/Wi-Fi debugging authorized to the Android device. Invoke it as ./check-cve-2026-0006.sh <device-serial> or just ./check-cve-2026-0006.sh for the only attached device; no root is required, but you do need permission to query device properties over adb.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2026-0006.sh
# Verifies likely exposure to CVE-2026-0006 on an Android device over adb.
# Exit codes:
#   0 = PATCHED
#   1 = VULNERABLE
#   2 = UNKNOWN / unable to determine

set -euo pipefail

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

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

if ! command -v adb >/dev/null 2>&1; then
  fail_unknown "adb not found in PATH"
fi

STATE="$(${ADB[@]} get-state 2>/dev/null || true)"
if [[ "$STATE" != "device" ]]; then
  fail_unknown "no authorized adb device available"
fi

getprop_safe() {
  ${ADB[@]} shell getprop "$1" 2>/dev/null | tr -d '\r'
}

PATCH_LEVEL="$(getprop_safe ro.build.version.security_patch)"
RELEASE="$(getprop_safe ro.build.version.release)"
SDK="$(getprop_safe ro.build.version.sdk)"
PLAY_PATCH="$(getprop_safe ro.build.version.security_patch)"

if [[ -z "$PATCH_LEVEL" ]]; then
  fail_unknown "could not read security patch level"
fi

# Check whether the APV decoder appears present in the Media Codecs APEX.
HAS_APV_DECODER="no"
if ${ADB[@]} shell 'test -f /apex/com.android.media.swcodec/lib64/libcodec2_soft_apvdec.so || test -f /apex/com.android.media.swcodec/lib/libcodec2_soft_apvdec.so' >/dev/null 2>&1; then
  HAS_APV_DECODER="yes"
fi

# Basic date comparison works because patch levels are YYYY-MM-DD.
# Android bulletin says 2026-03-01 or later addresses this bulletin set.
THRESHOLD="2026-03-01"

# Heuristic rules:
# 1) If APV decoder is absent, device is likely not exposed to this specific codec path.
# 2) If patch level >= 2026-03-01, report PATCHED.
# 3) If APV decoder is present and patch level < 2026-03-01, report VULNERABLE.
# 4) Otherwise UNKNOWN.

echo "Device release: ${RELEASE:-unknown}"
echo "Device SDK: ${SDK:-unknown}"
echo "Security patch level: $PATCH_LEVEL"
echo "APV decoder present: $HAS_APV_DECODER"

if [[ "$HAS_APV_DECODER" == "no" ]]; then
  echo "PATCHED: APV decoder not present; this device does not appear to expose the vulnerable codec path"
  exit 0
fi

if [[ "$PATCH_LEVEL" > "$THRESHOLD" || "$PATCH_LEVEL" == "$THRESHOLD" ]]; then
  echo "PATCHED: security patch level is $PATCH_LEVEL (>= $THRESHOLD)"
  exit 0
fi

if [[ "$PATCH_LEVEL" < "$THRESHOLD" ]]; then
  echo "VULNERABLE: APV decoder present and security patch level $PATCH_LEVEL is older than $THRESHOLD"
  exit 1
fi

fail_unknown "unable to classify device"
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, have your mobile team pull an MDM report for Android 16 devices, isolate the subset that still shows a pre-2026-03-01 patch level or uncertain Media Codecs update status, and put temporary attachment/content controls around externally sourced media for that cohort. For this HIGH rating, the noisgate mitigation SLA is within 30 days for compensating controls on exposed devices, and the noisgate remediation SLA is within 180 days for the actual March 2026 Android / Google Play system update; in practice, any executive or high-risk mobile user group should be closed out well before the long tail.

Sources

  1. Android Security Bulletin—March 2026
  2. NVD entry for CVE-2026-0006
  3. AOSP fix commit upgrading libopenapv to v0.2.0.0
  4. OpenAPV upstream repository
  5. Public patch analysis / reproduction repo
  6. CISA Known Exploited Vulnerabilities Catalog
  7. FIRST EPSS overview
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.