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

In __host_check_page_state_range of mem_protect

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

This is a bad brake failure, but only on the cars that already made it onto the test track

CVE-2026-0030 is an out-of-bounds write in Android's mem_protect.c, specifically the pKVM/virtualization memory-protection path around __host_check_page_state_range, where integer overflow on addr + size was not rejected before range checking. Google fixed it by adding check_add_overflow() guards in the relevant mem_protect functions. The March 2026 Android Security Bulletin lists it under Kernel Components / pKVM, which means this is not a generic app-layer bug; it affects Android builds carrying the vulnerable pKVM hypervisor path and is remediated in the March 2026 security patch train.

The vendor's 8.4/HIGH score is technically defensible in a lab because successful exploitation can yield local privilege escalation with no user interaction. In real enterprise operations, though, this is overstated: the attacker still needs code execution on the device first, then needs the vulnerable pKVM path to be present and reachable on that device class. That combination makes this a post-initial-access kernel/hypervisor escalation issue, not the kind of bug that should displace remotely reachable or actively exploited fleet risks.

"Serious on the right Android devices, but this is post-compromise and pKVM-scoped, not a fleet-wide fire drill"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land code execution on the device

The attacker first needs local code execution in Android user space, typically via a malicious APK, sideloaded tooling, or a separate app-level exploit. There is no network-reachable entry point in this CVE itself; the bug starts paying off only after an app or process is already running on the target device.
Conditions required:
  • Attacker can run code locally on the Android device
  • Target device allows malicious app delivery, sideloading, or compromise through another bug
Where this breaks in practice:
  • Managed Android fleets often restrict app sources through MDM/EMM allowlisting
  • Play Protect, app vetting, and mobile threat defense can kill the chain before this CVE matters
  • This prerequisite already implies partial compromise
Detection/coverage: Most vuln scanners will not directly detect exploitability here; mobile EDR/MTD and EMM telemetry are better at catching the prerequisite malicious app or shell activity.
STEP 02

Reach the pKVM mem_protect path

The exploit then has to interact with the affected pKVM mem_protect HVC path in the Android virtualization stack. Public patch metadata ties the flaw to Protected KVM (pKVM) rather than a broad Android userspace component, so only devices with the relevant virtualization support and code path meaningfully exposed are candidates.
Conditions required:
  • Device kernel includes the vulnerable pKVM code path
  • Protected virtualization support is present on the device/SoC
Where this breaks in practice:
  • Not every Android device ships pKVM in the same way
  • Even where pKVM exists, enterprise users may never exercise protected VM workflows
  • Fleet exposure is narrower than a generic Android kernel LPE
Detection/coverage: Inventory can approximate exposure by checking Android security patch level and whether protected VM support is enabled or advertised.
STEP 03

Trigger the integer-overflowed bounds check

A local exploit would pass crafted addr and size values so addr + size wraps, bypassing the intended range validation and enabling out-of-bounds memory operations in the mem_protect path. Google's fix adds explicit check_add_overflow() handling, which strongly suggests the exploit primitive depends on arithmetic wraparound rather than a wide, easy-to-hit parser bug.
Conditions required:
  • Attacker can control the relevant range inputs into the vulnerable path
  • Kernel build lacks the overflow-checking fix
Where this breaks in practice:
  • Kernel/hypervisor exploitation is architecture- and build-sensitive
  • Reliable corruption-to-EoP often requires device-specific exploit tuning
  • No public PoC was found during this assessment
Detection/coverage: Static version detection is feasible from patch level; runtime exploit detection is weak unless kernel crash telemetry or vendor-specific hypervisor logging is available.
STEP 04

Convert corruption into privilege escalation

If the memory corruption is made reliable, the attacker can escalate from local code execution into higher privileges on the device, potentially defeating application sandboxing and increasing control over the host environment. Because this sits in a memory-protection/hypervisor-adjacent area, impact on a successfully hit device is still severe even if the reachable population is not.
Conditions required:
  • Successful memory corruption in the vulnerable kernel component
  • Exploit chain can translate corruption into stable privilege gain
