← Back to All News & Security Advisories
Apache HTTP/2 RCE (CVE-2026-119618): Mitigating Critical Thread-Safety Memory Corruption on Linux
Apache HTTP/2の重大RCE脆弱性(CVE-2026-119618):スレッド同期不全によるメモリ破壊の対策
| Critical Security Advisory
Technical analysis of CVE-2026-119618 (CVSS 9.8), a critical race condition and heap memory corruption vulnerability in the Apache HTTP Server mod_http2 module (versions 2.4.55 through 2.4.70). Co-discovered by Anthropic's OSS Scanner and Google Cloud Vulnerability Research, this flaw allows unauthenticated remote attackers to achieve Remote Code Execution via concurrent HTTP/2 requests. Learn how the assign_headers() synchronization bug works and how to apply Apache 2.4.71 patches or zero-downtime HTTP/1.1 fallbacks.
Apache HTTP Server(バージョン2.4.55〜2.4.70)のHTTP/2モジュール(mod_http2)において発見された、深刻度Critical(CVSS 9.8)の競合状態およびヒープメモリ破壊脆弱性「CVE-2026-119618」の技術解説です。AnthropicのOSSスキャナおよびGoogle Cloudの脆弱性調査チームによって独立して報告された本脆弱性のメカニズム(assign_headers関数におけるスレッド同期不全)と、Apache 2.4.71への更新、および無停止で適用可能なHTTP/1.1フォールバック緩和策を詳解します。
1. Executive Summary: Concurrent HTTP/2 Streams Trigger Remote Heap Corruption
On November 11, 2026, the Apache Software Foundation released Apache HTTP Server 2.4.71 to patch CVE-2026-119618, a critical (CVSS 9.8) Remote Code Execution (RCE) vulnerability residing in the mod_http2 module. The flaw affects Apache HTTP Server versions 2.4.55 through 2.4.70 whenever HTTP/2 support (h2 over TLS or h2c over cleartext TCP) is enabled, as well as standalone mod_h2 releases from version 2.0.8 through 2.0.42.
Notably, CVE-2026-119618 was independently discovered and reported by Anthropic's automated OSS Scanner and Google Cloud's Vulnerability Research Team. As AI-assisted static and dynamic vulnerability analysis tools increasingly uncover deep concurrency bugs in foundational C codebases, enterprise Linux operators face a rapidly shrinking window between public advisory publication and automated exploit weaponization.
- CVE-2026-119618 (CVSS 9.8 - Critical): Concurrent Execution using Shared Resource with Improper Synchronization (CWE-362) inside the assign_headers() function of mod_http2, leading to cross-thread heap memory corruption and unauthenticated Remote Code Execution.
- CVE-2026-106023 (Important - mod_md): A NULL pointer dereference during HTTP request processing in the ACME certificate management module (affecting Apache 2.4.30 through 2.4.70), enabling remote attackers to crash worker processes and cause Denial of Service (DoS).
- CVE-2026-109163 (Low - mod_vhost_alias): A 1-byte stack-based buffer overwrite in virtual host path interpolation (affecting Apache 2.4.69 and 2.4.70), following up on an incomplete fix for CVE-2026-63292.
2. Technical Root Cause: The assign_headers() APR Pool Race Condition
To understand why CVE-2026-119618 is both severe and reachable without authentication, we must examine how Apache HTTP Server's multi-threaded Multi-Processing Modules (such as mpm_event and mpm_worker) interact with the Apache Portable Runtime (APR) memory allocator during HTTP/2 multiplexing.
In Apache's architecture, each APR memory pool (apr_pool_t) is designed to be fast and lock-free under the strict assumption that a given pool is accessed by only one thread at a time. When a client establishes an HTTP/2 connection, a master connection thread manages the parent h2_session and multiplexes dozens or hundreds of logical streams across a pool of background worker threads via the h2_mplx multiplexer.
Within the assign_headers() routine of mod_http2 (introduced and refactored across versions 2.4.55 to 2.4.70), a stream worker thread processing incoming HTTP/2 request headers accessed and allocated from shared session state belonging to the connection thread without acquiring the required synchronization mutex. By firing a burst of specially timed, concurrent HTTP/2 HEADERS frames over a single multiplexed TCP connection, an unauthenticated remote attacker can force a worker thread and the connection thread to simultaneously mutate the same underlying APR allocator freelist and heap metadata.
When two threads race on an unsynchronized apr_allocator_t or apr_table_t structure, chunk pointers become corrupted or double-allocated. An attacker who grooms the HTTP/2 stream heap layout can turn this cross-thread memory corruption into an arbitrary write primitive, hijacking function pointers inside the httpd / apache2 worker process to execute arbitrary shellcode under the web server's Linux UID (typically apache or www-data).
3. Exposure Assessment: Is Your Linux Web Fleet Vulnerable?
A Linux server running Apache HTTP Server is vulnerable to CVE-2026-119618 if and only if both of the following conditions are met: (1) the installed httpd / apache2 binary includes a vulnerable version of mod_http2 (bundled in Apache 2.4.55 through 2.4.70, or standalone mod_h2 2.0.8 through 2.0.42), and (2) the HTTP/2 protocol (h2 or h2c) is actively enabled in the server or virtual host configuration.
Importantly, servers running older enterprise Linux branches (such as RHEL 8 / AlmaLinux 8 with base httpd 2.4.37, or RHEL 9 / AlmaLinux 9 with base httpd 2.4.57 / 2.4.62) must be checked carefully. While RHEL 8's base 2.4.37 branch predates the 2.4.55 regression unless a newer Red Hat Software Collection or custom module is used, RHEL 9, RHEL 10, Ubuntu 24.04 LTS, Debian 12/13, Amazon Linux 2023, and containerized Alpine/Debian httpd images ship versions directly inside the 2.4.55 to 2.4.70 window.
4. Remediation & Zero-Downtime HTTP/1.1 Fallback Playbook
The permanent remediation is to upgrade Apache HTTP Server to version 2.4.71 (or standalone mod_h2 to 2.0.43+), or apply the backported security errata provided by your Linux distribution vendor (such as Red Hat, AlmaLinux, Rocky Linux, Debian, Ubuntu, or Amazon Linux).
However, if you manage mission-critical production clusters where binary upgrades require scheduled maintenance windows, or if you operate custom-compiled Apache stacks, you can completely neutralize CVE-2026-119618 with zero downtime in under 60 seconds. By removing h2 and h2c from the Protocols directive (or unloading mod_http2) and executing a graceful configuration reload, Apache immediately falls back to HTTP/1.1 without dropping active client connections.
1. エグゼクティブサマリー:HTTP/2の並行ストリーム処理が引き起こすリモートヒープ破壊
2026年11月11日、Apache Software Foundation(ASF)は「Apache HTTP Server 2.4.71」をリリースし、HTTP/2モジュール(mod_http2)に存在する深刻度Critical(CVSS 9.8)のリモートコード実行(RCE)脆弱性「CVE-2026-119618」を修正しました。この脆弱性は、Apache HTTP Serverのバージョン2.4.55から2.4.70(および単体配布されているmod_h2のバージョン2.0.8から2.0.42)において、HTTP/2プロトコル(TLS上のh2、または平文TCP上のh2c)が有効化されているすべての環境に直接的な影響を及ぼします。
特筆すべき点として、CVE-2026-119618はAnthropic社の自動脆弱性検出システム「OSS Scanner」およびGoogle Cloudの脆弱性調査チーム(Vulnerability Research Team)によって独立して発見・報告されました。AIを活用した高度なコード監査ツールがC言語の複雑な非同期・マルチスレッド処理のバグを次々と暴き出す現代において、パッチ公開から攻撃コード(PoC)の武器化までの猶予時間は極限まで短縮されています。
- CVE-2026-119618(CVSS 9.8 - Critical):mod_http2内のassign_headers()関数における不適切な同期を伴う共有リソースの並行実行(CWE-362 / 競合状態)。スレッドを跨いだヒープメモリ破壊を引き起こし、未認証のリモート攻撃者による任意のコード実行(RCE)を許します。
- CVE-2026-106023(Important - mod_md):ACME証明書管理モジュール(mod_md)のHTTPリクエスト処理におけるNULLポインタ参照の脆弱性(Apache 2.4.30〜2.4.70が対象)。ワーカープロセスのクラッシュによるサービス拒否(DoS)を引き起こします。
- CVE-2026-109163(Low - mod_vhost_alias):仮想ホストのパス展開処理における1バイトのスタックバッファ上書き脆弱性(Apache 2.4.69および2.4.70が対象、CVE-2026-63292の追加修正)。
2. 技術的根本原因:assign_headers()関数におけるAPRメモリプールの競合状態
CVE-2026-119618がなぜ認証なしでリモートから悪用可能であり、かつ深刻度9.8と評価されているのかを理解するには、ApacheのマルチスレッドMPM(mpm_eventやmpm_worker)と、APR(Apache Portable Runtime)メモリアロケータがHTTP/2の多重化(マルチプレクシング)を処理する仕組みを見る必要があります。
Apacheの設計において、各APRメモリプール(apr_pool_t)は「同一のプールには同時に単一のスレッドしかアクセスしない」という前提のもと、ロックを行わず高速にメモリを確保・解放する構造になっています。クライアントがHTTP/2接続を確立すると、マスターとなる接続スレッドが親セッション(h2_session)を管理し、多重化機構(h2_mplx)を介して複数のワーカースレッドへ個々のHTTP/2ストリーム処理を並列に割り振ります。
しかし、バージョン2.4.55以降に導入・変更されたmod_http2のassign_headers()関数の実装において、ストリームを処理するワーカースレッドが適切なミューテックス(排他ロック)を取得しないまま、接続スレッド側に属する共有アロケータや状態領域へアクセスしてメモリ操作を行うスレッドセーフティ上の欠陥が存在していました。
攻撃者が1本のHTTP/2接続上でタイミングを精密に調整した大量の並行リクエスト(HEADERSフレーム)を送信すると、接続スレッドとワーカースレッドが同じAPRアロケータのフリーリストやヒープ管理領域を同時に書き換える競合状態(Race Condition)が発生します。これによりヒープメタデータや関数ポインタが破壊され、攻撃者はWebサーバープロセスの権限(apacheやwww-dataユーザー)で任意のコードを実行することが可能になります。
3. 影響範囲の診断:自社Linux Webサーバーの脆弱性チェック手順
運用中のApache HTTP ServerがCVE-2026-119618の影響を受けるのは、(1)インストールされているApacheのバージョンが2.4.55〜2.4.70(または単体mod_h2が2.0.8〜2.0.42)であり、かつ(2)設定ファイル内でHTTP/2プロトコル(h2またはh2c)が有効化されている場合です。HTTP/1.1のみで稼働しているサーバーは本脆弱性の影響を受けません。
RHEL 9 / AlmaLinux 9 / Rocky Linux 9、RHEL 10、Ubuntu 24.04 LTS、Debian 12/13、Amazon Linux 2023、および公式Dockerイメージ(httpd:2.4)などを利用している環境では、標準パッケージが2.4.55〜2.4.70の範囲に含まれている可能性が極めて高いため、直ちに以下のコマンドでモジュールとプロトコル設定を監査してください。
4. 恒久対策(Apache 2.4.71更新)と無停止HTTP/1.1フォールバック手順
根本的な解決策は、Apache HTTP Serverを修正済みの「2.4.71」以降(単体mod_h2の場合は2.0.43以降)へアップデートするか、各Linuxディストリビューションが提供するバックポート修正パッケージを適用することです。
しかし、商用環境においてパッケージ更新や再起動のメンテナンスウィンドウを即座に確保できない場合でも、Protocolsディレクティブから「h2」および「h2c」を除外して「Protocols http/1.1」へ変更し、グレースフルリロード(systemctl reload)を実行することで、既存の通信を一切切断することなく60秒以内にCVE-2026-119618の攻撃経路を完全に遮断できます。