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

In onChange of BiometricService

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

This is a door lock that can flip itself back on after renovation, not a burglar picking the front gate

CVE-2026-0017 is an Android biometric authorization flaw tied to fingerprint unlock state handling. Google’s March 2026 bulletin places it in the System component and marks Android 16 and 16-qpr2 as affected; the public AOSP fix shows the real failure mode was migration logic around biometric settings after OTA, where the newer fingerprint-specific key could inherit or default incorrectly and leave "unlock your phone" unexpectedly enabled.

The vendor’s HIGH 7.7 score is technically defensible under CVSS because Android models many local app attacks as AV:L/PR:N/UI:N. But for enterprise prioritization this is overstated: the flaw is local-only, appears tied to a narrow OTA/settings-state condition, has no KEV listing, no public exploitation evidence, and its blast radius is usually one device whose attacker already touched locally or physically. That is real risk, but not fleet-on-fire risk.

"High on paper, medium in practice: local-only, OTA-state dependent, and limited to one handset at a time."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Get local foothold with a malicious app or adb session

An attacker first needs execution or hands-on access on the target handset. In Android terms that usually means a sideloaded app, developer-enabled adb, kiosk escape, shared-device misuse, or physical possession long enough to manipulate state around an update. There is no internet-reachable service here; the attacker must already be on the device path.
Conditions required:
  • Target is an Android device, typically enterprise-managed mobile hardware
  • Attacker has local code execution, physical access, or equivalent device-level reach
  • Device is in the affected population rather than a patched build
Where this breaks in practice:
  • This is not remotely reachable from the internet
  • Modern mobile fleets often restrict sideloading, USB debugging, and unknown sources
  • MDM, Play Protect, and mobile threat defense reduce the number of viable local footholds
Detection/coverage: Traditional network scanners will miss this entirely. Detection comes from MDM inventory, Android security patch level checks, and app-control telemetry rather than perimeter tooling.
STEP 02

Hit the affected OTA migration state in biometric settings

The public AOSP fix for bug A-444673089 shows the issue is tied to migration/defaulting between older generic biometric settings keys and newer fingerprint-specific keys after OTA. In plain English: if the new key was unset, Android could treat the old value or default path incorrectly and leave phone unlock enabled when the user did not intend that state. That narrows exploitation from a generic local EoP into a more specific state-management bug.
Conditions required:
  • Device is on affected Android 16 or 16-qpr2 lineage
  • The specific biometric settings state exists, likely after OTA/migration or key transition
  • Fingerprint capability is present and configured on the device
Where this breaks in practice:
  • Not every Android 16 device will be in the exploitable migration state
  • Devices without enrolled fingerprints or with biometrics disabled enterprise-wide blunt the impact
  • This looks like a configuration-state bug, not a universal one-shot exploit primitive
Detection/coverage: No mainstream scanner validates the live logic path. At best, MDM or adb shell settings get secure can surface suspicious biometric key values on unpatched Android 16 devices.
STEP 03

Fingerprint lock-screen unlock becomes enabled unexpectedly

Once the bad state is present, fingerprint unlock can be active even when the user or policy expectation was otherwise. The attacker does not gain kernel code execution or a reusable system privilege token; they gain a weakened local authentication boundary around device unlock. The practical outcome is access to whatever the unlocked handset exposes to the signed-in user.
Conditions required:
  • Fingerprint unlock was unintentionally enabled
  • An enrolled fingerprint or equivalent physical opportunity exists
  • The target device is not protected by stricter compensating policy
Where this breaks in practice:
  • Attacker still needs a way to satisfy the biometric or exploit the post-unlock opportunity
  • Blast radius is typically confined to the single handset and current user context
  • Work profile separation, app-level auth, and strong device compliance policy can limit payoff
Detection/coverage: Look for policy drift: biometric-unlock enabled where baseline says disabled, especially on Android 16 devices below the March 2026 patch level.
STEP 04

Abuse the unlocked session for data access

The endgame is local data exposure and user-context actions on that device: mail, chat, tokens, cached files, SSO sessions, and corporate apps that trust device unlock. This is serious for executives and shared devices, but it does not scale like a wormable server flaw and it does not create broad lateral movement by itself.
Conditions required:
  • Unlocked session grants access to business data or enrolled apps
  • The organization relies heavily on device unlock as a trust gate
  • Additional app-level reauthentication is absent or weak
Where this breaks in practice:
  • Many enterprise apps require separate auth or conditional access even after unlock
  • The impact stays mostly local to one device and one user
  • Remote wipe, compliance lock, and short idle timeouts limit dwell time
