概要

Apache HTTP Server 2.4.66 の mod_http2 モジュールに、深刻なメモリ管理の欠陥(CVE-2026-23918)が発見された。CVSSスコアは 8.8(重大)と評価されており、認証不要でサービス拒否(DoS)攻撃を引き起こせるほか、条件次第ではリモートコード実行(RCE)につながる可能性もある。Apacheプロジェクトは2026年5月4日に修正済みバージョン 2.4.67 をリリースしており、影響を受けるシステムへの即時アップデートが強く推奨されている。脆弱性の発見者は Striga.ai 共同創設者の Bartlomiej Dmitruk 氏と ISEC.pl の研究者 Stanislaw Strzalkowski 氏。

技術的詳細

本脆弱性の根本原因は、mod_http2h2_mplx.c に存在するストリームクリーンアップパスの実装ミスにある。攻撃者が HEADERS フレームの直後に RST_STREAM(非ゼロエラーコード付き)を送信すると、同一ストリーム上で on_frame_recv_cbon_stream_close_cb という 2 つの nghttp2 コールバックが順に発火する。両コールバックがいずれも h2_mplx_c1_client_rst → m_stream_cleanup を呼び出すことで、同一の h2_stream ポインタが内部クリーンアップ配列へ 2 度プッシュされる。その後、c1_purge_streams が配列を反復処理して h2_stream_destroy を呼び出すと、2 度目の呼び出し時に既解放のメモリ領域へアクセスするdouble-freeが発生する。

DoS 攻撃は「1 本の TCP 接続と 2 フレームのみ、認証・特殊ヘッダー・特殊 URL 一切不要」という極めてシンプルな条件で引き起こせる。ワーカープロセスがクラッシュすると Apache は自動再起動するが、クラッシュしたワーカーへのリクエストは破棄されるためサービス断が生じる。

RCE については、Apache Portable Runtime(APR)が mmap アロケータを使用するシステム——Debian 系ディストリビューションや公式 httpd Docker イメージがこれに該当——でのみ成立する。実証実験では、解放済みメモリアドレスへ偽の h2_stream 構造体を配置し、プールクリーンアップ関数を system() にポイントさせることで、数分以内にコード実行に成功している。ASLR が有効な環境でも Apache スコアボードが固定アドレスに配置されることを悪用した点が技術的な肝となっている。

影響範囲と対策

影響を受けるのは mod_http2 をデフォルトで含む Apache HTTP Server 2.4.66 で、マルチスレッド MPM(event / worker)を使用するデプロイが対象となる。MPM prefork モードはこの脆弱性の影響を受けない。mod_http2 はデフォルトビルドに含まれるため、インターネット上の Apache サーバーのうち HTTP/2 を有効にしているものは広く攻撃対象となりうる。

対策は修正済みバージョン 2.4.67 への速やかなアップグレード一択である。短期的な緩和策として mod_http2 モジュールを無効化することも可能だが、HTTP/2 による性能上のメリットが失われる。パッケージマネージャー経由でインストールしている場合はディストリビューションの公式リポジトリからのアップデートを確認し、Docker イメージを利用している場合は公式イメージの最新タグへの更新が必要だ。