CVE-2026-68820 — Windows AFD.sys Use-After-Free Local Privilege Escalation

Kernel-driver UAF in the Ancillary Function Driver for WinSock, actively exploited in the wild since before disclosure. Behavioral detection pack — this CVE has no published atomic indicators.
Threat
CVE-2026-68820 / AFD.sys UAF
Severity
EXPLOITED ITW · KEV CVSS 7.0
Type
Local Privilege Escalation (Kernel UAF, CWE-416)
Access
Local, low-privilege foothold required
KEV Added
2026-08-11 · due 2026-08-25
Version
v0.1 · 2026-08-24
Author
HuntPack
Confidence
High (root cause/CVSS/KEV) · Low (attribution, no atomic IOCs published)
01

Executive Summary

CVE-2026-68820 is a use-after-free (CWE-416) elevation-of-privilege vulnerability in afd.sys, the Windows Ancillary Function Driver for WinSock — a kernel-mode component present on every supported Windows 10, Windows 11, and Windows Server build. The flaw comes from improper synchronization when multiple threads interact with socket-related kernel state concurrently: one code path can free a kernel object while another thread still references it. An attacker who already has arbitrary local code execution can repeatedly trigger the race, land in the vulnerable timing window, and turn the resulting memory corruption into an arbitrary kernel read/write primitive — which they use to escalate their own token to SYSTEM. No further user interaction is required. Microsoft patched it in the August 2026 Patch Tuesday cumulative update; CISA added it to the KEV catalog the same day (2026-08-11) citing confirmed active exploitation, with reporting from Check Point Research and others linking exploitation to the North Korea-linked Lazarus group's Operation Dream Job campaign against defense-sector targets.

Attacker objective: convert an existing low-privilege foothold — however it was obtained — into unrestricted SYSTEM control, then use that control to blind or disable security tooling, dump credentials (commonly LSASS), move laterally, or stage ransomware. Highest-value defensive angle: this is inherently a second-stage exploit. It cannot fire without a foothold that already exists, so the exploit itself is largely invisible to standard EDR telemetry (the kernel race and memory corruption happen inside the driver, not as a queryable Falcon event) — but its effects are not: a discontinuous jump to SYSTEM from a process lineage that has no business producing SYSTEM children, followed within minutes by security-tool tampering or new persistence, is the pattern this pack hunts for. Patch and reboot close the vulnerability; the queries below catch the attacker who already exploited it before your fleet finished rebooting, or who is exploiting an unpatched or un-rebooted host right now.

Defender priority: patch alone does not remediate a running system — afd.sys stays loaded and vulnerable in memory until the endpoint reboots. Confirm both patch installation and post-patch reboot before considering a host remediated (see §13 playbook and the audit block in §10).

02

Source Review & Web Hunter Notes

