A kernel-side trapdoor in Samsung's process-integrity guard that only opens if you're already inside the building, carrying the right key, at the right second
PROCA (Process Authenticator) is the Samsung kernel module that ties running processes back to their signing certificates — it's a load-bearing piece of the Knox trust chain on Galaxy devices. A use-after-free in PROCA means a freed kernel object can be reclaimed and dereferenced, potentially yielding arbitrary code execution in kernel context. Affected builds are Samsung Android devices on firmware *prior to SMR Jan-2026 Release 1* — practically every Galaxy phone, tablet, and ruggedized handset that hadn't pulled the January 2026 Samsung Mobile Release before the disclosure window.
Vendor's HIGH (7.3) is defensible on paper because the impact ceiling is kernel RCE, but the CVSS 4.0 vector itself spells out the friction: AV:L/AC:H/AT:P/PR:L. You need code already executing on the device (a malicious app or a chained RCE), you need to win a race or meet a precise state condition, and you need low-but-nonzero privileges. For a fleet manager triaging *patch urgency*, that puts this firmly in the post-initial-access escalation bucket, not the drive-by panic bucket.
4 steps from start to impact.
Land code on the device
- Target installs/runs attacker-controlled code
- Device on firmware older than SMR Jan-2026 R1
- Google Play Protect and Samsung's Auto Blocker flag most sideloads
- Enterprise MDM (Knox Manage, Intune) restricts unknown sources
- No public PoC observed in app-store malware corpora
Reach the PROCA ioctl/syscall surface
untrusted_app) are denied direct access to a lot of /dev and /proc surfaces, so the attacker needs a syscall path PROCA exposes to the broad app domain, or must first pivot to a more privileged UID/domain.- PROCA entry point reachable from
untrusted_appSELinux domain - Knox runtime policies not blocking the call
- Samsung's SELinux policy is one of the tightest in the Android ecosystem
- Many PROCA paths are gated to
systemUID
Trigger the use-after-free race
AC:H is doing real work here — the race window is narrow and depends on scheduler timing on the device's specific SoC (Exynos vs. Snapdragon, big.LITTLE topology).- Reliable heap-spray primitive in the relevant kmalloc cache
- Ability to pin CPU and influence scheduling
- KASLR randomizes kernel layout per boot
- CONFIG_SLAB_FREELIST_HARDENED + random freelists complicate reclaim
- Samsung RKP (Real-time Kernel Protection) monitors critical kernel structure mutations
last_kmsgHijack execution → kernel code exec
cred structure overwrite for full root, or a direct PROCA bypass that lets the attacker forge process attestation. Outcome on a Samsung handset: Knox container compromise, biometric vault access, persistence across reboots.- Bypass of KCFI/CFI on recent kernels
- Bypass of Samsung KDP (Kernel Data Protection) for
credwrites
- Modern Samsung kernels ship CFI_CLANG
- KDP makes
cred/task_structoverwrites significantly harder - Knox attestation will mark the device as compromised on next check-in
The supporting signals.
| In-the-wild exploitation | No public reports. Not in CISA KEV. No coverage in Project Zero, Kaspersky GReAT, or Lookout mobile-threat reports as of the SMR Jan-2026 disclosure window. |
|---|---|
| Public PoC | None published. Samsung security bulletins for PROCA-class issues historically credit external researchers without releasing PoC; bug bounty terms restrict disclosure. |
| EPSS | 0.00127 (~0.13%). Bottom-quartile exploitation probability — consistent with local-only Android kernel bugs. |
| KEV status | Not listed. |
| CVSS 4.0 vector | AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N — local attack vector, *high complexity*, attack requirements present, low privileges. Impact is confined to the *vulnerable system* (no SC/SI/SA scope change to other systems). |
| Affected builds | Samsung Galaxy devices on firmware prior to SMR Jan-2026 Release 1 — applies across Galaxy S, Note, Z Fold/Flip, A-series, Tab S, and ruggedized XCover lines that receive SMR updates. |
| Fixed version | SMR Jan-2026 Release 1 (Samsung Mobile Security bulletin, January 2026). Rollout via carrier OTA; enterprise fleets push via Knox Manage / Intune / Workspace ONE. |
| Exposure data | No remote scanning signal — this is a local-vector bug. Shodan/Censys/GreyNoise are not applicable. Population is gated by Samsung firmware patch lag, which historically runs 30–60 days behind SMR release for non-flagship SKUs. |
| Disclosure date | Coordinated disclosure aligned with Samsung Mobile Security January 2026 bulletin. |
| Reporter | Credited via Samsung Mobile Security bulletin (researcher details per Samsung's SMR acknowledgments page). |
noisgate verdict.
Downgraded one bucket because the decisive factor is that this is a local-only, post-initial-access privilege escalation with AC:H and AT:P — there is no remote vector and no reachable surface from outside an installed process. Blast radius is per-device kernel compromise on a Samsung handset; it does not pivot the corporate fleet by itself, and Knox attestation surfaces successful exploitation back to the MDM.
Why this verdict
- Local vector only:
AV:Lmeans attacker must already be executing code on the device. That collapses the threat population from "every Galaxy on the internet" to "every Galaxy that runs a malicious app" — orders of magnitude smaller. - Stacked friction:
AC:H(race-window dependent) +AT:P(specific runtime preconditions) +PR:L(must be a real process, not zero-priv). Each of these is a meaningful downward adjustment from the vendor's HIGH baseline. - Role multiplier — typical role (consumer/enterprise mobile endpoint): chain succeeds in kernel RCE on the device, blast radius is single-device Knox container compromise. Bad, but bounded — does not cross to fleet.
- Role multiplier — high-value role (mobile device acting as MFA/passkey root-of-trust, mobile DLP enforcement point, or BYOD with privileged email/VPN tokens): chain still ends at one device; the attacker can steal that user's session, tokens, and biometric-bound keys, but the lateral pivot is via stolen credentials, not via PROCA itself. This keeps the floor at MEDIUM rather than HIGH because the compromise stays on one endpoint.
- EPSS 0.00127 + no KEV + no public PoC: the empirical exploitation signal is consistent with the friction analysis. Mobile kernel UAFs that get weaponized typically land in commercial spyware (NSO, Intellexa) chains and surface in Citizen Lab / TAG reporting — none here.
- Knox stack mitigates impact: RKP, KDP, KCFI, and Knox attestation each independently raise the bar for reliable exploitation and ensure post-exploit detection via MDM.
Why not higher?
HIGH would require either remote reachability, a credible chain with a remote bug already in play (e.g., a paired browser RCE we have evidence of), or a role multiplier that pivots beyond the single device. None of those conditions are met. PROCA is not a fleet-wide trust anchor in the way a domain controller or IdP is — compromising it on one phone does not compromise other phones.
Why not lower?
LOW would require either no realistic impact or an installed base near zero. Neither applies: kernel-context code execution on a Samsung handset is a serious outcome, the affected base is *every* unpatched Galaxy, and mobile devices in 2026 hold passkeys, MFA tokens, and corporate email sessions. The attack is *hard*, not *impossible* — commercial spyware vendors specialize in exactly this primitive class.
What to do — in priority order.
- Force SMR Jan-2026 R1 (or later) via MDM compliance policy — Set Knox Manage / Intune / Workspace ONE compliance to require the January 2026 patch level. Non-compliant devices lose access to corporate email, VPN, and Conditional Access apps until they update. Per the noisgate mitigation SLA for MEDIUM there is *no mitigation deadline* — but enforcing the compliance gate is a one-week task and worth doing now.
- Enable Knox Attestation in your MDM check-in flow — Attestation will flag devices where kernel integrity (RKP) reports tampering — your post-exploit detection net. Configure the MDM to revoke device certificates and trigger remote wipe on attestation failure.
- Block sideloading and unknown sources fleet-wide — Push a Knox policy that disables
Install unknown appsand enforcesAuto Blocker. This kills the most plausible delivery vehicle for a malicious local process. - Restrict Play Store to a managed allowlist for high-risk users — Executives, finance, and admins on managed Galaxy devices should be on a curated allowlist via Managed Google Play. Eliminates the "slipped past Play review" delivery path.
- Deploy mobile threat defense (Lookout, Zimperium, Pradeo) on managed handsets — MTD provides post-exploit detection signal that MDM alone does not — flagging anomalous syscall patterns, root indicators, and known-malicious packages. Pair the alert pipeline with your existing SIEM.
- Network firewall / WAF rules — bug is local-vector; no network packet ever touches this.
- Disabling PROCA — it is a load-bearing Knox component; disabling breaks attestation and Samsung Pay/Knox container.
- EDR on the corporate Windows fleet — wrong OS; mobile MTD is the equivalent control.
- Email/phishing filtering — does not address the delivery vector (malicious app install), only loosely correlated.
Crowdsourced verification payload.
Run this on an auditor workstation with ADB authorized to the target Samsung device (USB debugging enabled, device unlocked). Invoke as ./check_cve_2026_20971.sh <device-serial> — uses adb -s to query the build patch level. No root required; read-only properties.
#!/usr/bin/env bash
# noisgate verifier: CVE-2026-20971 (Samsung PROCA UAF)
# Exits: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
set -u
SERIAL="${1:-}"
if [[ -z "$SERIAL" ]]; then
echo "usage: $0 <adb-device-serial>" >&2
echo "UNKNOWN"; exit 2
fi
if ! command -v adb >/dev/null 2>&1; then
echo "adb not found in PATH" >&2
echo "UNKNOWN"; exit 2
fi
# Confirm device reachable
if ! adb -s "$SERIAL" get-state 2>/dev/null | grep -q device; then
echo "device $SERIAL not in 'device' state" >&2
echo "UNKNOWN"; exit 2
fi
# Confirm manufacturer is Samsung
MANUF=$(adb -s "$SERIAL" shell getprop ro.product.manufacturer 2>/dev/null | tr -d '\r' | tr '[:upper:]' '[:lower:]')
if [[ "$MANUF" != "samsung" ]]; then
echo "device is not Samsung (manufacturer='$MANUF') — CVE-2026-20971 not applicable" >&2
echo "PATCHED"; exit 0
fi
# Pull security patch level (YYYY-MM-DD)
SPL=$(adb -s "$SERIAL" shell getprop ro.build.version.security_patch 2>/dev/null | tr -d '\r')
if [[ -z "$SPL" ]]; then
echo "could not read ro.build.version.security_patch" >&2
echo "UNKNOWN"; exit 2
fi
# Samsung SMR Jan-2026 R1 maps to security patch level 2026-01-01 or later
FIX="2026-01-01"
# Lexical date compare works for YYYY-MM-DD
if [[ "$SPL" < "$FIX" ]]; then
echo "device $SERIAL SPL=$SPL < $FIX -> VULNERABLE"
echo "VULNERABLE"; exit 1
fi
echo "device $SERIAL SPL=$SPL >= $FIX -> PATCHED"
echo "PATCHED"; exit 0
If you remember one thing.
Sources
- Samsung Mobile Security — January 2026 SMR bulletin
- NVD — CVE-2026-20971
- MITRE CVE record — CVE-2026-20971
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS model
- Samsung Knox — Real-time Kernel Protection (RKP) overview
- Samsung Knox — Kernel Data Protection (KDP)
- Android Security — CFI in the kernel
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.