← Back to Feed CACHED · 2026-09-08 04:57:42 · CACHE_KEY CVE-2026-62735
CVE-2026-62735 · CWE-122 · Disclosed 2026-08-11

Heap-based buffer overflow in Windows HTTP.sys

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A kernel driver on every Windows machine lets any local user become SYSTEM by stuffing 70,000 headers into a too-small buffer

CVE-2026-62735 is an integer overflow in the UlpCreateInternalResponseOld function within Windows HTTP.sys, the kernel-mode HTTP protocol stack driver. When calculating header-buffer sizes, the driver wraps an integer, allocates an undersized heap buffer, then copies attacker-controlled header data past the end of it. A low-privileged local user can trigger this by sending an oversized HTTP response (~70,000 custom headers) via a specific IOCTL to the driver, corrupting the kernel pool and hijacking execution flow to achieve SYSTEM privileges. Every supported Windows version is affected: Windows 10 (1607 through 22H2), Windows 11 (23H2 through 26H1), and Windows Server 2012 through 2025.

Microsoft's HIGH / 7.8 rating is accurate. The CVSS vector correctly reflects local access, low privileges, and no user interaction. The vendor isn't sandbagging — the local-only attack vector is a genuine constraint that separates this from the truly catastrophic remote HTTP.sys bugs of the past (like CVE-2021-31166). What the score doesn't fully convey is the *universality* of the target: HTTP.sys is loaded on every Windows installation, and the PoC — demonstrated at Pwn2Own Berlin 2026 by Siyeon Wi and now fully public — means any red-teamer or post-access implant can bolt this on trivially.

"Kernel LPE via HTTP.sys hits every Windows box; public PoC makes this a go-to post-access escalation tool."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Obtain local low-privilege shell

The attacker needs an interactive or scripted session on the target host running as any authenticated user. This can come from phishing, RDP with stolen credentials, lateral movement via SMB, or a compromised web application running on the same box. The CVSS vector specifies AV:L/PR:L — no remote trigger exists.
Conditions required:
  • Local access to the target Windows host
  • Any low-privilege user account (domain user, local user, service account)
Where this breaks in practice:
  • Requires prior compromise or insider access — this is not an initial-access bug
  • Well-segmented networks limit lateral movement to high-value hosts like DCs
Detection/coverage: EDR telemetry on suspicious logon events, RDP brute-force monitoring, anomalous SMB lateral movement alerts
STEP 02

Prepare kernel pool layout (heap grooming)

The attacker pre-allocates and frees kernel pool objects to create a predictable hole adjacent to a target kernel structure (e.g., a token object or I/O completion). The Pwn2Own PoC uses standard Windows kernel pool feng-shui techniques documented extensively since 2019. This step is invisible to most detection tools because it uses legitimate system calls.
Conditions required:
  • Ability to make rapid kernel allocations via syscalls from user mode
Where this breaks in practice:
  • Kernel pool layout randomization (KASLR, pool hardening in newer builds) adds non-determinism
  • Reliability varies across Windows versions — the PoC may need tuning per build
Detection/coverage: Kernel exploitation indicators in advanced EDR (e.g., CrowdStrike Falcon kernel exploit detection, Microsoft Defender Credential Guard anomaly signals)
STEP 03

Trigger integer overflow via HTTP.sys IOCTL

The attacker's user-mode process constructs an HTTP response containing approximately 70,000 custom header entries. It then sends this response to the HTTP.sys kernel driver via the specific IOCTL interface. Inside UlpCreateInternalResponseOld, the header-byte-count calculation wraps around due to integer overflow, causing an undersized buffer allocation.
Conditions required:
  • HTTP.sys driver loaded (present on all Windows by default)
  • Ability to send IOCTLs to the HTTP.sys device — requires no special privileges beyond a local session
Where this breaks in practice:
  • Some hardened environments may restrict IOCTL access via device-object ACLs, though this is uncommon
  • Application whitelisting (e.g., WDAC) could block the PoC binary from executing
Detection/coverage: Sysmon Event ID 11 or EDR file-write telemetry catching the PoC binary; kernel exploit attempt heuristics in Defender for Endpoint
STEP 04

Heap overflow overwrites adjacent kernel object

