GitHub Security Labの研究者であるヤロスラフ・ロバチェフスキー氏は、5月22日にCVE-2026-48095(GHSL-2026-140)に関する注意喚起を公開しました。これは7-ZipのNTFSアーカイブ処理機能におけるヒープバッファの書き込みオーバーフローで、任意のコード実行につながる可能性があります。根本的な原因はGetCuSize()関数内での未定義動作です。この関数ではNTFS圧縮ストリーム用のバッファサイズを32ビット左シフト演算によって算出しますが、攻撃者が作成したNTFSイメージにおいてClusterSizeLog = 28かつCompressionUnit = 4と設定するとシフト指数が32になり、これはC++における未定義動作となります。x86およびx64環境のいずれでもハードウェア側でのシフト回数制限によりこの式の結果は1となり、_inBufは1バイト分だけ確保されます。その直後に呼び出されるReadStream_FALSE処理では、攻撃者が用意した最大256 MB分のデータがこの1バイトバッファに書き込まれてしまいます。デバッガによる解析では、ヒープ上で_inBufからわずか304バイト離れた場所にストリームオブジェクト(CInStream)が存在することが判明しており、最初の64 KBの書き込みでそのvtableポインタが上書きされ、次の処理で破損したvtable経由でコードが実行されるという典型的なvtableハイジャックが起こります。この脆弱性のCVSS 3.1スコアは8.8(高リスク)で、認証や特権は不要であり、ファイルを開くというユーザーの操作のみで悪用可能です。
特筆すべき攻撃面として、7-Zipでは署名ベースのフォーマット判定が行われているため、バイトオフセット3位置に8バイトの"NTFS "署名を持つ偽造NTFSイメージはファイル拡張子に関係なくNTFS処理機能へと送られます。.7z、.zip、.rar形式、あるいは拡張子なしのファイルであっても同様の経路で処理されます。32ビット版・64ビット版を問わず7-Zip 26.00以前の全バージョンが影響を受けますが、64ビットシステムで空きRAMが約16 GB未満の場合は8 GB分の_outBuf確保に失敗するためクラッシュに留まる可能性もあります。ロバチェフスキー氏は4月24日に本件を非公開で報告し、イゴール・パヴロフ氏は4月27日にバージョン26.01での修正を実施しました。26.00以前を利用中のユーザーは速やかに更新することをお勧めします。