16 sources were fetched and saved as plain-text snapshots to CVE-2026-68820-WindowsAFD-Hunt-sources/ for provenance. 11 yielded usable content; 3 were inaccessible (HTTP 403) and are excluded from every claim below; 1 (MSRC's own advisory portal) is JavaScript-rendered and returned only a page shell, but its substantive content was independently corroborated by three sources that quote or mirror it directly. No fetched source contained any text addressed to an AI or attempting to direct this agent's actions — see the note at the foot of this section.

TierSourceKey FindingCarry Fwd
OfficialCISA KEV JSON feed (07)Authoritative KEV record: dateAdded 2026-08-11, dueDate 2026-08-25, CWE-416yes
OfficialNVD (09)CVSS 3.1 vector AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H, CWE-416, referencesyes
Official (mirror)CVEfeed.io KEV mirror (08)Corroborates official KEV recordpartial
VendorSentinelOne vuln DB (01)Affected builds list, root cause, event-based detection ideas, CWE-416yes
VendorTenable CVE DB (10)CVSS v2/v3, EPSS 0.00356, Lazarus attribution note, publish/update datesyes
VendorQualys blog / BOD 26-04 (11)Patch KBs (KB5121003 Win11, KB5120249 Win10 ESU), reboot-required caveat, risk-tiered deadlinesyes
MediaThe Hacker News (12)Confirms sole actively-exploited zero-day in Aug 2026 release; Check Point/Lazarus/Operation Dream Job attributionyes
MediaSecurityWeek (13)Direct quote of Microsoft's exploitability language; prior afd.sys zero-day history (CVE-2025-32709, CVE-2025-21418, CVE-2024-38193)yes
BlogSOC Prime (02)Disclosure timeline (reported 2026-07-28 → patched 2026-08-11); names FudModule / MISTPEN (no hashes)partial
BlogCypro Insights (04)Federal remediation deadline framing; no CVSS given, corroborates root causepartial
BlogRedLegg bulletin (05)CVSS temporal score (6.1), affected build list matching SentinelOnepartial
BlogSecurity Arsenal (06)Detection-guidance ideas (SYSTEM children, world-writable paths, mass thread creation) — informed hypothesis design; LOLBin list treated as generic context, not IOCspartial
BlogSOCRadar IOC Radar (03)INACCESSIBLE — HTTP 403 both attempts. No content used.no
MediaTech Times (15)INACCESSIBLE — HTTP 403. No content used; attribution instead sourced from (02)/(12)/(13).no
OfficialCISA alert page (16)INACCESSIBLE — HTTP 403. Superseded by the official KEV JSON feed (07), which was fetched successfully.no
OfficialMSRC advisory portal (14)PARTIAL — JS-rendered SPA, only page shell retrieved. Advisory text corroborated via (09)/(10)/(13).partial

No injected instructions found: every fetched source was reviewed for text addressed to an AI (prompt-injection attempts). None was present in any of the 11 successfully-fetched sources. This is noted per this pack's build instructions, not because anything was found.

03

Hunt Brief & Attack Chain

Hunt hypotheses (ordered by fidelity)

  1. H1 (high conf): A process authenticates or executes as SYSTEM whose parent is not one of the small set of OS components that legitimately spawn SYSTEM children — the direct fingerprint of a successful local-to-SYSTEM elevation. → Q1
  2. H2 (high conf): Within the same SYSTEM context, a security-tooling tamper command executes (stop/disable AV/EDR service, registry disable flags) — the near-universal next step after this exploit succeeds. → Q2, Q5
  3. H3 (medium conf): A SYSTEM-context actor outside normal installers creates autostart persistence shortly after an anomalous elevation — establishing durability post-exploitation. → Q3
  4. H4 (medium conf): An executable is written to disk and, on the same host, a non-standard SYSTEM elevation follows — approximates "stage the exploit tool, then run it." → Q4
  5. H5 (low conf, pivot-only): A single non-privileged parent spawns processes in an abnormal burst — a very weak proxy for the repeated race-condition triggering this exploit class requires. → Q6

Attack chain

StepActionTelemetryHunt Angle
1Attacker obtains an initial local foothold (out of scope of this CVE — phishing, another exploit, etc.; Operation Dream Job reporting suggests fake-job-offer lures for this actor)Email/process/file telemetry, not this pack's focusPrerequisite — see your organization's initial-access hunt packs
2Attacker runs a crafted local application that repeatedly issues AFD.sys IOCTLs to win the free/use raceNone exposed via standard Falcon EDR fields — kernel-internalProxy only: abnormal process/handle burst (H5 / Q6)
3Race window hit → kernel read/write primitive obtained → attacker escalates own token to SYSTEMProcessRollup2 UserName transition to SYSTEM from a non-standard parentH1 / Q1
4SYSTEM-context actor disables or tampers with EDR/AV, and/or dumps LSASSProcessRollup2 CommandLine, RegGenericValueUpdateH2 / Q2, Q5
5Persistence, lateral movement, or ransomware staging using SYSTEM accessAsepValueUpdate, PeFileWritten/NewExecutableWrittenH3, H4 / Q3, Q4
04

Consolidated IOC Table

This is a kernel-level local-privilege-escalation exploit, not a campaign with C2 domains or a public malware sample corpus — no atomic indicators (hashes, IPs, domains) for the exploit itself were published in any source this pack could fetch. That is expected and normal; the table below is intentionally behavioral-first. See §10 for the copy-paste appendix.

TypeValueConfidenceActionContextExpiry
BehaviorSYSTEM-context process from non-standard parentMediumhuntCore elevation fingerprint; needs tenant baseline (Q1)2026-11-24
BehaviorSecurity-tooling tamper command/registry change under SYSTEMHighdetectNear-universal post-exploitation step (Q2, Q5)2027-02-24
Filename (context only)afd.sysn/aenrichLegitimate patched Windows driver — do NOT block/quarantine; presence is expected on every host (01, 06)2027-02-24
Named tooling (unconfirmed)FudModule kernel-mode rootkitLowpivotNamed by SOC Prime (02) re: Lazarus tradecraft; no hash published in any fetched source2026-09-24
Named tooling (unconfirmed)MISTPEN in-memory downloaderLowpivotNamed by SOC Prime (02); no hash published in any fetched source2026-09-24
Patch identifierKB5121003 (Windows 11)Highdetect (compliance)Required fix, per Qualys (11)ongoing
Patch identifierKB5120249 (Windows 10 ESU)Highdetect (compliance)Required fix, per Qualys (11)ongoing
05

Affected Surface & Telemetry Matrix

PlatformVersionsRequired TelemetryPriorityGap Risk
Windows 101607, 1809, 21H2, 22H2Falcon process/registry/file telemetryHighOlder builds may be past mainstream support — confirm ESU coverage
Windows 1123H2, 24H2, 25H2, 26H1Falcon process/registry/file telemetryHigh — largest deployed baseLow
Windows Server2012, 2012 R2, 2016, 2019, 2022, 2025Falcon process/registry/file telemetryCritical — jump hosts, DCs, privileged-account hosts per CISA BOD 26-04 prioritizationLow

Telemetry gap: direct AFD.sys kernel exception/crash telemetry (the exploit trigger itself) is not exposed via the standard Falcon EDR CQL field model — Falcon does not publish a queryable kernel-bugcheck or driver-fault event type in the documented data model. This pack can only detect the exploit's downstream effects (SYSTEM elevation, tool tampering, persistence), not the race condition in progress. Native OS crash-dump/WER review (§7) is the compensating control. This gap is carried into §15 Coverage Map.

06

ATT&CK Mapping

TacticTechnique IDTechnique NameObserved / Expected Behavior
Privilege EscalationT1068Exploitation for Privilege EscalationAFD.sys UAF race → kernel R/W primitive → token elevation to SYSTEM
Defense EvasionT1562.001Impair Defenses: Disable or Modify ToolsSYSTEM-context command/registry change disabling AV/EDR post-elevation
Credential AccessT1003.001OS Credential Dumping: LSASS MemorySYSTEM access commonly used to access LSASS immediately after elevation
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run KeysAutostart entry created under SYSTEM context outside normal installers
DiscoveryT1518.001Security Software DiscoveryPre-tamper enumeration of installed AV/EDR, commonly preceding T1562.001
07

Native Audit-Log Hunts

Non-CQL checks that compensate for the telemetry gap noted in §5 — run these against Windows Event Log / Sysmon directly, on the host or via your log-forwarding pipeline.

  • System log Event ID 1001 (BugCheck / WER): review for crash reports whose faulting module is afd.sys on unpatched or un-rebooted hosts — a crash here can indicate a failed or partially-successful exploitation attempt.
  • Security log Event ID 4672 (Special privileges assigned to new logon): correlate the account name against your expected list of service/admin accounts — an unexpected standard-user account receiving this event is a strong elevation signal.
  • Security log Event ID 4688 with command-line auditing enabled, filtered to TokenElevationType = TokenElevationTypeFull for processes whose parent is not a standard elevation broker (consent.exe, etc.).
  • Sysmon Event ID 1 (Process Create): filter for IntegrityLevel = System where the parent process's own IntegrityLevel was Medium or lower — the classic host-based LPE fingerprint, and a useful cross-check against Q1 if Sysmon is deployed alongside Falcon.
  • Driver/patch state audit: confirm both patch installation and the mandatory post-patch reboot (afd.sys is not swapped out of memory until reboot) — see the PowerShell audit block in §10.
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Q1 · SYSTEM-Context Process From Non-Standard Parent
CONF HIGHFP MEDIUMCOST LOW

Looks for: a process running as SYSTEM whose parent is not one of the small set of OS components that legitimately spawn SYSTEM children — the core elevation fingerprint. FP: legitimate third-party SYSTEM-spawning parents (RMM/patch/backup agents, EDR/AV updaters) not yet baselined for this tenant.

// HUNT: SYSTEM-Context Process Spawned From Non-Standard Parent
// MITRE: T1068
// CONF: high
// FP: medium
// COST: low
// REQUIRES: Falcon process telemetry (ProcessRollup2 / SyntheticProcessRollup2)
// FALSE POSITIVES: Legitimate SYSTEM-spawning parents not yet baselined in this tenant -- RMM/patch agents, backup agents, EDR/AV updaters that legitimately launch children as SYSTEM outside the common OS-parent list below.
// TUNING: Add your environment's legitimate SYSTEM-spawning parents (RMM agent, backup agent, patch-management tool, EDR/AV updater) to the ParentBaseFileName exclusion regex below before promoting this to an alert.
// LOOKBACK: 7d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| UserName=/^SYSTEM$/i
| !(ParentBaseFileName=/^(services|svchost|wininit|smss|csrss|winlogon|lsass|spoolsv|taskhostw|msiexec|trustedinstaller|dllhost)(\.exe)?$/i)
| table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine, UserName])
| sort(@timestamp, order=desc)
Q2 · Security Tooling Tamper Commands Executing As SYSTEM
CONF HIGHFP LOWCOST LOW

