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

In multiple functions of mem_protect

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

This is a master key hidden behind a locked server-room door

CVE-2026-0038 is a logic error in Android's hypervisor memory-protection code path, with fixes tied to mem_protect.c and related ARM64/pKVM memory-tagging changes. Google shipped it in the March 5, 2026 Android security patch level, and the March 2026 bulletin places it in the Kernel/Hypervisor section; affected Android branches in the bulletin are 14, 15, 16, and 16-qpr2 until they take that patch level, while Samsung says its SMR-MAR-2026 package includes the fix.

The vendor baseline overstates enterprise urgency for most fleets. Yes, successful exploitation is catastrophic on-device, but this is still a *local* bug in a specialized pKVM/AVF path, with no KEV listing, extremely low EPSS, no public exploit found in reviewed sources, and meaningful reachability friction because many real deployments neither expose arbitrary VM creation to apps nor run the relevant protected-VM workflows at scale.

"Big impact on paper, but it needs local code and a narrow Android hypervisor path to matter"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land code on the handset

The attacker first needs code execution on the target device, typically via a malicious APK, sideloaded package, abused work profile, or physical/ADB access. CVSS says PR:N, but that only means the exploit path doesn't require prior *OS privileges*; it still requires the attacker to get code running locally on the device.
Conditions required:
  • Ability to run attacker-controlled code on the Android device
  • Target device is still on a pre-2026-03-05 patch level or missing OEM backport
Where this breaks in practice:
  • Managed enterprise Android fleets commonly block sideloading and unknown sources
  • Google Play Protect, MTD agents, and EMM app allowlists reduce malicious app delivery
  • ADB is often disabled outside repair or developer workflows
Detection/coverage: MDM/EMM and mobile threat defense can usually see unapproved app installs and device developer-state changes, but they will not prove exploitability of the hypervisor bug itself.
STEP 02

Reach the pKVM/AVF attack surface

The vulnerable logic sits in Android's hypervisor/pKVM memory-protection path, not a generic app framework component. Based on Google's patch series and AVF documentation, exploitation likely requires reaching virtualization flows such as guest creation, memory donation, or guest state transitions through KVM/AVF-style operations.
Conditions required:
  • ARM64 device with Android virtualization support in scope
  • Attacker can exercise the relevant virtualization code path, directly or indirectly
Where this breaks in practice:
  • Google documents that only apps with pVM permissions are allowed to create or inspect pVMs
  • Many devices support Android generally but do not expose practical pKVM workflows to arbitrary third-party apps
  • If the device does not support protected VMs, exploitability becomes uncertain rather than assumed
Detection/coverage: There is no mainstream scanner that validates this reachability condition from the network. Device telemetry around VM creation or MANAGE_VIRTUAL_MACHINE grants is more useful than generic vuln scanning.
STEP 03

Trigger flawed memory-protection logic

The attacker then abuses the broken logic in mem_protect.c and companion fixes around guest memory donation and memory-tagging state. Google fix commits show hardening against donation of non-memory regions and against unsafe Memory Tagging behavior for guests, which strongly suggests exploitation involves carefully crafted guest/memory state rather than a one-shot generic app bug.
Conditions required:
  • Vulnerable kernel/hypervisor build
  • Working exploit chain for the specific OEM kernel branch
Where this breaks in practice:
  • No public PoC or weaponized exploit was found in reviewed sources as of 2026-05-29
  • OEM kernel variance makes reliable cross-fleet exploitation harder
  • Hypervisor exploitation tends to be brittle even when CVSS marks complexity low
Detection/coverage: Exploit development activity is mostly invisible to defenders unless the chain crashes the device, trips kernel panic logs, or causes unusual AVF/virtualization behavior.
STEP 04

Pivot to privileged device compromise

If the exploit works, the payoff is full compromise of confidentiality, integrity, and availability on the device, matching the CVSS impact metrics. At that point the attacker can likely escape the intended isolation boundary and take kernel/hypervisor-level control, turning an app foothold into total device compromise.
Conditions required:
  • Successful arbitrary code execution in the vulnerable privileged context
