Skip to main content

py7zr CVE-2026-55195

| EUVDEUVD-2026-42396 HIGH
Improper Handling of Highly Compressed Data (Data Amplification) (CWE-409)
2026-06-19 https://github.com/miurahr/py7zr GHSA-gjrg-mpp7-g774
8.7
CVSS 4.0 · Vendor: https://github.com/miurahr/py7zr
Share

Severity by source

Vendor (https://github.com/miurahr/py7zr) PRIMARY
8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
7.5 HIGH

Attacker-supplied archive extracted by a server-side library needs no auth or privileges (PR:N) at low complexity (AC:L); impact is availability-only (A:H, C/I:N).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
MEDIUM
qualitative
Red Hat
6.5 MEDIUM
qualitative

Primary rating from Vendor (https://github.com/miurahr/py7zr).

CVSS VectorVendor: https://github.com/miurahr/py7zr

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

6
Analysis Updated
Jul 08, 2026 - 21:34 vuln.today
v3 (cvss_changed)
Analysis Updated
Jul 08, 2026 - 21:32 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jul 08, 2026 - 21:22 vuln.today
cvss_changed
CVSS changed
Jul 08, 2026 - 21:22 NVD
8.7 (HIGH)
Source Code Evidence Fetched
Jun 19, 2026 - 23:43 vuln.today
Analysis Generated
Jun 19, 2026 - 23:43 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 406 pypi packages depend on py7zr (251 direct, 159 indirect)

Ecosystem-wide dependent count for version 1.1.3.

DescriptionCVE.org

py7zr's Worker.decompress() extracts archive entries without tracking total decompressed size. A crafted .7z file can exhaust disk or memory before the extraction completes.

Measured: 15.6 KB archive → 100 MB output (6,556:1 ratio).

Proof of concept:

python
import py7zr, tempfile, os
# create bomb: compress 100MB of zeros into ~15KB
bomb_path = tempfile.mktemp(suffix='.7z')
with py7zr.SevenZipFile(bomb_path, 'w') as z:
    import io
    z.writef(io.BytesIO(b'\x00' * 100 * 1024 * 1024), 'bomb.bin')

print(f'archive size: {os.path.getsize(bomb_path):,} bytes')
# extract - no size check
with py7zr.SevenZipFile(bomb_path, 'r') as z:
    z.extractall(path=tempfile.mkdtemp())

print('extracted 100 MB from ~15 KB archive')

Root cause: Worker.decompress() in py7zr/worker.py writes decompressed data directly to disk without a running total or configurable size limit. There is no equivalent of Python's zipfile max_size parameter.

Fix: track cumulative decompressed bytes and raise before writing if a limit is exceeded:

python
MAX_EXTRACT_SIZE = 2 * 1024 ** 3
# 2 GB default, configurable

total = 0
for chunk in decompressed_chunks:
    total += len(chunk)
    if total > MAX_EXTRACT_SIZE:
        raise py7zr.exceptions.DecompressionBombError(
            f'Extraction aborted: decompressed size exceeded {MAX_EXTRACT_SIZE} bytes'
        )
    outfile.write(chunk)

Tested on py7zr 0.22.0, Python 3.12, Ubuntu 22.04.

AnalysisAI

Denial-of-service via decompression bomb in py7zr, the pure-Python 7-Zip library, affects all versions up to and including 1.1.2. The library's Worker.decompress() writes extracted data to disk or memory without tracking cumulative decompressed size, so a tiny crafted .7z (demonstrated at a 6,556:1 ratio - 15.6 KB expanding to 100 MB) can exhaust disk or RAM on any application that extracts untrusted archives. Publicly available exploit code exists (a working PoC is published in the GHSA advisory), but the issue is not listed in CISA KEV; CVSS 4.0 rates it 8.7 (High) with pure availability impact.

Technical ContextAI

py7zr (pkg:pip/py7zr) is a widely-used pure-Python implementation of the 7-Zip (LZMA/LZMA2) archive format, commonly embedded in file-processing pipelines, upload handlers, malware sandboxes, and backup tooling. The root cause is CWE-409 (Improper Handling of Highly Compressed Data, i.e. data amplification / 'zip bomb'): Worker.decompress() in py7zr/worker.py streams decompressed chunks straight to the output file with no running byte counter and no configurable ceiling, unlike Python's standard zipfile which exposes size guards. Because the 7z/LZMA format achieves very high ratios on repetitive input (e.g. runs of zero bytes), an attacker can encode gigabytes of output in a kilobyte-scale archive, and the decompression loop will materialize all of it before extraction returns.

RemediationAI

Vendor-released patch: 1.1.3 - upgrade py7zr to >= 1.1.3 (e.g. pip install --upgrade 'py7zr>=1.1.3'), which adds a max_extract_size constructor parameter that tracks cumulative decompressed bytes and aborts extraction once the limit is exceeded; the 1.1.3 release (https://github.com/miurahr/py7zr/releases/tag/v1.1.3) also bundles fixes for CVE-2026-23879 and CVE-2026-55206, so upgrading is doubly worthwhile. After upgrading, explicitly set max_extract_size to a value appropriate for your workload rather than relying on the default, accepting the trade-off that legitimately large archives will be rejected. If you cannot upgrade immediately, apply compensating controls before extraction: enforce a decompression quota at the OS or container level (run extraction in a cgroup/ulimit-bounded worker or on a disk-quota'd tmpfs so a bomb hits a hard limit instead of exhausting the host), reject archives whose declared uncompressed size or entry count is implausibly large relative to the compressed size, and isolate extraction in a disposable sandbox - noting these controls add operational complexity and may need tuning to avoid false rejections. The corresponding upstream fix commit is https://github.com/miurahr/py7zr/commit/28faf107b64374fa5a02bfb93aa2024e281ca97b.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed

Share

CVE-2026-55195 vulnerability details – vuln.today

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