| Title | 7-Zipにおける境界外読み取りに関する脆弱性 |
|---|---|
| Summary | 7-Zipは高い圧縮率を持つファイルアーカイバです。バージョン9.21から26.00までには、UEFIファームウェアイメージパーサ(CPP/7zip/Archive/UefiHandler.cpp)のParseDepedencyExpression関数にオフバイワンの境界外読み取り脆弱性が存在します。この関数は10エントリのkExpressionCommands静的配列の要素数に対して、=ではなくを使用して攻撃者が制御するオペコードバイトを検証するため、オペコード値10が配列の終わりの1ポインタスロット(x64では8バイト)を.rodata上で読み取ることを許してしまいます。境界外の値はconst char *として逆参照され、その後strlenとmemcpyを経てアーカイブのCharactsプロパティに渡されます。これにより、隣接するバイトが有効な読み取り可能なポインタを形成しない場合にはサービス拒否(アクセス違反)を引き起こし、隣接する.rdataの文字列リテラルがアーカイブのメタデータに少量漏洩する可能性があります。この脆弱性は、SECTION_DXE_DEPEX(0x13)またはSECTION_PEI_DEPEX(0x1B)セクションの最初の本文バイトが0x0Aである場合にOpenFv/OpenCapsule → ParseVolume → ParseSectionsの呼び出し経路を通じてIInArchive::Open()時に自動的に利用されます。UEFIハンドラは標準の7z.dllでUEFIcとUEFIfの両形式に対するシグネチャベースの検出がデフォルトで有効です。結果(クラッシュか無音の情報漏洩か)はビルドごとに決定されますがリンカのレイアウト依存であり、書き込みプリミティブの発生やヒープデータ、秘密情報、ASLRベースアドレスの漏洩はありません。バージョン26.01でこの問題は修正されています。 |
| Possible impacts | ・当該ソフトウェアが扱う情報の一部が外部に漏れる可能性があります。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 |
| Solution | ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date | June 5, 2026, midnight |
| Registration Date | June 9, 2026, 2:13 p.m. |
| Last Update | June 9, 2026, 2:13 p.m. |
| CVSS3.0 : 重要 | |
| Score | 7.1 |
|---|---|
| Vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H |
| 7-Zip |
| 7-Zip 9.21 以上 26.01 未満 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年06月09日] 掲載 |
June 9, 2026, 2:13 p.m. |
| Summary | 7-Zip is a file archiver with a high compression ratio. Versions 9.21 through 26.00 contain an off-by-one out-of-bounds read vulnerability in the ParseDepedencyExpression function of the UEFI firmware image parser(CPP/7zip/Archive/UefiHandler.cpp). The function validates an attacker-controlled opcode byte using > instead of >= against the element count of the 10-entry kExpressionCommands static array, allowing an opcode value of 10 to read one pointer slot (8 bytes on x64) past the end of the array in .rodata. The out-of-bounds value is then dereferenced as a const char * and passed through strlen and memcpy into the archive's Characts property, which may cause either a denial of service (access violation when the adjacent bytes do not form a valid readable pointer) or a minor information disclosure of an adjacent .rdata string literal into archive metadata. The vulnerability is reached automatically during IInArchive::Open() via the call path OpenFv/OpenCapsule → ParseVolume → ParseSections when processing a SECTION_DXE_DEPEX (0x13) or SECTION_PEI_DEPEX (0x1B) section whose first body byte is 0x0A, and the UEFI handler is enabled by default in stock 7z.dll with signature-based detection for both UEFIc and UEFIf formats. The outcome (crash vs. silent leak) is deterministic per build but linker-layout dependent, with no write primitive and no disclosure of heap data, secrets, or ASLR base addresses. Version 26.01 fixes the issue. |
|---|---|
| Publication Date | June 6, 2026, 2:16 a.m. |
| Registration Date | June 6, 2026, 4:17 a.m. |
| Last Update | June 9, 2026, 3:16 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:a:7-zip:7-zip:*:*:*:*:*:*:*:* | 9.21 | 26.01 | |||