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.
5 steps from start to impact.
Craft malicious XZ archive
.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.- Knowledge of the XZ chunk format and the specific MixCoder_Code() buffer miscalculation
- Public PoC generators produce crashes, not RCE — weaponization requires per-target heap layout research and an info-leak primitive
Deliver archive to victim
.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.- Attacker can reach the victim via email, web, or shared infrastructure
- 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
.xz files arriving from external sourcesVictim opens or extracts the archive
.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.- 7-Zip ≤ 26.01 installed on the target host
- User interaction — victim must open the file
- Multi-threaded decompression enabled (default)
- 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
7z.exe or 7zFM.exe activity; Sysmon Event ID 1 with ParentImage matching 7-Zip binariesHeap overflow triggers memory corruption
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.- 7-Zip process must be in a predictable heap state
- ASLR/DEP/CFG bypass or info leak needed for reliable code execution
- 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
7z.exe / 7zFM.exe with heap corruption signatures; CrowdStrike / Defender for Endpoint memory corruption alertsCode execution as current user
- Successful heap exploitation (step 4)
- 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
7z.exe, or LOLBin execution from 7-Zip process treeHKCU\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..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.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.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.- 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.exedirectly. The vulnerable code path is in the decompression engine, not the shell extension.
The supporting signals.
| In-the-Wild Exploitation | None 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-Concept | Crash 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. |
| EPSS | 0.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 KEV | Not listed as of 2026-10-07. |
| CVSS Vector Discrepancy | NVD/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 Versions | 7-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 Version | 7-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 / Exposure | 7-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 Timeline | Reported 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. |
| Researcher | Landon Peng of Lunbun LLC, credited via Trend Micro's Zero Day Initiative (ZDI). |
Sources.
- ZDI-26-444 — Zero Day Initiative Advisory
- NVD — CVE-2026-14266
- The Hacker News — 7-Zip XZ Archive RCE
- liyuxuan504-byte — PoC + Root Cause Analysis (GitHub)
- 4minx — Crash PoC Generator (GitHub)
- SOCRadar — 7-Zip CVE-2026-14266 Risk Analysis
- SentinelOne Vulnerability Database
- SecurityOnline — Technical Writeup
Why this verdict
- Attack complexity is HIGH, not LOW: ZDI rates this
AC:Hin 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 fromAC:LtoAC:Hdrops 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
.xzartifacts 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.
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.
# 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
}