Where this breaks in practice:
  • Modern hardening and exploit mitigations still raise reliability cost
  • The blast radius is one compromised device, not a remotely reachable server farm
Detection/coverage: Mobile EDR may see follow-on privilege abuse; vulnerability scanners generally only infer exposure from build metadata.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo evidence of active exploitation found in primary sources reviewed; not KEV-listed.
KEV statusAbsent from CISA Known Exploited Vulnerabilities Catalog as checked during this assessment.
Proof-of-concept availabilityNo public PoC located in the sources reviewed; patch diff is public, so exploit development is possible, but there is no visible commodity weaponization yet.
EPSS0.00007 from supplied intel; percentile was not confirmed from a primary EPSS record during this assessment.
CVSS vector interpretationCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H means local only, no privileges required once code runs locally, and potentially full CIA impact on the affected device.
Affected scopeAndroid kernel / pKVM (mem_protect.c) rather than a general Android app component; practical exposure is limited to builds carrying the vulnerable pKVM path.
Fixed inAddressed in the March 2026 Android Security Bulletin; operationally, treat devices at security patch level 2026-03-05 or later as remediated unless an OEM states otherwise.
Patch detailsPublic fixes add check_add_overflow() around addr + size style calculations in mem_protect functions, blocking the wraparound condition the bug relied on.
Scanning / exposure dataThis is not an internet-exposed service bug. Shodan/Censys-style external scanning is largely irrelevant; exposure must be measured from mobile inventory, build fingerprints, and patch-level telemetry instead.
DisclosureDisclosed 2026-03-02 by Android/Google; bulletin publication is 2026-03-01 for the March 2026 cycle.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.9/10)

The decisive factor is that this bug is post-compromise: an attacker must already have local code execution on the Android device before CVE-2026-0030 is relevant. On top of that, the vulnerable path is tied to pKVM, which sharply narrows the reachable population compared with a general Android kernel flaw.

HIGH Technical understanding of the flaw and patch mechanics
MEDIUM Real-world reachable population across mixed OEM Android fleets
MEDIUM Absence of public exploitation as of the sources reviewed

Why this verdict

  • Downgrade for attacker position: vendor CVSS starts at 8.4, but AV:L here means the attacker needs to already run code on the device. That is a major real-world friction because it assumes an earlier compromise stage.
  • Downgrade for population narrowing: this is a pKVM / Kernel Components issue, not a broad remotely reachable Android service. Only a subset of Android devices and usage patterns will meaningfully expose the vulnerable path.
  • Downgrade for threat signal: KEV is negative, EPSS is extremely low (0.00007), and no public PoC was found in reviewed sources. That does not make it safe, but it does argue against treating it like an urgent fleet-wide crisis.

Why not higher?

It is not higher because there is no remote entry point in the CVE itself and no sign of active exploitation pressure. The pKVM-specific placement further limits the real exposed population, so this should not outrank remotely exploitable or widely weaponized enterprise vulnerabilities.

Why not lower?

It is not lower because successful exploitation can still convert a local foothold into full device compromise on affected builds. Kernel/hypervisor-adjacent memory corruption remains high-impact on any device where the chain is available, especially if an attacker is already past app-level controls.

05 · Compensating Control

What to do — in priority order.

  1. Enforce managed app allowlisting — Block untrusted APK install paths and restrict sideloading through EMM/MDM policy. Because this is a post-compromise local EoP, reducing the chance of malicious code landing on the device is the best compensating control; for a MEDIUM finding there is no mitigation SLA, so focus on applying this where it is already part of your baseline rather than spinning up an emergency exception process.
  2. Prioritize pKVM-capable devices — Use inventory to identify devices that advertise protected VM support or that are on Android builds consuming the March 2026 kernel-component bulletin. This lets you narrow remediation to the slice of the fleet most likely to carry the vulnerable path; with MEDIUM, there is no mitigation SLA — go straight to the remediation window unless your environment treats mobile local EoP as a higher business risk.
  3. Harden developer and test devices — Devices used for virtualization, development, research, or broader user-installed software should be patched first because they are more likely to meet the local-code-execution prerequisite. Apply the same application control and USB-debugging restrictions there, even though the formal bucket here remains MEDIUM.
  4. Monitor for local exploit precursors — Track app installs from non-approved sources, adb usage, jailbreak/root indicators, and abnormal security posture changes on managed Android endpoints. These signals catch the attacker stage that has to happen before CVE-2026-0030 can be exercised.
