CVE-2026-22184: 
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-22184 is a global buffer overflow vulnerability in the untgz demonstration utility bundled with zlib versions up to and including 1.3.1.2. The flaw resides in the TGZfname() function within contrib/untgz/untgz.c, which performs an unbounded strcpy() of a user-supplied archive name into a fixed-size 1024-byte static global buffer. Importantly, the vulnerability is disputed and scoped to the standalone untgz demo utility — it does not affect the core zlib compression library. It was first reported via Full Disclosure on December 29, 2025, and assigned a CVE on January 7, 2026. NIST NVD rates it CVSS v3.1 7.8 (High) with a local attack vector, while the assigning CNA (VulnCheck) rates it CVSS v4.0 4.6 (Medium) (VulnCheck Advisory, GitHub Issue).

Technical details

The root cause is classified as CWE-787 (Out-of-bounds Write) and CWE-120 (Buffer Copy without Checking Size of Input). In TGZfname(), the archive name is taken directly from argv[] and copied into a 1024-byte static global buffer via an unchecked strcpy() call — no length validation is performed before or during the copy. Because the vulnerable buffer is globally allocated (not stack-allocated), an overflow corrupts adjacent global memory objects rather than a stack frame, and the overflow occurs before any archive parsing or validation takes place. Exploitation requires only passing an archive name argument longer than 1024 bytes on the command line, as demonstrated with AddressSanitizer output showing a WRITE of size 2001 at the global buffer address (GitHub Issue, Full Disclosure).

Impact

Successful exploitation can result in memory corruption of adjacent global objects, denial of service via crash, and potentially arbitrary code execution depending on compiler, build flags, architecture, and memory layout. Because the overflow affects global memory, corruption may persist beyond the function scope and influence subsequent program behavior. The impact is confined to systems where the untgz utility is compiled and invoked directly; the core zlib library used by the vast majority of applications is unaffected (VulnCheck Advisory, GitHub Issue).

Exploitability

There is no public proof-of-concept exploit code and no evidence of in-the-wild exploitation at this time. The EPSS score is approximately 0.081%, reflecting low probability of near-term exploitation. The CVE is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires local access and the ability to invoke the untgz utility with a crafted argument, significantly limiting the attack surface. The CVE is marked as disputed in NVD, reflecting debate about the severity given the utility's demo-only nature (VulnCheck Advisory, GitHub Issue).

Exploitation steps

  1. Identify target: Confirm the target system has the untgz utility compiled from zlib's contrib/untgz/ directory (version ≤ 1.3.1.2). This utility is not installed by default on most systems and must be explicitly built.
  2. Craft oversized argument: Prepare an archive name string exceeding 1024 bytes (e.g., using Python: python3 -c "print('A' * 4096)").
  3. Invoke the utility: Execute ./untgz <oversized_string>, passing the crafted string as the archive name argument on the command line.
  4. Trigger overflow: The TGZfname() function immediately copies the argument into the 1024-byte static global buffer via strcpy() without bounds checking, causing an out-of-bounds write into adjacent global memory.
  5. Achieve impact: Depending on compiler, build flags, and memory layout, the result may be a crash (DoS), memory corruption of adjacent global variables, or potentially code execution (GitHub Issue, Full Disclosure).

Indicators of compromise

  • Process: Unexpected crash or abnormal termination of the untgz process; AddressSanitizer or similar runtime error output referencing TGZfname in untgz.c:136.
  • Logs: System logs (e.g., /var/log/syslog, dmesg) showing segmentation faults or memory corruption errors from the untgz binary.
  • File System: Presence of a compiled untgz binary in non-standard locations, particularly if the system does not normally use zlib's contrib utilities.
  • Command History: Shell history entries showing invocation of untgz with unusually long arguments (>1024 characters).

Mitigation and workarounds

The zlib project released version 1.3.2 (February 2026) and 1.3.2.1, which should be evaluated for fixes; users should monitor the zlib GitHub repository for patch status specific to the untgz utility. As an immediate workaround, restrict or remove the compiled untgz binary from systems where it is not operationally required, since it is a demo utility not intended for production use. Input validation limiting archive name arguments to fewer than 1024 bytes can also mitigate the flaw. IBM has issued a security bulletin for IBM Instana Observability products affected by this vulnerability in the Instana Agent container image (IBM Advisory). Mageia and Fedora have also issued distribution-level advisories addressing this CVE (Linux Security Mageia).

Community reactions

Heise reported on the vulnerability under the headline "zlib: Critical security vulnerability allows code smuggling — no update yet," reflecting initial concern about the lack of an immediate patch (Heise). Security Online Info covered it with a CVSS 9.3 framing (based on VulnCheck's original pre-revision score), which generated notable community discussion on Reddit and Mastodon about the severity discrepancy between the original and revised scores. The CVE was subsequently marked as disputed in NVD after VulnCheck revised the description to clarify the utility's demo-only scope and downgraded the CVSS scores, which tempered broader alarm. The Hacker News weekly recap included it among notable vulnerabilities, and multiple Linux distribution security teams (Mageia, Fedora, openSUSE) issued advisories, indicating broad ecosystem awareness.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

zlib: 1:1.2.6.dfsg-1

Fixed

sid

zlib: 1:1.2.6.dfsg-1

Fixed

trixie

zlib: 1:1.2.6.dfsg-1

Fixed

Ubuntu

Unknown

bionic (esm-apps)

zsync

Unknown

bionic (esm-infra)

zlib

Not Affected

devel

zlib

Not Affected

focal (esm-apps)

zsync

Unknown

focal (esm-infra)

zlib

Not Affected

jammy

zlib

Not Affected

jammy (esm-apps)

zsync

Unknown

noble

zlib

Not Affected

RHEL / CentOS

Affected

OpenShift

openshift-logging/elasticsearch-operator-bundle

Affected

RHEL 8

mingw-zlib.src

Affected

RHEL 9

mingw-zlib.src

Affected

RHEL 10

mingw-zlib.src

Affected

Alpine

Fixed

edge

zlib: 0, 1.3.2-r0

Fixed

v3.20

zlib: 1.3.2-r0

Fixed

v3.21

zlib: 1.3.2-r0

Fixed

v3.22

zlib: 1.3.2-r0

Fixed

v3.23

zlib: 1.3.2-r0

Fixed

Source: This report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-112940HIGH7.1
  • Python logoPython
  • py3-filelock
NoYesOct 20, 2026
CVE-2026-112937MEDIUM6.1
  • Python logoPython
  • python-filelock
NoYesOct 20, 2026
CVE-2026-112936MEDIUM6.1
  • Python logoPython
  • python-filelock
NoYesOct 20, 2026
CVE-2026-112939MEDIUM4.7
  • Python logoPython
  • python-filelock
NoYesOct 20, 2026
CVE-2026-112941LOW3.3
  • Python logoPython
  • filelock
NoYesOct 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management