← Back to Feed CACHED · 2026-10-06 19:32:58 · CACHE_KEY CVE-2026-14266
CVE-2026-14266 · CWE-122 · Disclosed 2026-07-29

7-Zip XZ Decompression MixCoder_Code Heap-Based Buffer Overflow

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

Like a locked vault with a cracked hinge — the door hasn't been kicked in yet, but everyone can see where to push

CVE-2026-14266 is a heap-based buffer overflow in 7-Zip's XZ decompression routine, specifically in the MixCoder_Code() function within C/XzDec.c. When processing multi-threaded XZ streams, the decoder passes the *full* output buffer length to the LZMA2 decoder on each pass instead of the *remaining* space after prior writes. A crafted .xz archive triggers an out-of-bounds heap write, corrupting adjacent allocations. The bug has lurked in every 7-Zip release from 21.07 (December 2021) through 26.01 — a five-year window. Version 26.02, shipped June 25, 2026, contains the three-line fix. No privilege escalation is involved; code execution lands in the context of the current user.

The vendor's CVSS 7.8 (HIGH) with AC:L is slightly generous. ZDI's own advisory (ZDI-26-444) scores it 7.0 with AC:H, reflecting the reality that reliable heap exploitation on modern Windows — with ASLR, DEP, CFG, and segment heap randomization all in play — is significantly harder than triggering a crash. Public PoC repos on GitHub demonstrate a *reliable crash* but explicitly describe RCE as 'in progress — needs heap layout analysis.' Until a weaponized exploit surfaces, the practical severity sits at the lower end of HIGH. That said, 7-Zip's enormous installed base, complete lack of auto-update, and five-year vulnerability window make this a patching headache that will linger for years across enterprise fleets.

"Heap overflow in the world's most common archiver — no working RCE yet, but crash PoCs are public."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Craft malicious XZ archive

The attacker generates a .xz file with corrupted chunk metadata that causes MixCoder_Code() to miscalculate the remaining output buffer size. The poc-cve-2026-14266-rce.py script from liyuxuan504-byte/CVE-2026-14266 and the crash generator from 4minx/CVE-2026-14266 automate this. The crafted archive appears structurally valid to 7-Zip's parser and enters the vulnerable code path during multi-threaded decompression.
Conditions required:
  • Knowledge of the XZ chunk format and the specific MixCoder_Code() buffer miscalculation
Where this breaks in practice:
  • Public PoC generators produce crashes, not RCE — weaponization requires per-target heap layout research and an info-leak primitive
STEP 02

Deliver archive to victim

The malicious .xz file is delivered via email attachment, download link, supply-chain artifact, or shared drive. XZ is a common compression format in developer toolchains, making it less suspicious than exotic formats. The file can be nested inside another archive (.tar.xz, .7z containing .xz) to bypass single-extension blocking rules.
Conditions required:
  • Attacker can reach the victim via email, web, or shared infrastructure
Where this breaks in practice:
  • Enterprise email gateways may strip or quarantine archive attachments
  • SmartScreen / MotW prompts warn on files downloaded from the internet
  • Content-disarm-and-reconstruct (CDR) solutions can neutralize archive payloads
Detection/coverage: Email gateway archive scanning; browser download reputation checks; EDR file-write telemetry on .xz files arriving from external sources
STEP 03

Victim opens or extracts the archive

The victim must actively invoke 7-Zip to open or extract the .xz file — double-click via shell integration, right-click → Extract, or 7z x on the command line. The vulnerability triggers during multi-threaded decompression (the default mode). Single-threaded mode (-mmt=1) avoids the vulnerable code path entirely, making it a viable workaround.
Conditions required:
  • 7-Zip ≤ 26.01 installed on the target host
  • User interaction — victim must open the file
  • Multi-threaded decompression enabled (default)
Where this breaks in practice:
  • Requires active user participation — no drive-by or auto-extract trigger
  • Security-aware users may not extract unexpected archives
  • CI/CD pipelines may use alternative decompression tools (tar, xz-utils) instead of 7-Zip
Detection/coverage: EDR process-tree monitoring for 7z.exe or 7zFM.exe activity; Sysmon Event ID 1 with ParentImage matching 7-Zip binaries
STEP 04

Heap overflow triggers memory corruption