Where this breaks in practice:
  • Blast radius is typically one device at a time, not a remote one-to-many service compromise
  • Enterprise impact still depends on what corporate data and identities live on the handset
Detection/coverage: Post-exploitation is more likely to be caught by root/integrity attestation failures, unusual persistence artifacts, or MTD signals than by pre-exploit network controls.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public exploitation signal found in reviewed sources, and Google did not single out this CVE for active exploitation in the March 2026 bulletin.
Public PoC / weaponizationNo public PoC found in reviewed Google/GitHub/web results as of 2026-05-29; this is an inference from source review, not a vendor statement.
EPSS0.00012 from the user-supplied intel block — effectively negligible for prioritization.
KEV statusNot listed in the CISA KEV catalog as of 2026-05-29.
CVSS vector reality checkCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H means no prior OS privilege is needed *once code is local*, but the attack is still post-initial-access because it is not remotely reachable.
Affected scopeGoogle's March 2026 bulletin lists Kernel / Hypervisor impact and shows updated AOSP versions for Android 14, 15, 16, and 16-qpr2 on the March 5, 2026 patch train.
Fixed versionsTake Android Security Patch Level 2026-03-05 or later. Samsung says SMR-MAR-2026 includes CVE-2026-0038.
Exposure populationThis is not an internet-facing service. Shodan/Censys/FOFA-style exposure data is basically irrelevant here; the meaningful exposure question is whether the fleet runs vulnerable pKVM/AVF code paths on-device.
Disclosure date2026-03-02 in NVD / Android records.
Research / attributionNo public discoverer credit was surfaced in the reviewed advisories. The visible Android fix authors include Fuad Tabba and Will Deacon, but those are patch authors, not necessarily the original reporters.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.6/10)

The single biggest downward pressure is attacker position: this is a local-on-device bug in a specialized Android hypervisor path, so it is already *after* initial code execution. The second decisive factor is exposure narrowing — pKVM/AVF reachability is materially smaller than the raw Android install base implied by the vendor score.

HIGH Local-only attacker position is a major severity reducer
MEDIUM pKVM/AVF reachability is narrower than generic Android app attack surface
MEDIUM No public exploitation or PoC found in reviewed sources as of 2026-05-29

Why this verdict

  • Start at 8.4 HIGH: the CVSS impact is real if reached; kernel/hypervisor code exec is full device compromise.
  • Drop for attacker position: AV:L means this is *post-initial-access*; the attacker already has code on the handset, which is a major real-world filter for enterprise fleets.
  • Drop again for exposure fraction: the vulnerable area is the Android hypervisor/pKVM memory-protection path, not a broadly reachable app framework API; many fleets will never meaningfully expose that path to arbitrary third-party apps.
  • Drop again for modern controls: managed Play-only installs, app allowlisting, Play Protect, MTD, and disabled sideloading/ADB should stop or at least sharply reduce Step 1 in normal deployments.
  • Drop again for threat intel: no KEV, extremely low EPSS, and no public PoC found means there is no current evidence that attackers are spending time on this at scale.

Why not higher?

It is not higher because this is not remotely reachable and does not create a one-to-many enterprise blast radius on its own. The exploit chain depends on local code execution plus a relatively narrow virtualization/hypervisor path, which is exactly the kind of compound friction that should drag a vendor CVSS score down in operational prioritization.

Why not lower?

It is not lower because the impact is still total on the affected device if someone can hit the path. Also, Android fleets are patch-laggy by nature, and a local app-to-kernel/hypervisor escape remains meaningful wherever sensitive corporate identities, MFA tokens, or managed data live on the handset.

05 · Compensating Control