Looks for: service-stop, registry-disable, or process-kill commands targeting AV/EDR, executing under SYSTEM context — the near-universal next step after this exploit succeeds. FP: authorized EDR/AV maintenance windows or sanctioned deployment scripts run by RMM tooling under SYSTEM.

// HUNT: Security Tooling Tamper Commands Executing As SYSTEM
// MITRE: T1562.001, T1068
// CONF: high
// FP: low
// COST: low
// REQUIRES: Falcon process telemetry (ProcessRollup2 / SyntheticProcessRollup2)
// FALSE POSITIVES: Authorized EDR/AV maintenance windows or sanctioned deployment scripts run by RMM/patch tooling under SYSTEM.
// LOOKBACK: 7d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| UserName=/^SYSTEM$/i
| FileName=/^(sc|net|net1|taskkill|powershell|pwsh|reg)(\.exe)?$/i
| CommandLine=/(stop\s+(WinDefend|wscsvc|SecurityHealthService|CSFalconService|Sense)|Set-MpPreference.*Disable|DisableAntiSpyware|DisableRealtimeMonitoring|taskkill.*(MsMpEng|CSFalconService|SenseIR))/i
| table([@timestamp, aid, ComputerName, ParentBaseFileName, FileName, CommandLine, UserName])
| sort(@timestamp, order=desc)
Q3 · Autostart Persistence Created Under SYSTEM Context From Non-Standard Actor
CONF MEDIUMFP MEDIUMCOST LOW

