今週、PHP・Next.js・Node.js・nginx・GitLab・Javaにまたがる15件のCVE番号を並べ、大半に「CRITICAL」と付けたセキュリティ系のリール動画が出回りました。2026年10月25日に、ベンダー自身のアドバイザリと1件ずつ突き合わせました。結論として、nginx 脆弱性の3件もPHPの2件も含め、15件すべて実在します。ただしCISAのKEVカタログ(2026.10.23版)に載っているものはなく、CISAの評価でも悪用状況は「none」で、例外はCVE-2026-96889の「poc」だけです。
「Black October」という名前のキャンペーンがあるわけではありません。nginxとNext.jsが10月14日、GitLabが12日と21〜22日、PHP・Node.js・OracleのJavaアラートが21日と、通常のアドバイザリが短期間に重なっただけです。動画のラベルのうち3つは誤解を招く表現で、そこが「誰が急ぐべきか」を左右します。以下、まとめの表のあとに、製品ごとの確認方法と対策を書きます。
まとめ: 誰が影響を受け、何を入れるか#
| 製品 | ID | 実際の深刻度 | 前提条件 | 修正バージョン |
|---|---|---|---|---|
| nginx | CVE-2026-15176, CVE-2026-93479, CVE-2026-97205 | F5: CVSS v4 9.2。nginx.org: 「Medium」 | 特定の設定: alias + rewrite、正規表現キャプチャ付き map、aio + SSI。コード実行はASLRが無効または回避された場合のみ | 1.30.6(stable)、1.31.7(mainline) |
| PHP | CVE-2026-109618, CVE-2026-109619 | CVSS v4 9.2 | 109618: multipartの解析時。109619: 同一ワーカー内の2リクエスト | 8.2.35、8.3.36、8.4.27、8.5.12 |
| Node.js | CVE-2026-111497, 105482, 105483, 106069 | High(Node側の評価) | node:zlib のBrotli、ホスト名検証、特殊なIPリテラルへのTLS | 22.23.4、24.22.1、26.12.1 |
| GitLab | CVE-2026-110264, CVE-2026-97229 | CVSS v3.1 10.0 | セルフマネージド環境、回避策なし | 19.5.1と各系列のパッチ(後述) |
| Java | CVE-2026-91403 | CVSS v3.1 9.1 | 侵害されたeMudhraの中間CA経由のTLSチェーン | Oracleのアラート、Patch Availability Document参照 |
| Next.js | CVE-2026-96889とGHSA 2件 | CVSS v4 9.5 / 9.5 / 8.2 | 別記事を参照 | 16.4.1、15.5.28(最新は16.4.3) |
誤解を招く3つのラベル:
- CVE-2026-96889 は動画ではNext.jsの脆弱性として扱われています。CVE自体はlibrsvgのuse-after-free(CNAはRed Hat、CVSS v3.1 7.8)です。Next.jsが影響を受けるのは、画像最適化に使うsharpがlibrsvgを同梱しているためです。
- CVE-2026-111497 はBrotliデコーダーの不具合(CNAはGoogle、製品はBrotli)です。Node経由で届き、Nodeの評価はCriticalではHighで、攻撃者が用意したBrotliデータを展開する場合に限られます。
- nginxの「CRITICAL」 はF5のCVSS v4スコアです。nginxプロジェクト自身は3件すべてを「Medium」としています。
nginx 脆弱性: 3件の設定条件とバージョン#
10月14日に1.30.6(stable)と1.31.7(mainline)で修正されました。F5の評価はCVSS v4 9.2、v3.1 8.1です。コード実行にはASLRが無効または回避されている必要があり、nginx.orgがMediumとしている理由はここにあります。
自分は対象か。 設定にトリガーが含まれる場合だけです。nginx 脆弱性 バージョンの確認と、設定全体へのgrepは次のとおりです。
nginx -v
nginx -T 2>/dev/null | grep -nE 'alias|rewrite|request_filename|aio|ssi|map'- CVE-2026-15176(nginx 脆弱性 rewrite):
aliasとrewriteの併用で、さらに$request_filenameを使うset/return、またはlog_format内の$request_filenameがある場合のバッファオーバーフローです。更新するまでこの組み合わせを避けます。 - CVE-2026-93479(nginx 脆弱性 map): スクリプト評価時のバッファオーバーフローで、正規表現の
mapがあり、rootやlog_formatがそのキャプチャを参照している場合です。1.30.0〜1.30.5と1.31.2〜1.31.6が対象です。アドバイザリの回避策は、キャプチャに名前を付けてブロック内に限定することです。 - CVE-2026-97205:
aioとSSIのinclude virtualを併用した場合のuse-after-freeです。aioかSSIを無効にします。
nginx 脆弱性対策: 1.30.6または1.31.7に更新します。同じリリースでCVE-2026-95101(HTTP/3のリクエストボディ注入)とCVE-2026-97629(TLSセッションチケットの偽造)も修正されているため、3つのトリガーに当たらない設定でも更新する価値があります。出典はnginx.orgのセキュリティアドバイザリと、F5のK000162416、K000162607、K000162608です。
PHP 脆弱性: 21日に修正された2件のRCE#
2件のアドバイザリ(php/php-srcのGHSA-w8hw-w9fx-j79wとGHSA-6wmf-4rv5-p3rp)はいずれもCVSS v4 9.2で、8.2.35、8.3.36、8.4.27、8.5.12で修正されています。
CVE-2026-109618「OOM破損によるRCE」。 認証不要です。Apache mod_phpに対し、multipartボディの解析中、アプリのコードが動く前に、HTTP経由で完全なRCEが実証されています。FrankenPHPも影響を受ける可能性が高く、FPMはソース解析上は影響を受けるものの、完全なエクスプロイトは示されていません。更新までの対応は、post_max_size を控えめにする、multipartの分割数を制限する、アップロードがなければフロントでmultipartを遮断する、ワーカーを再起動する、の4つです。RLIMIT_ASやRLIMIT_DATAは対策にならないと、アドバイザリに明記されています。
CVE-2026-109619「古いグローバル状態によるRCE」。 同じワーカー内に生成側と消費側のリクエストが必要です。mod_phpで fatal_error_backtraces(PHP 8.5)経由の再現が確認され、セッションのアップロード進捗を通る2つ目の経路もあります。暫定対策は fatal_error_backtraces=0、session.upload_progress.enabled=0、PHP_VALUE のようなリクエスト単位のINI上書きの削除、ワーカーの再起動です。
確認は php -v と php -i | grep -E 'post_max_size|upload_progress|fatal_error_backtraces' で行います。公開PoCに関する第三者の報告はありますが、PHP側は確認していません。
Node.js: 22.23.4、24.22.1、26.12.1に更新#
10月21日にリリースされました(Node.jsのセキュリティリリース)。Node 20は2026年4月にEOLを迎え、修正は出ません。20系を使っているなら、必要なのはパッチではなくバージョンの移行です。
| CVE | 内容 | Nodeの評価 | 問題になる条件 |
|---|---|---|---|
| CVE-2026-111497 | Brotliデコーダーの境界外書き込み | High(CVE記録はCVSS v4 9.2) | 攻撃者が用意したBrotliを node:zlib で展開する |
| CVE-2026-105482 | dns.resolve* がNUL文字で名前を切り詰める | High、7.4 | ホスト名を許可リストで検証したあとに名前解決する。暫定対策は \0 の拒否 |
| CVE-2026-105483 | 全角数字のIPでTLSホスト名検証を回避 | High、7.4 | Node 24と26のみ(22は対象外)。非ASCII数字のホストに接続するクライアント |
| CVE-2026-106069 | 0127.0.0.1 のような先頭ゼロのIPv4でTLSホスト名検証を回避 | High、7.4 | 正規形でないIPv4リテラルに接続する |
同じリリースには、medium相当の修正(CVE-2026-105481のkeep-aliveレスポンススマグリング、CVE-2026-106072、CVE-2026-106074)、eMudhraの中間証明書への信頼を外す証明書ストア更新、OpenSSL・c-ares・Undici・SQLiteの更新も含まれます。このNodeセキュリティアップデートがコンテナに届いたかを確かめるのに、手元の node -v は何の証明にもなりません。docker run --rm <image> node -v で確認し、イメージを再ビルドしてください。先月pullした node:22 には古いNodeが入ったままです。
GitLab: スコア10.0で回避策なし#
- CVE-2026-110264: 正規表現コンパイラの整数オーバーフロー。CVSS v3.1 10.0で、「特定の条件下」では認証不要です。18.11.13、19.0.10、19.1.9、19.2.9、19.3.6、19.4.3、19.5.1(10月22日のパッチリリース)で修正されました。回避策はありません。
- CVE-2026-97229: CI/CDの正規表現コンパイラの整数オーバーフロー。CVSS 10.0で、CI設定に細工した正規表現を認証なしで送れます。10月12日に19.2.8、19.3.5、19.4.2で修正されました。
GitLab.comとDedicatedはGitLab側でパッチ済みです。自前で運用している場合の対象は自分たちです。バージョンはHelpページか gitlab-rake gitlab:env:info で確認し、自分の系列のパッチに更新します。回避策がないので、更新までの唯一の対処は、インスタンスをインターネットに公開しないことです。
Java: コード実行ではなく証明書のアラート#
CVE-2026-91403は、10月21日にOracleが臨時で出したSecurity Alertで、Java SEとGraalVMのJSSEが対象、CVSS v3.1 9.1です。アラートによると、修正は侵害されたeMudhraの中間CA証明書への信頼を外すものです。実際のリスクは、それらの中間CAを経由するチェーンの証明書を使ったTLS中間者攻撃だと私は読んでいます。リモートコード実行ではありません。これは私の推論で、Oracleの文言ではありません。
影響を受けると記載されているのは、Java SE 8u511、11.0.33、17.0.21、21.0.13、25.0.5、27.0.1と、GraalVM for JDK 17.0.21、21.0.13です。修正後のビルド番号は確認できなかったため、OracleのPatch Availability Documentで確認してください。java -version で自分のバージョンを照合します。Nodeも同じ日にeMudhra関連の変更を出しています。
Next.js: アドバイザリ3件、記事は別に#
Next.jsには3件のアドバイザリがあります。認証不要のRCEが2件(use cache 関数と、SVGを使うImage Optimization API)と、Server ActionsによるDoSです。修正は16.4.1または15.5.28で、最新は16.4.3です。条件、grepコマンド、自分のサーバーで見つかったことは、2026年10月のNext.js 脆弱性の記事にまとめました。
怖いCVE一覧の読み方#
- 誰のスコアかを見る。 同じバグが、CVSS v4では9.2、v3.1では8.1、ベンダー自身の表では「Medium」ということがあります。今月の例はnginxです。数値を付けたのがベンダーか、CNAか、集約サイトかを確認します。
- スコアの前に前提条件を読む。 「認証不要のRCE」に「
aioとSSIのinclude virtualが必要」「ASLRが無効であること」と続くなら、デフォルト構成のRCEとは別の問題です。 - CISA KEVを開く。 載っていれば悪用が確認済みです。載っていないから安全とは言えませんが、「今週中に更新」と「今夜更新」を分ける材料になります。
- 本当のコンポーネントを探す。 CVE-2026-96889はNext.jsのラベルで出回りましたが、実体はlibrsvgでした。製品名だけで自分のスタックを検索すると見落とします。
- 実際に動かしているものを数える。 持っていない製品を消すと、15件のリストはすぐ短くなります。
私のスタックに必要だったもの#
私はDokploy経由で1台のサーバーのDockerに7つのNext.jsサイトを置き、前段にTraefikを使っています。nginx、PHP、Java、GitLabはありません。15件のうち私に関係したのは、Next.js、Node.js、sharp、Dockerのベースイメージです。監査の結果(7サイト中6サイトが脆弱、digest固定で古いNodeのパッチが凍結されたイメージ、不要だった dangerouslyAllowSVG 設定)は関連記事にあります。
アプリの隣にWikiなどを自前で置いている場合も、同じ考え方が当てはまります。そうした構成の一例はClewWikiを使ったセルフホストのチームWikiで書きました。