The undersized buffer is filled with attacker-controlled header data that overflows into the adjacent kernel pool allocation. By controlling the overflow content, the attacker corrupts a function pointer or token structure. Execution flow is redirected to attacker-controlled code running in kernel context.
Conditions required:
  • Successful pool grooming from step 2
  • Correct offset alignment for the target Windows build
Where this breaks in practice:
  • Supervisor Mode Execution Prevention (SMEP) and Kernel Control Flow Guard (kCFG) on modern builds add exploitation complexity
  • VBS/HVCI-enabled machines block unsigned kernel code execution, significantly raising the bar
Detection/coverage: Windows Defender Exploit Guard detects anomalous kernel control-flow transfers; crash dumps (bugcheck 0x19, 0x7A) may indicate failed attempts
STEP 05

Achieve SYSTEM privileges

With kernel code execution, the attacker replaces the current process token with the SYSTEM token, yielding full host compromise. On a standard workstation this means local admin. On a domain controller this means effective domain-admin privileges. On a Hyper-V host this means access to VM configurations and potentially guest memory.
Conditions required:
  • Successful kernel code execution from step 4
Where this breaks in practice:
  • Credential Guard isolates domain credentials even from SYSTEM on supported builds
  • On well-configured DCs, SYSTEM alone doesn't exfiltrate krbtgt without additional steps, but it's close enough
Detection/coverage: SYSTEM-level process spawned from unusual parent; token-manipulation alerts in EDR; Windows Security Event 4672 (special privilege logon)
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo confirmed in-the-wild exploitation as of 2026-09-08. Not listed on CISA KEV. No GreyNoise tags observed.
Proof of ConceptPublic. Siyeon Wi demonstrated the bug at Pwn2Own Berlin 2026 and published full technical details + PoC code in September 2026. The PoC sends ~70K custom headers via IOCTL to trigger the overflow.
EPSS Score0.00476 (approximately 74th percentile) — low predicted exploitation probability, though EPSS often lags PoC publication by weeks.
KEV StatusNot listed as of 2026-09-08.
CVSS VectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H — Local access, low privilege, no user interaction. Scope Unchanged limits blast radius to the vulnerable host's security context, but SYSTEM on Windows effectively means full host takeover.
Affected VersionsWindows 10 (1607, 1809, 21H2, 22H2), Windows 11 (23H2, 24H2, 25H2, 26H1), Windows Server 2012, 2016, 2019, 2022, 2025 — essentially every supported Windows version.
Fixed VersionsAugust 2026 Patch Tuesday: e.g., 10.0.14393.9418 (Server 2016 / Win10 1607), 10.0.17763.9121 (Server 2019 / Win10 1809), 10.0.19044.7663 / 10.0.19045.7663 (Win10 21H2/22H2), 10.0.26100.x (Win11 24H2+).
Exposure DataHTTP.sys is a default kernel-mode component on all Windows installations. Shodan/Censys exposure is irrelevant — this is a local vulnerability, not remotely triggerable. Attack surface is any Windows host where an attacker lands a shell.
Disclosure TimelineDemonstrated at Pwn2Own Berlin 2026 → Microsoft advisory 2026-08-11 (August Patch Tuesday) → Full PoC published September 2026.
ResearcherSiyeon Wi — Pwn2Own Berlin 2026 participant. Known Windows kernel researcher.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (7.8/10)

The single most decisive factor is universal kernel-mode footprint with public PoC: HTTP.sys is loaded on every Windows installation including domain controllers, hypervisors, and backup servers, and a weaponized exploit is now freely available, making this a reliable post-access-to-SYSTEM escalation primitive. The local-access-only prerequisite prevents an upgrade to CRITICAL but the role-multiplier floor (SYSTEM on a DC = domain compromise) anchors the verdict firmly at HIGH.

HIGH Vulnerability severity and exploitability assessment
HIGH Affected version range and patch availability
MEDIUM In-the-wild exploitation status (PoC is fresh; lag before active campaigns is typical but uncertain)