Looks for: a new autostart registry entry created under SYSTEM context by something other than a standard installer. FP: legitimate installers and Windows Update running under SYSTEM create autostart entries routinely.

// HUNT: Autostart Persistence Created Under SYSTEM Context From Non-Standard Actor
// MITRE: T1547.001, T1068
// CONF: medium
// FP: medium
// COST: low
// REQUIRES: Falcon registry telemetry (AsepValueUpdate)
// FALSE POSITIVES: Legitimate installers and Windows Update running under SYSTEM create autostart entries routinely.
// TUNING: Exclude ContextBaseFileName values for known installers (msiexec.exe, TrustedInstaller.exe, TiWorker.exe, poqexec.exe) and your patch-management agent before promoting beyond hunt-only.
// LOOKBACK: 7d
#event_simpleName=AsepValueUpdate
| UserName=/^SYSTEM$/i
| !(ContextBaseFileName=/^(msiexec|trustedinstaller|tiworker|poqexec)(\.exe)?$/i)
| table([@timestamp, aid, ComputerName, ContextBaseFileName, RegObjectName, RegValueName, UserName])
| sort(@timestamp, order=desc)
Q4 · Executable Drop Followed By Non-Standard SYSTEM Elevation On The Same Host
CONF MEDIUMFP HIGHCOST MEDIUM

Looks for: an executable written to disk on a host that also shows a non-standard SYSTEM elevation — an approximation of "stage the exploit tool, then run it." FP: installers, RMM/patch agents, and EDR/AV updaters routinely write an executable and then run something as SYSTEM within minutes on managed endpoints — this is expected there.

// HUNT: Executable Drop Followed By Non-Standard SYSTEM Elevation On The Same Host
// MITRE: T1068
// CONF: medium
// FP: high
// COST: medium
// REQUIRES: Falcon file-write telemetry (PeFileWritten / NewExecutableWritten) + process telemetry (ProcessRollup2)
// FALSE POSITIVES: Installers, RMM/patch agents, and EDR/AV updaters routinely write an executable and then run something as SYSTEM within minutes on managed endpoints -- this is expected there.
// TUNING: This join correlates by host (aid) only, not tight time proximity -- triage by eyeballing DropTime vs ElevationTime in the results, and exclude ContextBaseFileName/ParentBaseFileName values for your RMM agent, patch tool, and EDR/AV updater before promoting beyond hunt-only.
// LOOKBACK: 7d
#event_simpleName=/PeFileWritten|NewExecutableWritten/
| DropTime := @timestamp
| DropFile := FileName
| DropActor := ContextBaseFileName
| join(query={
    #event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
    | UserName=/^SYSTEM$/i
    | !(ParentBaseFileName=/^(services|svchost|wininit|smss|csrss|winlogon|lsass|spoolsv|taskhostw|msiexec|trustedinstaller|dllhost)(\.exe)?$/i)
    | ElevationTime := @timestamp
  }, field=aid, mode=inner)
| table([DropTime, ElevationTime, aid, ComputerName, DropFile, DropActor, ParentBaseFileName, FileName, CommandLine, UserName])
| sort(ElevationTime, order=desc)
Q5 · Security Product Registry Tamper Under SYSTEM Context
CONF HIGHFP LOWCOST LOW

Looks for: a registry value under a Defender/security-product key being changed to a disable state, under SYSTEM context. FP: authorized security-product deployment or reconfiguration tooling running under SYSTEM during a sanctioned maintenance window.

// HUNT: Security Product Registry Tamper Under SYSTEM Context
// MITRE: T1562.001
// CONF: high
// FP: low
// COST: low
// REQUIRES: Falcon registry telemetry (RegGenericValueUpdate)
// FALSE POSITIVES: Authorized security-product deployment or reconfiguration tooling running under SYSTEM during a sanctioned maintenance window.
// LOOKBACK: 7d
#event_simpleName=RegGenericValueUpdate
| UserName=/^SYSTEM$/i
| RegObjectName=/(Windows Defender|Windows Advanced Threat Protection|WinDefend|SecurityHealthService|CrowdStrike|CSAgent)/i
| RegValueName=/^(DisableAntiSpyware|DisableRealtimeMonitoring|DisableBehaviorMonitoring|DisableAntiVirus|Start)$/i
| table([@timestamp, aid, ComputerName, ContextBaseFileName, RegObjectName, RegValueName, RegStringValue, UserName])
| sort(@timestamp, order=desc)
Q6 · High-Frequency Process Burst From A Single Non-Privileged Parent (Race-Trigger Pattern)
CONF LOWFP HIGHCOST MEDIUM

Looks for: a single non-privileged parent process spawning an abnormally high volume of child processes in a short window — a weak proxy for the repeated triggering this exploit class typically requires to win the race. Pivot-only; not an alert candidate on its own. FP: build systems, test harnesses, package managers, and some legitimate automation create processes in rapid bursts.

// HUNT: High-Frequency Process Creation Burst From A Single Non-Privileged Parent (Race-Condition Trigger Pattern)
// MITRE: T1068
// CONF: low
// FP: high
// COST: medium
// REQUIRES: Falcon process telemetry (ProcessRollup2 / SyntheticProcessRollup2)
// FALSE POSITIVES: Build systems, test harnesses, package managers, and some legitimate automation create processes in rapid bursts -- this pattern alone is a very weak signal and exists mainly to surface candidates for the higher-confidence queries above, not to stand alone as an alert.
// TUNING: Exclude ParentBaseFileName values for build tools, CI/CD agents, and package managers (e.g. msbuild.exe, npm.cmd, choco.exe) in your environment, and treat any hit as a pivot into Q1/Q2/Q5, not a standalone alert.
// LOOKBACK: 1d
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| !(UserName=/^SYSTEM$/i)
| groupBy([aid, ComputerName, ParentBaseFileName, UserName], function=[count(as=SpawnCount), min(@timestamp, as=FirstSeen), max(@timestamp, as=LastSeen)], limit=1000)
| SpawnCount > 200
| table([ComputerName, ParentBaseFileName, UserName, SpawnCount, FirstSeen, LastSeen])
| sort(SpawnCount, order=desc)
09

CrowdStrike Custom IOA Recommendations

Three queries are high-confidence enough to warrant promotion beyond hunt-only. Stage every one in Detect mode for at least 2 weeks against production traffic before considering Prevent.

IOA NameSource QueryPatternExclusionsDeployment Path
Non-Standard SYSTEM ElevationQ1ProcessRollup2 UserName=SYSTEM, ParentBaseFileName outside OS-parent allowlistTenant-specific RMM/backup/patch agents (build during Detect-mode baseline)Detect 2+ weeks → tune exclusions → Detect indefinitely (avoid Prevent — legitimate SYSTEM automation is common; keep as high-priority alert, not a block)
SYSTEM-Context Security Tooling TamperQ2 + Q5SYSTEM-context command/registry change targeting AV/EDR disableAuthorized maintenance-window service account or script hashDetect 1 week → Prevent (low FP, high-value control point)
Post-Elevation PersistenceQ3AsepValueUpdate under SYSTEM from non-installer actorInstaller/patch-agent ContextBaseFileName allowlistDetect indefinitely — persistence IOAs are high-value for investigation, higher FP tolerance than a Prevent policy warrants
10

Machine-Readable IOC Appendix