During decompression, MixCoder_Code() writes beyond the allocated heap buffer. On LFH-range allocations (≤16 KB), the overflow is silent — no immediate crash — corrupting adjacent heap metadata or objects. Achieving code execution requires controlling the heap layout to overwrite a useful target (function pointer, vtable, or adjacent object). On modern Windows with ASLR + DEP + CFG, this demands a separate information-leak primitive not present in any current public PoC.
Conditions required:
  • 7-Zip process must be in a predictable heap state
  • ASLR/DEP/CFG bypass or info leak needed for reliable code execution
Where this breaks in practice:
  • Windows segment heap and LFH randomization make layout prediction difficult
  • CFG prevents most vtable/function-pointer overwrites on Windows 10/11 builds
  • Without an info leak, exploitation is probabilistic — crashes are far more likely than shells
Detection/coverage: Windows Error Reporting (WER) crash reports for 7z.exe / 7zFM.exe with heap corruption signatures; CrowdStrike / Defender for Endpoint memory corruption alerts
STEP 05

Code execution as current user

If heap layout control succeeds, the attacker achieves arbitrary code execution in the context of the 7-Zip process, running as the logged-in user. There is no built-in privilege escalation — the attacker lands with whatever permissions the user has. On a workstation this is a standard initial-access foothold; on a CI/CD build agent running as a service account it may grant broader access to source repos, signing keys, or deployment credentials.
Conditions required:
  • Successful heap exploitation (step 4)
Where this breaks in practice:
  • No privilege escalation — bounded to current user's permissions
  • EDR and AMSI can detect post-exploitation payloads (shellcode, Cobalt Strike beacons)
  • Application control (WDAC/AppLocker) can block unsigned code spawned from 7-Zip
Detection/coverage: EDR behavioral detection for process injection, anomalous network connections from 7z.exe, or LOLBin execution from 7-Zip process tree
03 · Compensating Control

1
HIGH 7.0→IGNORE 0.0
SEVERITY REDUCED
Deploy 7-Zip 26.02 fleet-wide via SCCM / Intune / PDQ Deploy — The definitive fix. 7-Zip has no auto-update — push the MSI/EXE via your software deployment tooling. Per the noisgate mitigation SLA for HIGH, begin deployment within 30 days. Prioritize CI/CD build agents, developer workstations, and shared jump-boxes first, then roll to general endpoints. This completely eliminates the vulnerability.
2
HIGH 7.0→IGNORE 0.0
SEVERITY REDUCED
Force single-threaded XZ decompression via -mmt=1 — The vulnerability is exclusively in the multi-threaded XZ decoder path. Setting the registry key HKCU\Software\7-Zip\Options\NumThreads to 1, or wrapping 7-Zip invocations with -mmt=1, avoids the vulnerable MixCoder_Code() logic entirely. Deploy within the 30-day mitigation SLA via GPO or Intune registry push if patching is delayed. Minimal performance impact for occasional archive extraction.
3
HIGH 7.0→MEDIUM 5.5
SEVERITY REDUCED
Block .xz attachments at the email gateway — Most enterprises have no legitimate business need to receive .xz files via email. Block .xz, .tar.xz, and .txz extensions (and MIME type application/x-xz) at the email gateway. This eliminates the highest-volume delivery vector. Deploy within 30 days per the mitigation SLA. Does NOT protect against web downloads, shared drives, or supply-chain artifacts — residual risk remains for those vectors.
4
HIGH 7.0→HIGH 6.5
Enable EDR monitoring for anomalous 7-Zip child processes — Create detection rules for 7z.exe or 7zFM.exe spawning unexpected child processes (cmd.exe, powershell.exe, rundll32.exe, mshta.exe) or making outbound network connections. This is post-exploitation detection — it catches successful exploitation but does not prevent the overflow. Most EDR vendors (CrowdStrike, SentinelOne, Defender for Endpoint) support parent-child process analytics out of the box. Deploy within 30 days.
5
HIGH 7.0→MEDIUM 5.0
SEVERITY REDUCED
Enable Windows Exploit Protection (CFG + ACG) for 7-Zip binaries — Apply per-process exploit mitigations via Windows Defender Exploit Guard: enable Control Flow Guard (CFG), Arbitrary Code Guard (ACG), and mandatory ASLR for 7z.exe, 7zFM.exe, and 7zG.exe. These raise the bar for heap exploitation significantly by preventing function-pointer hijacking and dynamic code generation. Configure via Intune Endpoint Security profile or GPO. Breaks the heap-to-RCE step of the chain without patching the overflow itself.
What doesn't work
  • Network segmentation / firewall rules — 7-Zip is a local application with no network listener. Network controls do not affect file-based attack delivery or local decompression.
  • WAF / IPS signatures — No network protocol is involved in exploitation. The overflow occurs during local file decompression, not over HTTP or SMB.
  • MFA / credential hardening — This is not an authentication bypass. The attacker exploits a parsing flaw in a decompression routine.
  • Mark of the Web (MotW) — MotW triggers SmartScreen warnings for *extracted* files, but does NOT prevent 7-Zip from *decompressing* the archive. The heap overflow fires during decompression, before any MotW-based check on output content.
  • Disabling 7-Zip shell integration — Removing right-click context menu entries does not prevent a user from opening 7z File Manager or running 7z.exe directly. The vulnerable code path is in the decompression engine, not the shell extension.
