Skip to main content

zlib EUVDEUVD-2026-70301

| CVE-2026-85091 HIGH
Out-of-bounds Write (CWE-787)
2026-09-03 VulnCheck GHSA-g5fp-32jq-cfw2
8.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify app using zlib non-blocking gzwrite
  2. Delivery
    Send crafted writes to induce write stall
  3. Exploit
    Stale external buffer pointer persists in gz_vacate()
  4. Install
    Trigger gzprintf()/gzvprintf() call
  5. C2
    Unchecked memmove() overflows heap buffer
  6. Execute
    Corrupt adjacent heap metadata
  7. Impact
    Achieve code execution or crash

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the target application uses zlib's non-blocking gzip write interface (gzprintf() or gzvprintf() in a context where O_NONBLOCK or equivalent non-blocking behavior is active), and that the attacker can induce a prior write stall that leaves an external buffer pointer stale before the subsequent gzprintf()/gzvprintf() call. Applications using only blocking gzwrite() or that do not call gzprintf()/gzvprintf() after a stall are not vulnerable to this specific path. The CVSS AC:H metric confirms the non-default, state-dependent trigger; this limits mass exploitation but does not prevent targeted attacks against known-vulnerable application patterns. No authentication is required from the attacker's perspective once network access to the vulnerable service exists.

Impact

The provided CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H) scores 8.3, reflecting that exploitation requires navigating a specific application state - non-blocking mode plus a preceding write stall - but no authentication or user interaction once those conditions are met. AC:H is the principal risk-limiter: an attacker must be able to induce the stall state in the target application, which depends entirely on how the consuming application exposes the non-blocking gzip write path. zlib itself is ubiquitous, but only applications that use gzprintf()/gzvprintf() in non-blocking mode over attacker-influenced data are directly exploitable. No CISA KEV listing has been identified, and no EPSS data was provided; however, a public PoC gist exists (referenced via VulnCheck), which materially lowers the exploitation bar for targeted attack. The integrity and availability impacts are high (heap corruption can achieve code execution or crash), while confidentiality impact is nil (write-only primitive). Real-world exploitability is moderate-to-high for applications fitting the exposure profile; broad mass-exploitation is constrained by the AC:H pre-conditions.

Exploit ScenarioDerived

An attacker sends a stream of data to a network-facing service that uses zlib's non-blocking gzip write API, deliberately pacing writes to induce a write stall and leave the external buffer pointer in a stale state. A subsequent call to gzprintf() triggers gz_vacate(), which performs an unchecked memmove() beyond the internal input buffer boundary, corrupting adjacent heap metadata. A public PoC demonstrating this sequence is available at the referenced GitHub gist.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
1 PoC candidate (unverified) No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 03, 2026

Heap buffer overflow in zlib 1.3.1.2 through 1.3.2 allows remote attackers to corrupt memory via crafted input to applications using the non-blocking gzwrite API. The gz_vacate() function fails to bounds-check a memmove() when stale external buffer pointers are present after a write stall, reachable by calling gzprintf() or gzvprintf() in that state. A publicly available proof-of-concept exploit exists; no vendor-released patch has been identified at time of analysis.

RemediationAI