No atomic indicators (hashes, C2 domains/IPs) for this exploit were published in any fetched source. The CSV below intentionally ships mostly REPLACE_WITH_ placeholders — populate them only if your own incident response surfaces a confirmed indicator. Shipping a fabricated hash or domain here would be worse than shipping none.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
sha256,REPLACE_WITH_SHA256,detect,high,2027-02-24,Unverified CVE-2026-68820 exploit binary or post-exploitation tool -- populate only if your own IR/EDR surfaces a hash,cve:CVE-2026-68820
domain,REPLACE_WITH_C2,detect,medium,2026-11-24,Unverified Operation Dream Job C2 infrastructure referenced in third-party reporting but not published with an indicator in any fetched source,actor:Lazarus
filename,afd.sys,enrich,low,2027-02-24,Legitimate Windows kernel driver targeted by CVE-2026-68820 -- context only, do NOT block/quarantine,cve:CVE-2026-68820
Behavioral Signatureshunt checklist
1. Process runs as SYSTEM; ParentBaseFileName is not a standard OS SYSTEM-spawning component (Q1)
2. SYSTEM-context command stops/disables AV, EDR, or Windows Security service (Q2)
3. SYSTEM-context registry write sets a security-product Disable* value (Q5)
4. New autostart entry created by a SYSTEM actor that is not a known installer (Q3)
5. Executable write followed by non-standard SYSTEM elevation on the same host (Q4)
6. Abnormal burst of process creation from one non-privileged parent (Q6, pivot-only)
7. System log Event ID 1001 (BugCheck/WER) naming afd.sys as the faulting module
8. Security log Event ID 4672 granted to an account outside the expected service/admin list
Named Tooling (Unconfirmed)no published hash
# Named by SOC Prime reporting on Lazarus / Operation Dream Job tradecraft.
# No file hash, filename, or path was published for either in any source
# this pack could fetch -- listed for analyst awareness and pivot only.
FudModule        kernel-mode rootkit (privilege-escalation payload class)
MISTPEN          in-memory downloader
Patch / Reboot Compliance AuditPowerShell
# Confirm the August 2026 cumulative update is installed
Get-HotFix -Id KB5121003 -ErrorAction SilentlyContinue   # Windows 11
Get-HotFix -Id KB5120249 -ErrorAction SilentlyContinue   # Windows 10 ESU

# afd.sys is only replaced in memory after a reboot -- confirm uptime since patch
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime

# Secondary signal: on-disk driver file version/date
Get-Item "$env:SystemRoot\System32\drivers\afd.sys" |
  Select-Object VersionInfo, LastWriteTime
11

Detection Validation Gates

  • Telemetry ready: confirm ProcessRollup2/SyntheticProcessRollup2, AsepValueUpdate, and RegGenericValueUpdate are flowing for the target host population before enabling any query above as an alert.
  • Benign baseline: run Q1 and Q3 in hunt-only (Investigate) mode for a minimum of 7 days per environment to build the ParentBaseFileName/ContextBaseFileName exclusion list before promoting either.
  • Positive test: Q1 — in an isolated test VM, launch a process as SYSTEM via a non-standard parent (e.g. PsExec64.exe -s cmd.exe from an interactive session) and confirm the query surfaces it. Q2/Q5 — in the same test VM, run an excluded-from-production sc stop or registry-disable command against a disposable AV/EDR test instance and confirm detection fires. A real kernel exploitation of this CVE should never be simulated outside an isolated, disposable lab, and only against a still-vulnerable (unpatched) test image.
  • Promotion: Q2 and Q5 are eligible for Prevent-mode Custom IOA after a clean 1-week Detect baseline (§9). Q1 and Q3 stay in Detect indefinitely given their FP profile. Q4 and Q6 remain hunt/investigate-only and should never be promoted to an alert as written.
12

Hardening — Tiered

Immediate (this week)

1. Patch — M1051 (Update Software). Deploy the August 2026 cumulative update fleet-wide (KB5121003 Windows 11 / KB5120249 Windows 10 ESU) with a mandatory reboot — afd.sys stays loaded and vulnerable until the endpoint restarts. Follow CISA BOD 26-04 risk-tiered timelines: 3 days for internet-exposed systems, 14 days (2026-08-25) for internal endpoints. Source: CISA KEV catalog (§18-07), Qualys BOD 26-04 analysis (§18-11). Verify: the audit block in §10.

2. Falcon prevention policy + tamper protection — M1040 (Behavior Prevention on Endpoint), M1018 (User Account Management). Confirm the Falcon prevention policy is set to block on privilege-escalation and defense-evasion behaviors, and that sensor tamper protection is enabled fleet-wide, so an attacker who does elevate cannot trivially disable the sensor that would otherwise catch the next step. Verify: re-run Q2/Q5 after enabling — a clean fleet should return zero real hits outside the maintenance-window exclusion.

Near term (1–4 weeks, pilot first)

3. LSA Protection / RunAsPPL — M1025 (Privileged Process Integrity), M1040, M1043 (Credential Access Protection). Makes LSASS a protected process, raising the cost of the credential-dumping step (T1003.001) this exploit is commonly used to reach. GPO: Computer Configuration > Administrative Templates > MS Security Guide > LSA Protection = Enabled. Registry: HKLM\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL = 2 (UEFI-locked). Source: Microsoft Security Baselines. Reboot required.

4. ASR rule — Block credential stealing from LSASS — M1040. GUID 9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2. Deploy in AuditMode first (Defender Event ID 1122), confirm no legitimate workflow trips it, then flip to Block (Event ID 1121). Directly blocks the most common thing an attacker does immediately after this exploit succeeds.

5. Reduce standing local admin — M1026 (Privileged Account Management). Shrink the population of accounts with local admin rights and cached privileged credentials, limiting what a SYSTEM-level compromise can actually reach or steal. ⚠ best-practice/architectural, no single benchmark line item — cite CIS Windows Benchmark's local-admin-membership guidance for the specific control your tenant enforces.