Detection/coverage: Correlate unusual access from mobile endpoints after physical loss/theft events. There is no universal signature; this is a state and policy problem more than an exploit kit problem.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public exploitation evidence found. CISA KEV does not list this CVE, and I found no campaign reporting tied to it.
Public PoC / weaponizationNo public PoC located. What is public is the AOSP fix path for bug A-444673089, which exposes the OTA/settings migration logic behind the issue.
EPSS0.00002 with percentile about 0.067% (2e-05, percentile 0.00067 in the NCSC/CIRCL-fed data). That is effectively background noise, not attacker demand.
KEV statusNot KEV-listed. No CISA due date, no evidence of active exploitation pressure.
CVSS vectorCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N — the vendor score assumes a local attacker can hit the bug with no privileges and get high confidentiality/integrity impact on the device.
Affected versionsGoogle’s March 2026 Android bulletin lists Android 16 and 16-qpr2 for this issue. NCSC product data also ties it to Android 16-era builds below the March 2026 patch train.
Fixed versionsTreat Android security patch level 2026-03-01 or later as the Google-side fix baseline for affected builds. For Samsung, SMR Mar-2026 Release 1 or later includes this CVE.
Exposure / scanning realityNot internet-scannable by design. This is a handset-local logic flaw, so Shodan/Censys-style exposure numbers are not meaningful; your reachable population is your managed Android 16 estate.
Disclosure date2026-03-02 in NVD/CVE data, with patch coverage published in the March 2026 Android bulletin.
Patch provenanceThe public AOSP change says "Unlock your phone unexpectedly turned ON after OTA" and updates fingerprint/face settings controllers to migrate old biometric keys into the new per-modality keys safely.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (4.6/10)

The decisive downgrade factor is attacker position: this is a local-only Android handset flaw with no remotely reachable entry point, so it sits firmly in post-initial-access / post-physical-access territory. The second big drag is the narrow exploit population implied by the public fix: affected Android 16 biometric settings state during OTA migration, not every Android endpoint everywhere.

HIGH Local-only attacker position materially reduces fleet urgency
MEDIUM The public fix strongly suggests OTA/settings-state dependence
HIGH No KEV, no public PoC, and near-zero EPSS reduce exploit pressure

Why this verdict

  • Downgrade from 7.7 baseline: vendor CVSS treats any local no-privilege Android flaw harshly, but that ignores that AV:L means the attacker is already on or at the device.
  • Exposure is narrow: the bulletin lists Android 16 / 16-qpr2, not the full Android ecosystem, and the AOSP fix points to a migration/default-state edge case rather than a universal primitive.
  • Blast radius is one handset: impact is meaningful for the affected user, but this does not behave like a server RCE, domain compromise, or tenant-wide breakout.
  • Exploit pressure is low: no KEV, no public PoC found, and EPSS ~0.00002 all argue against urgent attacker interest.
  • Modern controls should intercept prerequisites: MDM app restrictions, Play Protect, USB debugging controls, and physical-device handling all cut down the real reachable population before the bug matters.

Why not higher?

It is not higher because the attacker must already have a local foothold or physical reach and then still depend on a fairly specific device state. That compounds downward pressure fast: local access implies prior compromise, and OTA migration dependence implies a smaller-than-advertised affected slice. There is also no evidence that adversaries are investing in this flaw.

Why not lower?

It is not lower because the flaw touches a real security boundary: device unlock and biometric authorization. On sensitive mobile populations—executives, shared devices, field staff, regulated users—a silently re-enabled fingerprint unlock state can materially weaken access control on the endpoint. That keeps it above pure backlog hygiene.

05 · Compensating Control

What to do — in priority order.

  1. Query Android 16 inventory now — Use MDM to isolate Android 16 / 16-qpr2 devices below the March 2026 patch train first. For a MEDIUM verdict there is no mitigation SLA, but you should still identify the reachable population immediately so remediation can move inside the 365-day window without guesswork.
  2. Enforce biometric policy on sensitive tiers — For executives, admins, shared devices, and regulated users, enforce or re-assert the intended biometric unlock posture through MDM, especially where fingerprint unlock should be disabled. There is no mitigation SLA for MEDIUM, so use this selectively where risk justifies it while planning patch rollout inside 365 days.
  3. Block sideloading and lock down adb — This flaw needs local reach, so reduce attacker access to step one. Keep unknown sources blocked, restrict developer options, and disable unmanaged USB debugging; these controls matter immediately because they shrink the exploitable population more than perimeter controls ever will.
  4. Require app-level auth for crown-jewel mobile apps — If device unlock is weakened, app-level PIN, strong reauth, or conditional access can still stop mailbox, SSO, and data access. Prioritize this for apps with cached tokens or offline data and keep the policy until patched devices dominate the fleet.
  5. Shorten lock timeout on high-risk devices — A short auto-lock interval reduces the dwell time benefit from an unintended biometric unlock state. This is a useful stopgap where devices are frequently lost, shared, or left unattended.