No vendor-released patch has been identified at time of analysis - the upstream zlib repository (https://github.com/madler/zlib) references v1.3.2 as the current release, which remains within the vulnerable range. Monitor the zlib GitHub repository for a patch release beyond v1.3.2. As compensating controls: disable non-blocking gzwrite mode (O_NONBLOCK / gz_nonblocking) in any application using zlib for gzip compression over attacker-influenced data, as this eliminates the write-stall precondition required to trigger gz_vacate() with a stale pointer. Applications that exclusively use blocking gzwrite() paths are not directly vulnerable through this specific code path. If non-blocking mode cannot be disabled, restrict the application's exposure to untrusted input at the network boundary via firewall rules or reverse-proxy filtering. Enable OS-level mitigations (ASLR, heap guard pages) to reduce exploitability of the heap overflow; note these are probabilistic mitigations, not fixes. Review the VulnCheck advisory at https://www.vulncheck.com/advisories/zlib-1.3.1.2-through-1.3.2-heap-buffer-overflow-via-gz-vacate for updates.

Affected VersionsENISA

zlib 1.3.1.2 ≤1.3.2

Affected Packages

euvd zlib no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

zlib is a foundational lossless data-compression library (CPE: cpe:2.3:a:zlib:zlib) used pervasively across operating systems, network stacks, and application software. The vulnerable code path is in gz_vacate() within gzwrite.c (line 393 in v1.3.2), invoked when the library needs to flush a gzip write buffer. In non-blocking mode, a prior gzwrite() call can stall - leaving an external (caller-supplied) buffer pointer in a stale, non-null state. When gzprintf() or gzvprintf() subsequently calls gz_vacate() without first invalidating or re-validating that stale pointer, an unchecked memmove() is performed that can write beyond the internal input buffer boundary. CWE-787 (Out-of-Bounds Write) correctly identifies the root cause as missing bounds enforcement on the destination buffer in this specific state machine transition.

Know when Zlib gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 8.3 HIGH
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.4 HIGH

Network-reachable through gzip-processing applications; AC:H for required non-blocking mode plus write-stall precondition; no confidentiality impact from this write-only heap overflow primitive.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

zlib versions 1.3.1.2 through 1.3.2 contain a heap buffer overflow vulnerability in the gz_vacate() function when processing non-blocking gzwrite() operations with stale external buffer pointers. Attackers can trigger the overflow by calling gzprintf() or gzvprintf() after a write stall, causing an unchecked memmove() to write beyond the internal input buffer boundary.

Technical POC Analysis

CWE-787: out-of-bounds write in zlib's gzwrite.c, function gzvacate(), affecting zlib 1.3.1.2 through 1.3.2.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Latest POC

1 PoC candidate from github (unverified)

Sign in to open the public PoC links collected for this CVE.

Executive ViewAI

Why It Matters

zlib versions 1.3.1.2 through 1.3.2 contain a heap buffer overflow in the non-blocking gzwrite() API that allows remote memory corruption in applications using this functionality. With publicly available exploit code and no vendor-released patch available, organizations face immediate risk of code execution or denial of service across systems and applications leveraging these vulnerable library versions.

Business Impact: High
Compensating Controls

Downgrade to zlib version 1.3.1.1 or earlier if operationally feasible. Disable or restrict non-blocking gzwrite(), gzprintf(), and gzvprintf() function calls at the application configuration or source code level where version downgrade is infeasible. Implement network segmentation to restrict network access to services using vulnerable zlib versions. Deploy application-level monitoring and logging for memory corruption errors, segmentation faults, or unexpected crashes in compression functions. Establish priority incident response procedures for systems exhibiting exploitation indicators including memory errors or abnormal termination during compression operations.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Ubiquitous
core compression library embedded in virtually all software stacks
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment MSRC Vendor CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

62
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

More in Zlib

View all
CVE-2022-37434 CRITICAL POC
9.8 Aug 05

zlib through 1.2.12 has a heap-based buffer over-read or buffer overflow in inflate in inflate.c via a large gzip header

CVE-2016-9841 CRITICAL
9.8 May 23

inffast.c in zlib 1.2.8 might allow context-dependent attackers to have unspecified impact by leveraging improper pointe

CVE-2016-9843 CRITICAL
9.8 May 23

The crc32_big function in crc32.c in zlib 1.2.8 might allow context-dependent attackers to have unspecified impact via v

CVE-2016-9840 HIGH
8.8 May 23

inftrees.c in zlib 1.2.8 might allow context-dependent attackers to have unspecified impact by leveraging improper point

CVE-2023-45853 CRITICAL
9.8 Oct 14

MiniZip in zlib through 1.3 has an integer overflow and resultant heap-based buffer overflow in zipOpenNewFileInZip4_64

CVE-2016-9842 HIGH
8.8 May 23

The inflateMark function in inflate.c in zlib 1.2.8 might allow context-dependent attackers to have unspecified impact v

CVE-2015-1191 MEDIUM POC
5.0 Jan 21

Multiple directory traversal vulnerabilities in pigz 2.3.1 allow remote attackers to write to arbitrary files via a (1)

CVE-2026-27171 LOW POC
2.9 Feb 18

zlib before 1.3.2 allows CPU consumption via crc32_combine64 and crc32_combine_gen64 because x2nmodp can do right shifts

CVE-2026-22184 MEDIUM
4.6 Jan 07

Local privilege escalation in zlib 1.3.1.2 and earlier allows authenticated users to achieve arbitrary code execution th

CVE-2013-0296 MEDIUM
4.4 Apr 27

Race condition in pigz before 2.2.5 uses permissions derived from the umask when compressing a file before setting that

CVE-2023-6992 MEDIUM
4.0 Jan 04

Cloudflare version of zlib library was found to be vulnerable to memory corruption issues affecting the deflation algori

CVE-2026-27820 LOW
1.7 Apr 16

Buffer overflow in the Ruby zlib gem's Zlib::GzipReader allows remote or local attackers supplying crafted gzip data to

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Micro 5.3 Not-Affected
SUSE Linux Enterprise Micro 5.4 Not-Affected
SUSE Linux Enterprise Micro 5.5 Not-Affected
SUSE Linux Enterprise Module for Basesystem 15 SP7 Not-Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy