Upgrading zip 8 to 9
Breaking8.6.0 → 9.2.1Breaking9Security12New25Changed15Fixed54Other32
Fetching 15 releases from GitHub…13 / 15
BreakingUpgrade verdict
9 breaking changes and 12 security fixes.
In plain terms
- Removes the never-read ZipFileData::extra_data_start field.
- Removes the inner compression method from AES options.
- Removes deprecated *_zip64_comment methods.
- Removes deprecated elements.
Must act Top 5 of 21 that need code or config changes
What you must change
Breaking9
Removes the never-read ZipFileData::extra_data_start field.
ZipFileData::extra_data_startRemoves the inner compression method from AES options.
Removes deprecated *_zip64_comment methods.
*_zip64_commentRemoves deprecated elements.
Removes fields from ZipFileData.
ZipFileDataRemoves macro export.
Uses ZipFileEntry instead of ZipStreamFileMetadata.
ZipFileEntryZipStreamFileMetadataChanges
aes_mode to aes_settings() in ZipFileData.ZipFileDataaes_modeaes_settings()Stores the file_name_raw only as key.
file_name_rawSecurity12
Wipes AES round keys when the cipher is dropped.
Zeroizes the AesCtrZipKeyStream buffer and counter on drop.
AesCtrZipKeyStreamPrevents symlink-follow truncation during extraction via FILE_FLAG_OPEN_REPARSE_POINT.
FILE_FLAG_OPEN_REPARSE_POINTzip: Critical Parser Differential & Security Control Bypass via Dual-Header Inconsistencies (Zip Cloaking) Leading to Arbitrary File Overwrite & RCE
CriticalInsecure Preservation of SUID/SGID Bits during ZIP Extraction Leading to Potential Privilege Escalation
High · CVSS 7.3zip:
ZipArchive::extract creates symbolic links whose attacker-controlled targets are outside the destination directoryZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the target
Critical · CVSS 9.1zip: AES Entry HMAC Authentication Bypass on Premature EOF
Moderate · CVSS 6.5zip: legacy Shrink/Reduce/Implode decoder: denial of service from attacker-controlled ZIP64 uncompressed size
High · CVSS 7.5zip: Arbitrary file write outside the extraction directory, because ZipArchive::extract validates symlink targets lexically.
High · CVSS 7.4zip: Unbounded Symlink-Target Handling Can Abort Or Exhaust Memory During Extraction
High · CVSS 7.5Zeroizes derived_key when dropped and suppresses error details that may be sensitive.
derived_key