Security Advisories (3)
CVE-2026-48959 (2026-05-27)

IO::Uncompress::Unzip versions before 2.220 for Perl allow CPU exhaustion via per-byte read loop in fastForward. fastForward() compares length $offset (the digit count of the offset, 1 to 19) against the chunk size $c instead of $offset itself, so $c shrinks from 16 KiB to 1-19 bytes per iteration. Extracting a named entry from an attacker supplied zip via IO::Uncompress::Unzip->new($zip, Name => $target) drives a per-byte read loop scaling with the entry's compressed size, up to the non-Zip64 4 GiB cap.

CVE-2026-48961 (2026-05-27)

IO::Compress versions from 2.207 before 2.220 for Perl ship a zipdetails CLI tool that crashes with undefined subroutine on Info-ZIP Unix Extra Field with 8-byte UID or GID. When decode_ux() in bin/zipdetails handles an Info-ZIP Unix Extra Field (tag 0x7875) with UID Size or GID Size set to 8, causing zipdetails to decode an 8-byte UID or GID value, it dispatches through decodeLitteEndian(), which calls a misnamed helper unpackValueQ. The actual function defined in the same file is unpackValue_Q (with underscore); the call raises 'Undefined subroutine &main::unpackValueQ' and the script exits with status 255. Library callers of IO::Compress and IO::Uncompress are not affected; the defect is in the bundled CLI tool.

CVE-2026-48962 (2026-05-27)

IO::Compress versions before 2.220 for Perl can execute arbitrary code in File::GlobMapper via an attacker-controlled output glob. _parseOutputGlob() wraps the caller-supplied output glob string in double quotes and stores it in the parser state; _getFiles() then runs the stored expression through eval STRING. A literal double quote in the output glob closes the dquote wrapper, and the characters that follow are evaluated as Perl. Arbitrary Perl in the output glob executes at the calling process's privilege.

Documentation

create a zip file from stdin
display the internal structure of zip files
Frequently Asked Questions about IO::Compress

Modules

Interface to zlib compression library
Extend File Glob to Allow Input and Output Files
read/write compressed data in multiple formats
Base Class for IO::Compress modules
Write bzip2 files/buffers
Write RFC 1950 files/buffers
Write RFC 1952 files/buffers
Write RFC 1951 files/buffers
Write zip files/buffers
Uncompress zlib-based (zip, gzip) file/buffer
Uncompress gzip, zip, bzip2, zstd, xz, lzma, lzip, lzf or lzop file/buffer
Base Class for IO::Uncompress modules
Read bzip2 files/buffers
Read RFC 1952 files/buffers
Read RFC 1950 files/buffers
Read RFC 1951 files/buffers
Read zip files/buffers

Provides

in lib/IO/Compress/Adapter/Bzip2.pm
in lib/IO/Compress/Adapter/Deflate.pm
in lib/IO/Compress/Adapter/Identity.pm
in lib/IO/Compress/Base/Common.pm
in lib/IO/Compress/Gzip/Constants.pm
in lib/IO/Compress/Zip/Constants.pm
in lib/IO/Compress/Zlib/Constants.pm
in lib/IO/Compress/Zlib/Extra.pm
in lib/IO/Uncompress/Adapter/Bunzip2.pm
in lib/IO/Uncompress/Adapter/Identity.pm
in lib/IO/Uncompress/Adapter/Inflate.pm
U64
in lib/IO/Compress/Base/Common.pm
in lib/Compress/Zlib.pm
in lib/Compress/Zlib.pm