What doesn't work
  • A WAF, IPS, or perimeter firewall will not help; this is not a network-reachable service flaw.
  • Internet exposure scanning does not answer the question here; the right telemetry is MDM build inventory and device policy state.
  • Patching only backend infrastructure misses the problem entirely because the risk lives on managed Android endpoints.
06 · Verification

Crowdsourced verification payload.

Run this on an auditor workstation that has adb and USB or remote-debug access to the target Android device. Invoke it as ./check_cve_2026_0017.sh <device-serial>; it needs no root on the handset, but it does need an authorized adb session. The script checks Android release, security patch level, and relevant secure settings and returns VULNERABLE, PATCHED, or UNKNOWN.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_0017.sh
# Verify likely exposure to CVE-2026-0017 on an Android device via adb.
# Exit codes:
#   0 = PATCHED / not affected
#   1 = VULNERABLE
#   2 = UNKNOWN / insufficient data

set -u

SERIAL="${1:-}"
if [[ -z "$SERIAL" ]]; then
  echo "UNKNOWN - usage: $0 <device-serial>"
  exit 2
fi

ADB=(adb -s "$SERIAL")

if ! command -v adb >/dev/null 2>&1; then
  echo "UNKNOWN - adb not installed"
  exit 2
fi

if ! "${ADB[@]}" get-state >/dev/null 2>&1; then
  echo "UNKNOWN - device not reachable via adb"
  exit 2
fi

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

getsetting_safe() {
  local namespace="$1"
  local key="$2"
  "${ADB[@]}" shell settings get "$namespace" "$key" 2>/dev/null | tr -d '\r'
}

RELEASE="$(getprop_safe ro.build.version.release)"
CODENAME="$(getprop_safe ro.build.version.codename)"
SPL="$(getprop_safe ro.build.version.security_patch)"
BUILD_ID="$(getprop_safe ro.build.id)"
FPG="$(getsetting_safe secure fingerprint_keyguard_enabled)"
BKG="$(getsetting_safe secure biometric_keyguard_enabled)"

if [[ -z "$RELEASE" && -z "$CODENAME" ]]; then
  echo "UNKNOWN - could not read Android version"
  exit 2
fi

# Normalize Android major. Android 16 may appear as "16" or preview codename during edge cases.
AFFECTED=0
if [[ "$RELEASE" == 16* ]]; then
  AFFECTED=1
fi

# If clearly not Android 16 lineage, treat as not affected by current public data.
if [[ $AFFECTED -eq 0 ]]; then
  echo "PATCHED - not in known affected Android 16 / 16-qpr2 population (release=$RELEASE codename=$CODENAME build=$BUILD_ID spl=$SPL)"
  exit 0
fi

# Require a security patch level to decide confidently.
if [[ ! "$SPL" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
  echo "UNKNOWN - Android 16 device but security patch level unavailable (release=$RELEASE build=$BUILD_ID fp_keyguard=$FPG biometric_keyguard=$BKG)"
  exit 2
fi

# Public vendor guidance places the fix in the March 2026 Android patch train.
FIXED_SINCE="2026-03-01"

if [[ "$SPL" < "$FIXED_SINCE" ]]; then
  echo "VULNERABLE - Android 16 lineage with security patch level before $FIXED_SINCE (release=$RELEASE build=$BUILD_ID spl=$SPL fp_keyguard=$FPG biometric_keyguard=$BKG)"
  exit 1
fi

# Patched by SPL; still surface suspicious state drift for operator follow-up.
if [[ "$FPG" == "1" && "$BKG" == "0" ]]; then
  echo "PATCHED - build is patched by SPL, but fingerprint unlock state looks worth reviewing (release=$RELEASE build=$BUILD_ID spl=$SPL fp_keyguard=$FPG biometric_keyguard=$BKG)"
  exit 0
fi

echo "PATCHED - Android 16 lineage with security patch level $SPL (release=$RELEASE build=$BUILD_ID fp_keyguard=$FPG biometric_keyguard=$BKG)"
exit 0
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: use MDM to pull the list of Android 16 / 16-qpr2 devices that are still below the March 2026 patch train, then separate high-sensitivity users from the rest. Because this reassessment lands at MEDIUM, there is no noisgate mitigation SLA — go straight to the 365-day remediation window; if you have executives, admins, or shared handhelds where biometric unlock policy matters, re-assert that policy now as a targeted safeguard, but your formal noisgate remediation SLA is ≤ 365 days for the actual vendor patch.

Sources

  1. Android Security Bulletin—March 2026
  2. AOSP fix commit for bug A-444673089
  3. AOSP patch diff showing OTA biometric key migration logic
  4. NVD entry for CVE-2026-0017
  5. NCSC-NL CSAF record for CVE-2026-0017
  6. CISA Known Exploited Vulnerabilities Catalog
  7. Samsung Mobile Security Bulletin index
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.