2026年1月、広く利用されているデータ圧縮ライブラリ「zlib」において、深刻な脆弱性(CVE-2026-22184)が公開されました。本脆弱性はCVSSスコア9.3(Critical)と評価されており、特定条件下ではサービス拒否(DoS)や任意コード実行につながる可能性があるとされています。
影響を受けるバージョン
本脆弱性は、以下のバージョンを含むzlibに影響します。
-
zlib 1.3.1.2 以前
特に、zlibに含まれる untgzユーティリティを利用している環境が影響を受けます。ライブラリ単体の利用だけでなく、スクリプトや運用ツールの一部としてuntgzを組み込んでいる場合も注意が必要です。
対策バージョン
zlib 1.3.1.3 以上
脆弱性の概要と技術的背景
本脆弱性は、untgzユーティリティ内の TGZfname() 関数に存在します。この関数は、コマンドライン引数として指定されたアーカイブ名を処理する役割を持っていますが、その実装に重大なメモリ管理上の欠陥がありました。
具体的には、ユーザーから与えられたアーカイブ名(argv[])を、固定長1024バイトのグローバル静的バッファに対して、長さチェックを行わない strcpy() 関数でコピーしています。
このため、攻撃者が1024バイトを超える長さのアーカイブ名を指定すると、バッファの境界を超えてデータが書き込まれ、グローバルバッファオーバーフローが発生します。
攻撃成立の容易さが深刻度を高める要因に
この脆弱性が特に危険視されている理由の一つが、攻撃成立の容易さです。問題のコードは、アーカイブの内容解析や検証が行われる前、プログラムのごく初期段階で実行されます。
そのため、攻撃者は特別に細工されたアーカイブファイルを作成する必要はなく、単に以下のように非常に長いファイル名を指定してuntgzを実行するだけで脆弱性を突くことが可能です。
Full Disclosureメーリングリストに投稿された検証例では、AddressSanitizer(ASAN)を有効にした環境で、実際にグローバルバッファオーバーフローが発生する様子が確認されています。
想定される影響
CVE-2026-22184の影響は、実行環境やビルド条件によって異なりますが、以下のリスクが指摘されています。
-
プログラムのクラッシュによる サービス拒否(DoS)
-
グローバル領域のメモリ破壊による 未定義動作
-
隣接するグローバルオブジェクトの破損
-
環境次第では 任意コード実行の可能性
本脆弱性はスタック領域ではなくグローバルメモリ領域を破壊する点が特徴で、関数の処理を抜けた後も破損状態が持続し、後続処理に影響を与える可能性があります。
最新の脅威動向から実務に直結する対策まで、情シス・セキュリティ担当者向けのセミナー/イベント情報を厳選して掲載しています。開催形式(オンライン/現地)、対象レベル、分野別で探せます。まずは一覧からご確認ください。








