Executive brief
7-Zip is a widely used file archiving utility. A flaw in how it handles UEFI firmware images could allow a specially crafted file to crash the application or potentially leak small amounts of internal program memory into the archive's metadata. This occurs automatically when a user attempts to open a malicious archive, potentially disrupting operations or exposing minor technical details about the system's memory layout.
Technical details
An off-by-one error exists in the ParseDepedencyExpression function within CPP/7zip/Archive/UefiHandler.cpp. The function uses a '>' comparison instead of '>=' when validating an attacker-controlled opcode byte against the 10-entry kExpressionCommands static array. An opcode value of 10 causes the parser to read 8 bytes past the end of the array in the .rodata section. This out-of-bounds value is dereferenced as a pointer and passed to strlen and memcpy. Depending on the memory layout, this results in either an access violation (DoS) or the disclosure of an adjacent string literal into the archive's Characts property. The vulnerability is reachable via IInArchive::Open() when processing SECTION_DXE_DEPEX or SECTION_PEI_DEPEX sections. Fixed in version 26.01.
Affected products
- 7-Zip 7-Zip 9.21 through 26.00
Timeline
- 2026-04-21: disclosed: Reported via SourceForge private issues.
- 2026-04-27: patched: Version 26.01 released with fixes.
- 2026-06-05: advisory: NVD publication date.