Why this verdict

  • Public PoC lowers the bar to zero: Siyeon Wi's Pwn2Own demonstration and subsequent full PoC publication mean any post-access operator can add this to their toolkit. The exploit is not theoretical — it was demonstrated live and the code is available.
  • Universal attack surface: HTTP.sys ships as a default kernel-mode driver on every Windows version from Server 2012 through Windows 11 26H1. There is no configuration that removes it. Every Windows host in your fleet is a valid target once an attacker has local access.
  • Role multiplier — DC / Hyper-V / backup server: On a domain controller, SYSTEM privileges from this exploit yield effective domain-admin access (DCSync, krbtgt extraction, GPO manipulation). On Hyper-V hosts, SYSTEM can access VM configurations. On backup admin servers (Veeam, Commvault), SYSTEM means backup-data exfiltration. These high-value roles represent a significant fraction of Windows Server installations, establishing a HIGH floor.
  • Local-only vector provides meaningful friction: AV:L means the attacker must already have a foothold — this cannot be sprayed across the internet. Each target requires a prior compromise step, which compounds defensive opportunities (phishing defenses, EDR, network segmentation).
  • VBS/HVCI and kCFG add modern-build friction: On Windows 11 and Server 2025 with VBS and Hypervisor-protected Code Integrity enabled, kernel code execution from a heap overflow is significantly harder. Enterprises running modern hardened builds have a real mitigation layer, though legacy Server 2016/2019 fleets do not.

Why not higher?

The local access vector (AV:L) is the hard constraint preventing a CRITICAL rating. Unlike remote HTTP.sys bugs (CVE-2021-31166, CVE-2022-21907), this cannot be weaponized for initial access or worm-like propagation. The attacker must already be inside the perimeter and on the target host. Additionally, there is no confirmed in-the-wild exploitation and the bug is not KEV-listed, so urgency is elevated but not emergency-tier.

Why not lower?

The role-multiplier floor prevents any downgrade below HIGH. HTTP.sys is not an optional component — it is present on 100% of Windows installations, including every domain controller, every Hyper-V host, and every backup server in a Windows environment. SYSTEM on these hosts is fleet-compromise-scale impact. The public PoC eliminates any complexity discount. Even with the local-access prerequisite, this is exactly the kind of LPE that ransomware operators and APTs chain after initial phishing or RDP compromise.

05 · Compensating Control

What to do — in priority order.

  1. Enable VBS and HVCI on all supported hosts — Virtualization-Based Security and Hypervisor-protected Code Integrity prevent unsigned kernel code execution, which breaks the exploit's final stage. Deploy via Group Policy (Turn On Virtualization Based Security) or Intune baseline. Prioritize domain controllers and Hyper-V hosts. Target deployment within 30 days per the noisgate mitigation SLA for HIGH severity.
  2. Enforce WDAC or AppLocker to block unauthorized binaries — Application control prevents the PoC executable (or any attacker-compiled binary) from running. This doesn't block the vulnerability but blocks the known exploitation tool. Deploy in audit mode first, then enforce on servers within 30 days.
  3. Restrict interactive logon on high-value servers — Limit which accounts can log on interactively to domain controllers, Hyper-V hosts, and backup servers. Use Group Policy 'Allow log on locally' and 'Deny log on through Remote Desktop Services' to minimize the pool of accounts that could trigger the exploit. This directly raises the cost of step 1 in the attack chain.
  4. Deploy kernel exploit detection rules in EDR — Enable kernel exploitation heuristics in CrowdStrike, Defender for Endpoint, or SentinelOne. These detect anomalous kernel pool manipulation and token replacement patterns. Ensure coverage on all Windows servers within 30 days.
  5. Prioritize patching on DCs, Hyper-V, and backup servers — If fleet-wide patching takes time, segment the rollout: patch domain controllers, hypervisors, ADCS servers, and backup infrastructure first. These are the hosts where SYSTEM = domain/fleet compromise. Complete within 30 days for these tiers.
What doesn't work
  • Network firewalls / WAF / IDS — This is a local privilege escalation triggered via IOCTL, not a network-visible attack. No network-layer control can detect or block it.
  • Disabling IIS or HTTP listener services — HTTP.sys is a kernel driver loaded regardless of whether IIS is installed or the HTTP service is started. Stopping the HTTP service does not unload the driver or remove the IOCTL interface.
  • Windows Defender SmartScreen — SmartScreen applies to downloaded files from the internet and does not inspect IOCTL traffic to kernel drivers. It will not block an attacker who compiles the PoC locally or delivers it via a C2 framework.