What to do — in priority order.

  1. Enforce managed app sources only — Block sideloading, unknown sources, and non-approved app stores through EMM/MDM policy. This directly attacks the main prerequisite — local attacker code — and is the highest-value compensating control; for a MEDIUM verdict there is no noisgate mitigation SLA, so push it in the next mobile policy cycle if not already standard.
  2. Disable ADB and developer features on production devices — Remove easy local execution paths and reduce physical/debug abuse. Enforce this via device compliance policy and exception-only enrollment; again, no mitigation SLA for MEDIUM, but this should already be baseline mobile hardening.
  3. Prioritize pKVM-capable devices for validation — Inventory devices where protected VMs are supported and where virtualization use cases are enabled, then verify patch status there first. This narrows the real exposure set and lets you focus limited testing effort before broad remediation within the 365-day patch window.
  4. Quarantine unlocked or integrity-failed devices — Google's AVF security model treats unlocked devices as untrusted for pVM security. Use device attestation/compliance to block corporate access from rooted, unlocked, or integrity-failing handsets while you close patch gaps.
What doesn't work
  • Perimeter WAF/NGFW controls do not help; this is not a network-reachable service vulnerability.
  • Generic internet exposure scanning does not help; Shodan/Censys visibility is irrelevant for a local Android hypervisor bug.
  • Email filtering alone is insufficient; it may block one delivery route, but it does nothing against sideloading, preinstalled malware, or physical/ADB-assisted local execution.
06 · Verification

Crowdsourced verification payload.

Run this on an auditor workstation that has adb and USB/network debugging access to the target Android device. Invoke it as bash check-cve-2026-0038.sh <device-serial> or omit the serial if only one device is attached; it needs no root on the device, only adb shell access.

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

set -u

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

need_cmd() {
  command -v "$1" >/dev/null 2>&1
}

if ! need_cmd adb; then
  echo "UNKNOWN: adb not found in PATH"
  exit 2
fi

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

# Basic connectivity check
if ! "${ADB[@]}" get-state >/dev/null 2>&1; then
  echo "UNKNOWN: no reachable adb device"
  exit 2
fi

SPL="$(run_prop ro.build.version.security_patch)"
PKVM="$(run_prop ro.boot.hypervisor.protected_vm.supported)"
ABI="$(run_prop ro.product.cpu.abi)"
MODEL="$(run_prop ro.product.model)"
BUILD="$(run_prop ro.build.fingerprint)"

# Normalize booleans
case "$PKVM" in
  true|1|yes|y|on) PKVM_NORM="true" ;;
  false|0|no|n|off|"") PKVM_NORM="false" ;;
  *) PKVM_NORM="unknown" ;;
esac

TARGET_SPL="2026-03-05"

echo "Model: ${MODEL:-unknown}"
echo "ABI: ${ABI:-unknown}"
echo "Security Patch Level: ${SPL:-unknown}"
echo "Protected VM supported: ${PKVM_NORM}"
echo "Build: ${BUILD:-unknown}"

# SPL should be YYYY-MM-DD and can be compared lexicographically.
if [[ -z "$SPL" || ! "$SPL" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
  echo "UNKNOWN"
  exit 2
fi

if [[ "$SPL" > "$TARGET_SPL" || "$SPL" == "$TARGET_SPL" ]]; then
  echo "PATCHED"
  exit 0
fi

# Pre-March-05 patch level. Now narrow based on likely relevant platform support.
if [[ "$PKVM_NORM" == "true" && "$ABI" == arm64* ]]; then
  echo "VULNERABLE"
  exit 1
fi

# Older SPL but no clear proof the relevant pKVM path is present/reachable.
# Conservative outcome is UNKNOWN rather than PATCHED.
echo "UNKNOWN"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, pull your Android inventory and split it into three buckets: devices already at 2026-03-05 SPL or later, devices below that level, and devices where pKVM/virtualization support is unknown. This gets a MEDIUM reassessment, so there is no noisgate mitigation SLA — go straight to the 365-day remediation window; use that time to verify exposure on pKVM-capable devices first, keep managed-app-only controls enforced, and complete patching to the vendor-fixed March 2026 level within the noisgate remediation SLA of 365 days.

Sources

  1. Android Security Bulletin — March 2026
  2. NVD entry for CVE-2026-0038
  3. Android kernel fix commit: prevent donation of non-memory regions
  4. Android kernel fix commit: disable Memory Tagging for guests if unsupported
  5. Android Virtualization Framework architecture
  6. Android Virtualization Framework security model
  7. Samsung Mobile Security Bulletin
  8. CISA Known Exploited Vulnerabilities Catalog
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.