What doesn't work
  • Perimeter controls like WAFs, email gateways, and external attack-surface monitoring do not address the vulnerable condition because this CVE is not network-reachable on its own.
  • Pure patch-priority sorting by vendor CVSS alone overstates urgency here; the local + pKVM-scoped prerequisites are the main reason this gets downgraded.
  • Internet-wide scanning will not find your exposed population; this is an asset inventory and mobile patch-level problem, not a Shodan problem.
06 · Verification

Crowdsourced verification payload.

Run this on the target Android device through adb shell or your EMM's remote shell. Example: adb shell sh /data/local/tmp/cve-2026-0030-check.sh. No root is required for the patch-level check; the script uses Android system properties and returns PATCHED, VULNERABLE, or UNKNOWN with exit codes 0, 1, and 2.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/system/bin/sh
# CVE-2026-0030 exposure check for Android devices
# Logic:
#   - If Android security patch level >= 2026-03-05 => PATCHED
#   - If patch level < 2026-03-05 and pKVM/protected VM support is present => VULNERABLE
#   - Otherwise => UNKNOWN
# Exit codes:
#   0 = PATCHED
#   1 = VULNERABLE
#   2 = UNKNOWN

PATCH_CUTOFF="2026-03-05"
SPL="$(getprop ro.build.version.security_patch 2>/dev/null)"
PKVM_PROP="$(getprop ro.boot.hypervisor.protected_vm.supported 2>/dev/null)"
PKVM_FEATURE="$(getprop ro.product.virtual_ab.enabled 2>/dev/null)"

normalize_date() {
  echo "$1" | tr -d '-' | sed 's/[^0-9].*$//'
}

if [ -z "$SPL" ]; then
  echo "UNKNOWN"
  exit 2
fi

SPL_N="$(normalize_date "$SPL")"
CUTOFF_N="$(normalize_date "$PATCH_CUTOFF")"

# First, trust the Android SPL if present.
if [ "$SPL_N" -ge "$CUTOFF_N" ] 2>/dev/null; then
  echo "PATCHED"
  exit 0
fi

# If below cutoff, check whether protected VM support is likely present.
# ro.boot.hypervisor.protected_vm.supported=true is the strongest easy signal available without root.
if [ "$PKVM_PROP" = "true" ]; then
  echo "VULNERABLE"
  exit 1
fi

# If we cannot establish pKVM support, do not claim patched.
# Some devices may be unaffected in practice, but that cannot be proven from these properties alone.
echo "UNKNOWN"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: query your Android fleet for security patch level and split out devices below 2026-03-05, then further prioritize the subset with protected VM / pKVM support or higher-risk usage profiles like developer, test, and sideload-friendly devices. Because this reassesses to MEDIUM, there is no noisgate mitigation SLA — go straight to the 365-day remediation window; use the noisgate remediation SLA to get the vendor patch deployed within 365 days, but treat exposed pKVM-capable devices as the front of that queue rather than an emergency all-hands event.

Sources

  1. NVD CVE-2026-0030
  2. Android Security Bulletin — March 2026
  3. Android kernel patch aff2255dbe38dc7c57bac8d3ba9feed989289b20
  4. Android kernel patch 986614312222d4b3bdcf16840cdb4abdaed8a42d
  5. Android AVF architecture / pKVM overview
  6. Android virtualization security
  7. Linux kernel documentation for Protected KVM
  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.