06 · Verification

Crowdsourced verification payload.

Run on each target Windows host with local administrator privileges. Execute: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-62735.ps1. The script checks the installed build number of HTTP.sys against the known patched builds from August 2026 Patch Tuesday.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#Requires -RunAsAdministrator
<#
.SYNOPSIS
    Check whether CVE-2026-62735 (HTTP.sys heap overflow) is patched.
.NOTES
    Compares http.sys file version against known-patched builds.
    Exit 0 = PATCHED, Exit 1 = VULNERABLE, Exit 2 = UNKNOWN
#>

$httpSysPath = "$env:SystemRoot\System32\drivers\http.sys"
if (-not (Test-Path $httpSysPath)) {
    Write-Output "UNKNOWN - http.sys not found at expected path"
    exit 2
}

$fileVersion = (Get-Item $httpSysPath).VersionInfo.FileVersionRaw
$major = $fileVersion.Major   # 10
$minor = $fileVersion.Minor   # 0
$build = $fileVersion.Build
$rev   = $fileVersion.Revision

Write-Output "Detected http.sys version: $major.$minor.$build.$rev"

# Patched build numbers from August 2026 Patch Tuesday
# Format: build -> minimum patched revision
$patchedRevisions = @{
    14393 = 9418   # Server 2016 / Win10 1607
    17763 = 9121   # Server 2019 / Win10 1809
    19044 = 7663   # Win10 21H2
    19045 = 7663   # Win10 22H2
    22621 = 5900   # Win11 22H2 (estimated)
    22631 = 5900   # Win11 23H2 (estimated)
    26100 = 3200   # Win11 24H2 / Server 2025 (estimated)
}

if ($major -ne 10 -or $minor -ne 0) {
    Write-Output "UNKNOWN - Unexpected OS major/minor version ($major.$minor)"
    exit 2
}

if ($patchedRevisions.ContainsKey($build)) {
    $requiredRev = $patchedRevisions[$build]
    if ($rev -ge $requiredRev) {
        Write-Output "PATCHED - http.sys $major.$minor.$build.$rev >= required $requiredRev"
        exit 0
    } else {
        Write-Output "VULNERABLE - http.sys $major.$minor.$build.$rev < required $requiredRev"
        exit 1
    }
} else {
    # Build not in our lookup table - could be newer or older
    if ($build -gt 26100) {
        Write-Output "PATCHED - Build $build is newer than known affected range (likely patched)"
        exit 0
    } elseif ($build -lt 14393) {
        Write-Output "UNKNOWN - Build $build is older than supported range (likely EOL and vulnerable)"
        exit 2
    } else {
        Write-Output "UNKNOWN - Build $build not in patch lookup table; verify manually"
        exit 2
    }
}
07 · Bottom Line

If you remember one thing.

TL;DR
Patch domain controllers, Hyper-V hosts, ADCS servers, and backup infrastructure first — these are the hosts where this LPE ends in domain or fleet compromise. The public PoC (published September 2026) makes weaponization trivial for any operator with a local foothold. Per the noisgate mitigation SLA for HIGH severity, deploy compensating controls (VBS/HVCI enablement, application control, interactive-logon restrictions on high-value servers) within 30 days. Per the noisgate remediation SLA, complete fleet-wide patching of the August 2026 cumulative update within 180 days, but front-load Tier-0 assets (DCs, hypervisors, PKI, backup) into the first 30-day wave. There is no Microsoft workaround — the patch is the only fix. If your fleet still runs Server 2016 or 2019 without VBS, treat those hosts as higher priority since they lack the kernel hardening that makes exploitation harder on modern builds.

Sources

  1. SecurityOnline — CVE-2026-62735 PoC and Technical Details
  2. NVD — CVE-2026-62735 Detail
  3. MITRE CVE Record — CVE-2026-62735
  4. Tenable — CVE-2026-62735
  5. SentinelOne Vulnerability Database — CVE-2026-62735
  6. Qualys — Microsoft Patch Tuesday August 2026 Review
  7. Feedly CVE Intelligence — CVE-2026-62735
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.