Strategic (1–3 months)

6. Credential Guard (VBS-isolated LSASS) — M1025, M1043. Requires Windows 10/11 Enterprise or Server 2016+, UEFI, Secure Boot, TPM 2.0, VBS-capable CPU. Known to break some legacy SSO products and older third-party AV that hooks LSASS — pilot on a ring before fleet rollout. Source: Microsoft Security Baselines / Device Guard.

7. Application control (WDAC / AppLocker) — M1038 (Execution Prevention). Reduces the attacker's ability to get the local code-execution foothold this LPE requires in the first place — the highest-leverage upstream control, and also the most architecturally involved. ⚠ best-practice pending your organization's own WDAC policy baseline; cite Microsoft's WDAC design guide for your tenant's specific policy.

13

Deployable Playbooks

Playbook 1 — Patch verification & enforced reboot

Prerequisites: WSUS/Intune/SCCM (or your patch-management tool) already targeting the August 2026 cumulative update at the affected build population. Reboot required: yes — this is the entire point of the playbook. Rollback: uninstalling a security cumulative update to roll back is not recommended; if the update causes a regression, engage Microsoft support rather than removing the patch, since removal reintroduces an actively-exploited kernel LPE.

# Step 1 -- confirm patch presence (see Copy CSV audit block in Section 10 for the full check)
Get-HotFix -Id KB5121003,KB5120249 -ErrorAction SilentlyContinue

# Step 2 -- if patched but LastBootUpTime predates the patch install date, force a
# scheduled reboot during the next maintenance window (adjust the delay to your change window)
if ((Get-CimInstance Win32_OperatingSystem).LastBootUpTime -lt (Get-Date).AddDays(-1)) {
    shutdown.exe /r /t 3600 /c "Mandatory reboot: CVE-2026-68820 (afd.sys) patch requires restart to take effect"
}

Playbook 2 — LSA Protection (RunAsPPL)

Prerequisites: pilot on a ring first; confirm no legacy LSASS-hooking security or SSO software is in use on target hosts. Reboot required: yes. Rollback: delete the RunAsPPL value (or set to 0) and reboot again.

# Deploy
$path = 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa'
New-ItemProperty -Path $path -Name 'RunAsPPL' -Value 2 -PropertyType DWORD -Force | Out-Null
# Reboot required