04 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNone observed. Not listed in CISA KEV. No campaigns reported by Mandiant, CrowdStrike, Microsoft Threat Intelligence, or any major threat-intel vendor as of October 2026.
Proof-of-ConceptCrash PoC available; no weaponized RCE. Two GitHub repos: 4minx/CVE-2026-14266 (crash generator, tested on 7-Zip 26.01/Win11 x64) and liyuxuan504-byte/CVE-2026-14266 (full analysis + PoC generator + exploitation roadmap by Landon Peng's writeup; RCE explicitly listed as 'in progress — needs heap layout analysis on target'). Neither produces a working code-execution payload. Crash is confirmed reliable on 7-Zip 26.00 x64.
EPSS0.00742 (0.742% probability) of exploitation in the next 30 days. Low — reflects the absence of a weaponized exploit and limited attacker interest to date.
CISA KEVNot listed as of 2026-10-07.
CVSS Vector DiscrepancyNVD/Vendor: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H → 7.8. ZDI (ZDI-26-444): CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H → 7.0. The discrepancy is AC:L vs AC:H. ZDI's AC:H better reflects the heap exploitation difficulty on modern Windows with ASLR, DEP, CFG, and segment heap.
Affected Versions7-Zip 21.07 (December 2021) through 26.01 — all builds in this 5-year range use the vulnerable MixCoder_Code() logic in C/XzDec.c.
Fixed Version7-Zip 26.02 (released 2026-06-25). Three-line patch clamps destLen2 against remaining buffer capacity before each LZMA2 decoder call. No distro backports — 7-Zip is typically installed standalone on Windows.
Scanning / Exposure7-Zip is a client-side application with no network listener — Shodan/Censys/GreyNoise are not applicable. Asset inventory tools (Qualys, Rapid7 InsightVM, Tanium, Microsoft Intune) can enumerate installed versions. Qualys QID and Tenable plugin IDs are available for version-based detection.
Disclosure TimelineReported to vendor 2026-06-05 by Landon Peng (Lunbun LLC). Patch shipped 2026-06-25 in 7-Zip 26.02. ZDI advisory ZDI-26-444 published 2026-07-15. NVD entry published 2026-07-29.
ResearcherLandon Peng of Lunbun LLC, credited via Trend Micro's Zero Day Initiative (ZDI).

Sources.

  1. ZDI-26-444 — Zero Day Initiative Advisory
  2. NVD — CVE-2026-14266
  3. The Hacker News — 7-Zip XZ Archive RCE
  4. liyuxuan504-byte — PoC + Root Cause Analysis (GitHub)
  5. 4minx — Crash PoC Generator (GitHub)
  6. SOCRadar — 7-Zip CVE-2026-14266 Risk Analysis
  7. SentinelOne Vulnerability Database
  8. SecurityOnline — Technical Writeup
05 · The Call

Final Verdict
= UNCHANGED to HIGH (7.0/10)

Why this verdict

  • Attack complexity is HIGH, not LOW: ZDI rates this AC:H in ZDI-26-444, and the evidence supports it — public PoCs produce reliable *crashes* but RCE is explicitly 'in progress.' Heap exploitation on modern Windows with ASLR, DEP, CFG, and segment heap randomization requires a separate info-leak primitive that nobody has published. Adjusting from AC:L to AC:H drops the CVSS from 7.8 to 7.0.
  • No in-the-wild exploitation or weaponized exploit: Zero KEV listing, no campaign intelligence from any major threat-intel vendor, EPSS at 0.742%. The threat is theoretical today. Crash-to-RCE is a non-trivial gap for heap overflows against hardened allocators — this is not a 'script-kiddie ready' bug.
  • User interaction and local vector constrain reach: The attacker must deliver a file AND convince a user to extract it with 7-Zip. This is standard initial-access friction (comparable to malicious Office docs), but it means no wormable or drive-by exploitation. Email gateways, SmartScreen, and CDR all create friction at the delivery stage.
  • Role multiplier: On workstations (>85% of 7-Zip installs), the chain yields user-context code execution — a standard initial-access foothold with host-level blast radius. On CI/CD build agents (~5% of installs), automated extraction of untrusted .xz artifacts could yield supply-chain-scale compromise if an attacker controls an upstream artifact; the chain succeeds there with supply-chain blast radius. On developer workstations, the user context often has access to source repos, signing keys, and deployment credentials — amplifying the host-level impact to tenant/org scope. The ≥1% high-value-role scenario with supply-chain outcome sets the HIGH floor. 7-Zip is not canonically a high-value-role component (it is a utility installed across all roles), so the ≥10% CRITICAL floor does not trigger.

Why not higher?

CRITICAL is not warranted. The attack requires local file delivery AND user interaction — there is no remote, unauthenticated, or wormable vector. No public weaponized RCE exploit exists, only crash PoCs, and heap exploitation on modern Windows is unreliable without an info leak that nobody has published. The process runs as the current user with no privilege escalation. 7-Zip is not canonically a high-value-role component, so fewer than 10% of installs occupy high-value roles, and the CRITICAL floor rule does not trigger.

Why not lower?

MEDIUM would undervalue the risk. 7-Zip is installed on virtually every Windows endpoint in the enterprise and has no auto-update mechanism — the exposed population is enormous and will shrink slowly. Crash PoCs with detailed exploitation roadmaps are already public on GitHub, making weaponization a matter of researcher effort rather than a fundamental barrier. The 5-year vulnerability window (21.07–26.01) guarantees a long tail of unpatched installs. CI/CD pipeline usage at ≥1% of the installed base creates supply-chain exposure that holds the HIGH floor.

06 · Verification

Crowdsourced verification payload.

Run on each target Windows host, or push fleet-wide via SCCM/Intune script deployment. No elevation required — standard user privileges suffice. Example: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-14266.ps1. Exit code 1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
# Check-CVE-2026-14266.ps1
# Detects 7-Zip installations vulnerable to CVE-2026-14266 (< 26.02)
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit:   1 = VULNERABLE, 0 = PATCHED, 2 = UNKNOWN

$ErrorActionPreference = 'SilentlyContinue'
$PatchedMajor = 26
$PatchedMinor = 2
$found = $false

# Build candidate paths from registry + well-known locations
$candidates = @()
$regKeys = @(
    'HKLM:\SOFTWARE\7-Zip',
    'HKLM:\SOFTWARE\WOW6432Node\7-Zip',
    'HKCU:\SOFTWARE\7-Zip'
)
foreach ($rk in $regKeys) {
    if (Test-Path $rk) {
        $p = (Get-ItemProperty -Path $rk -Name 'Path' -ErrorAction SilentlyContinue).Path
        if ($p) { $candidates += Join-Path $p '7z.exe' }
    }
}
$candidates += "$env:ProgramFiles\7-Zip\7z.exe"
$candidates += "${env:ProgramFiles(x86)}\7-Zip\7z.exe"
$candidates = $candidates | Select-Object -Unique

foreach ($exe in $candidates) {
    if (Test-Path $exe) {
        $found = $true
        # Parse version from 7z.exe console banner, e.g. "7-Zip 26.02 (x64) : ..."
        $banner = & $exe 2>&1 | Select-Object -First 3 | Out-String
        if ($banner -match '7-Zip\s+(\d+)\.(\d+)') {
            $major = [int]$Matches[1]
            $minor = [int]$Matches[2]
            if (($major -gt $PatchedMajor) -or (($major -eq $PatchedMajor) -and ($minor -ge $PatchedMinor))) {
                Write-Output "PATCHED - 7-Zip $major.$($minor.ToString('D2')) at $exe (>= 26.02)"
                exit 0
            } else {
                Write-Output "VULNERABLE - 7-Zip $major.$($minor.ToString('D2')) at $exe (< 26.02) - CVE-2026-14266"
                exit 1
            }
        } else {
            Write-Output "UNKNOWN - Found $exe but could not parse version from banner output"
            exit 2
        }
    }
}

if (-not $found) {
    Write-Output "UNKNOWN - 7-Zip not found in standard locations or registry"
    exit 2
}