# Verify (post-reboot)
(Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' -Name RunAsPPL).RunAsPPL
# Expect: 2 -- and Event ID 12 ("LSASS was started as a protected process") in the System log

# Rollback
Remove-ItemProperty -Path $path -Name 'RunAsPPL' -ErrorAction SilentlyContinue
# Reboot required

Playbook 3 — ASR rule: block credential stealing from LSASS

Prerequisites: Defender Antivirus active (can coexist with Falcon in passive/EDR mode per your deployment); deploy in AuditMode across a pilot ring before Block. Reboot required: no. Rollback: re-run the same cmdlet with -AttackSurfaceReductionRules_Actions Disabled.

# Audit first
Set-MpPreference -AttackSurfaceReductionRules_Ids '9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' `
                 -AttackSurfaceReductionRules_Actions AuditMode
# Review Defender Event ID 1122 for hits over 1-2 weeks, then:
Set-MpPreference -AttackSurfaceReductionRules_Ids '9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' `
                 -AttackSurfaceReductionRules_Actions Enabled

# Rollback
Set-MpPreference -AttackSurfaceReductionRules_Ids '9e6c4e1f-7d60-472f-ba1a-a39ef669e4b2' `
                 -AttackSurfaceReductionRules_Actions Disabled
14

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the affected host via Falcon RTR host containment; do not reboot yet if forensic capture is plannedIR / SOCContainment action log, Falcon detection ID
EradicateConfirm patch + reboot (Playbook 1); rotate credentials for any account active on the host at time of elevation, prioritizing anything with domain-privileged access; hunt for persistence via Q3 across the wider environmentIR / IT OpsPatch audit output, credential-rotation ticket, Q3 hunt results
RecoverRestore from known-clean backup if ransomware staging is suspected (T1486); re-image rather than clean if a kernel-mode rootkit (e.g. FudModule-class tooling) is suspected, since kernel-level implants can survive user-mode remediationIT OpsRestore/re-image record, post-recovery Q1/Q2/Q5 clean run
15

Detection Coverage Map

TechniqueBehaviorCQLIOACoverage
T1068Kernel UAF race / exploit trigger itselfQ6 (weak proxy only)GAP
T1068SYSTEM elevation from non-standard parentQ1, Q4Non-Standard SYSTEM ElevationPartial
T1562.001Security tooling tamper post-elevationQ2, Q5SYSTEM-Context Security Tooling TamperGood
T1547.001Post-elevation persistenceQ3Post-Elevation PersistencePartial
T1003.001LSASS credential access after elevationGAP — see hardening §12.3–4
T1518.001Pre-tamper security software discoveryGAP — not separately hunted; folds into Q2/Q5 window

The primary gap is structural, not an oversight: the AFD.sys race condition itself has no queryable Falcon EDR event (§5), so this pack's coverage necessarily starts one step downstream, at the elevation and its aftermath. LSASS credential access after elevation has no dedicated CQL query in this pack — it is addressed via hardening (LSA Protection, ASR LSASS rule, §12) rather than detection, since a successful SYSTEM-level LSASS read is difficult to distinguish from legitimate SYSTEM-context tooling without additional context this exploit class doesn't provide. Validation gates for the queries that do exist are in §11.

16

Hunt Summary Ticket

TITLE: CVE-2026-68820 -- Windows AFD.sys Use-After-Free Local Privilege Escalation
SEVERITY: High (CVSS 7.0) -- Actively exploited in the wild, CISA KEV (added 2026-08-11, due 2026-08-25)
SCOPE: Windows 10 (1607/1809/21H2/22H2), Windows 11 (23H2/24H2/25H2/26H1),
       Windows Server (2012/2012 R2/2016/2019/2022/2025)
HYPOTHESIS: An attacker with an existing local foothold triggers a UAF race in afd.sys to
       obtain a kernel R/W primitive and escalate to SYSTEM, then disables security tooling,
       accesses LSASS, persists, or stages ransomware.
QUERIES: Q1 SYSTEM-context elevation from non-standard parent (hunt/detect)
         Q2 Security-tooling tamper commands as SYSTEM (detect -> prevent-eligible)
         Q3 Post-elevation persistence (hunt/detect)
         Q4 Executable drop + SYSTEM elevation correlation (hunt-only)
         Q5 Security-product registry tamper as SYSTEM (detect -> prevent-eligible)
         Q6 Process-creation burst, race-trigger proxy (hunt/pivot-only)
DO FIRST: Confirm KB5121003 (Win11) / KB5120249 (Win10 ESU) installed AND host rebooted
       (Section 10 audit block) -- patch alone does not remediate a running system.
FINDINGS: [populate after running Q1-Q6 against your environment]
GAPS: No direct telemetry for the kernel race condition itself (Section 5, Section 15).
       No atomic IOCs published in any source fetched for this pack (Section 4).
ACTIONS: Patch + reboot per BOD 26-04 timelines; deploy Q2/Q5 to Detect this week;
       baseline Q1/Q3 for 7 days before considering promotion; harden per Section 12.
OWNER: [assign]
VERSION: v0.1 -- 2026-08-24
17

Changelog

v0.12026-08-24Initial draft. 6 CQL hunt queries, 3 Custom IOA candidates, tiered hardening, containment runbook, and full source-provenance snapshot set. Ships with no confirmed atomic indicators — behavioral-first by design (no atomic IOCs found in any fetched source).
18

References

#TierSourceUsed ForAccess Date
01VendorSentinelOne Vulnerability DatabaseAffected builds, root cause, CWE-416, detection ideas2026-08-24
02BlogSOC PrimeDisclosure timeline, Lazarus/Operation Dream Job attribution, FudModule/MISTPEN naming2026-08-24
03BlogSOCRadar IOC RadarINACCESSIBLE (HTTP 403) — not used2026-08-24 (failed)
04BlogCypro InsightsFederal remediation deadline framing2026-08-24
05BlogRedLegg Security BulletinCVSS temporal score, affected build list2026-08-24
06BlogSecurity ArsenalDetection-guidance ideas that informed hypothesis design2026-08-24
07OfficialCISA KEV JSON feedAuthoritative KEV record (dateAdded, dueDate, description)2026-08-24
08MirrorCVEfeed.io KEV mirrorCorroboration of KEV record2026-08-24
09OfficialNVDCVSS 3.1 vector, CWE-416, references2026-08-24
10VendorTenable CVE DatabaseCVSS scores, EPSS, Lazarus attribution note2026-08-24
11VendorQualys BlogPatch KBs, reboot-required caveat, BOD 26-04 deadlines2026-08-24
12MediaThe Hacker NewsSole-actively-exploited-zero-day confirmation, attribution2026-08-24
13MediaSecurityWeekDirect MSRC advisory quote, prior afd.sys zero-day history2026-08-24
14OfficialMicrosoft MSRC Update GuidePARTIAL — JS-rendered, corroborated via 09/10/132026-08-24
15MediaTech TimesINACCESSIBLE (HTTP 403) — not used2026-08-24 (failed)
16OfficialCISA Alerts pageINACCESSIBLE (HTTP 403) — superseded by source 072026-08-24 (failed)