トップページ > Brotliのデコーダーの脆弱性がCISAの悪用確認リストに載った ── 担当サイトで「圧縮を受け取って解く側」になっている所を数える13項目(2026年10月時点)

Brotliのデコーダーの脆弱性がCISAの悪用確認リストに載った ── 担当サイトで「圧縮を受け取って解く側」になっている所を数える13項目(2026年10月時点)

目次
  1. 01 何が起きたか — Brotliのデコーダーに範囲外への書き込みがあり、10月27日にCISAの悪用確認リストへ載った
    1. Node.jsの告知が書いた、欠陥の中身
    2. ライブラリ本体の修正は、Brotli 1.2.1
    3. PHPのWindows版も、10月26日に作り直された
    4. CISAのカタログの行
  2. 02 なぜ・背景 — 同じ圧縮が、「送る側」と「解く側」で別の問題になる
    1. 送る側: ページをBrotliで小さくして配る
    2. 解く側: 自分のプログラムが、外から来たデータを受け取って展開する
    3. 自動で展開する設定が、解く側を作る
    4. HTTPクライアントのライブラリが、設定を持っている
  3. 03 用語 — 圧縮の話で出てくる言葉を、先にそろえる
    1. 悪用が確認された脆弱性のカタログ
  4. 04 型別 — 出典が挙げる範囲、挙げていない範囲、数え方の手順
    1. 🅰 出典が挙げる範囲は、4つの場所だった
    2. 🅰 出典に書かれていない範囲
    3. 🅱 公開された情報が測っていないこと
    4. 🅲 数え方の手順 — 台帳の「場所」の列を作る
    5. 版の番号だけで終わらせない
  5. 05 明日、自社のサイトで確認できることチェックリスト
  6. 06 代替・他の選択肢 — 直す手段は、部品の持ち主で決まる
    1. 手段の比較
    2. 担当サイトの種類ごとの、当てはまり方
    3. 一時的な手として、自動展開の範囲を絞る
    4. 更新を試験環境で先に試す
    5. 配信の圧縮を止める必要は、出典に書かれていない
  7. 07 当サイトで確かめたこと — 自前のコードを検索した結果と、確かめていないこと
    1. 数えた範囲の外の自前のコードで1か所見つけ、同じ日に絞った(2026年10月28日)
    2. 当サイトで確かめていないこと
  8. 08 このテーマは、ここまで
    1. 版の表示は、修正の証拠にならなかった
    2. 外から取った画面は、目当ての画面とは限らない
    3. 外へつなぐ通信の先は、一覧にする
    4. PHPの重大な脆弱性の、更新の順番
    5. サーバーのソフトの更新を、確かめる仕組み
    6. 2026年10月28日 — この記事の確認日
  9. 09 この記事のまとめ

01 何が起きたか — Brotliのデコーダーに範囲外への書き込みがあり、10月27日にCISAの悪用確認リストへ載った

引用について

この記事の「" "」で囲んだ英語の文は、公式の告知・文書・カタログからの引用で、日本語訳は記事の筆者が付けた。いずれも2026年10月28日に、ページの本文を取り直して、1文字ずつ照らした。照らせなかった文は、引用の形にせず、要旨として書いた。攻撃の手順は、書かない。

2026年10月27日、アメリカのCISA(サイバーセキュリティ・インフラストラクチャセキュリティ庁)が公開している「悪用が確認された脆弱性のカタログ」に、CVE-2026-111497が追加された。対象はGoogleのBrotliで、圧縮されたデータを元に戻す部分(デコーダー)の欠陥である。この記事は、この知らせを受けて、担当サイトの中で「圧縮を受け取って、解く側」になっている場所を数えることだけを書く。サーバーが応答を圧縮して送る側の設定は、別の話として、03章と04章で切り分ける。

Node.jsの告知が書いた、欠陥の中身

2026年10月21日のNode.jsのセキュリティリリースの告知は、この欠陥を、重大度「high」(高)として載せた。告知の最初の1文は、こうである。

"A flaw in the Brotli decoder bundled with Node.js allows malformed compressed input to write past the end of an internal decoder buffer."

(訳: Node.jsに同梱されたBrotliのデコーダーの欠陥により、壊れた圧縮データを与えると、デコーダー内部の領域の終わりを越えて書き込めてしまう。)

影響の書き方は、次の文である。

"An attacker who can supply Brotli data that an application decompresses with node:zlib can corrupt process memory, which can lead to a crash, disclosure of process memory, or remote code execution."

(訳: アプリケーションがnode:zlibで展開するBrotliのデータを与えられる攻撃者は、プロセスのメモリを壊すことができ、クラッシュ、プロセスのメモリの開示、遠隔からのコード実行につながりうる。)

ここで大事なのは、条件が「アプリケーションが展開するBrotliのデータを、外から与えられること」になっている点である。サーバーが自分のページをBrotliで圧縮して送ることではなく、誰かが作った圧縮データを、自分の側のプログラムが受け取って解くことが条件になる。告知は、影響を受ける版を、Node.jsの26.x、24.x、22.xと書き、修正を入れたリリースとして、v22.23.4、v24.22.1、v26.12.1を挙げた。告知は2026年10月21日の水曜日付けである。

ライブラリ本体の修正は、Brotli 1.2.1

Brotli本体のGitHubのリリースページには、v1.2.1が載っていて、「SECURITY」の欄に次の1行がある。

"CVE-2026-111497: out-of-bounds write permits remote code execution"

(訳: CVE-2026-111497: 範囲外への書き込みにより、遠隔からのコード実行が可能になる。)

リリースの日付は、ページに「21 Oct」と出ていた。つまり、Brotli 1.2.1も、Node.jsの告知も、10月21日である。オープンソースのセキュリティ情報を流すoss-securityのメーリングリストでは、10月23日にJan Schaumannという人が「問題はNode.jsだけではなく、Googleのbrotliそのものにある」という趣旨で書き、10月24日にAlan Coopersmithという人が、patchtheplanetというサイトが、Node.js、Bun、Envoy Proxy、Istioのリリースを一覧にしていること、AikidoというサイトのブログがPyPIのbrotliのパッケージを加えていること(同じ投稿が挙げたもので、Aikidoの記事の本文は、この記事では開いていない)を書いた。

PHPのWindows版も、10月26日に作り直された

php.netは、2026年10月26日付けで、「Updated PHP Windows builds for Brotli security fix」(訳: Brotliのセキュリティ修正のための、PHPのWindows版の更新ビルド)を載せた。対象はPHP 8.5.12-1、8.4.27-1、8.3.36-1、8.2.35-1である。到達する経路は、こう書かれている。

"In PHP Windows builds, the vulnerable decoder can be reached through the cURL extension when automatic HTTP response decompression is enabled."

(訳: PHPのWindows版では、HTTPの応答の自動展開が有効なとき、欠陥のあるデコーダーに、cURL拡張を通して到達しうる。)

"This is disabled by default in cURL, but applications and HTTP client libraries can enable it."

(訳: これはcURLでは既定で無効だが、アプリケーションやHTTPクライアントのライブラリは有効にできる。)

末尾の「-1」は、同じPHPのソースで、依存部品だけを更新した作り直しを示す、とも書かれている。つまり、PHPの版の番号は変わらない。この点は、PHPの修正を入れても、版の番号も「作った日」も入れ替える前と同じ文字だった ── 修正が入ったかを値で確かめる4つの方法と、3本目の知らせ(CVE-2026-115560)を当サイトで確かめた記録で書いた「版の表示は修正の証拠にならない」と、同じ形である。

CISAのカタログの行

CISAのカタログのデータ(JSON)で、この番号の行を読むと、追加日は2026-10-27、対応の期限は2026-11-10、製品は「Google Brotli」、弱点の種類は、CWE-252(戻り値を確かめない)とCWE-787(範囲外への書き込み)だった。「ランサムウェアの攻撃に使われたか」の欄は「Unknown」(不明)である。短い説明は、次のとおりである。

"Google Brotli contains an unchecked return value vulnerability that allows a remote unauthenticated attacker to corrupt adjacent decoder state memory, disclose sensitive memory contents, cause a denial of service, or potentially execute arbitrary code using a crafted Brotli-compressed stream."

(訳: Google Brotliには、戻り値を確かめない欠陥があり、認証の無い遠隔の攻撃者が、細工したBrotli圧縮のデータの流れで、隣のデコーダーの状態のメモリを壊し、重要なメモリの内容を開示させ、サービス拒否を起こし、場合によっては任意のコードを実行できる。)

注意

カタログに載ったのは「悪用が確認された」という意味で、あなたのサイトが狙われた、という意味ではない。欠陥のある部品を、外から与えられたデータに使っているかどうかで、当てはまるかが決まる。その確認が、この記事の05章である。

2026年10月21日にBrotli 1.2.1とNode.jsの修正版、23日と24日にoss-securityの投稿、26日にPHPのWindows版の更新、27日にCISAのカタログ追加、11月10日にカタログの期限、と並べた時系列の図
Brotliの欠陥をめぐる出来事の並び(日付はそれぞれの出典の本文で確かめた)

02 なぜ・背景 — 同じ圧縮が、「送る側」と「解く側」で別の問題になる

送る側: ページをBrotliで小さくして配る

Brotliは、データを小さくして送るための圧縮の方式の1つである。ウェブサーバーが、ページやCSSを圧縮して送ると、通信量が減る。ブラウザは、「このBrotliなら読める」と伝えるために、リクエストのヘッダー(Accept-Encoding)に方式の名前を書き、サーバーは、使った方式を応答のヘッダー(Content-Encoding)に書く。この流れで、圧縮するのはサーバー、解くのは利用者のブラウザである。今回の知らせは、この「送る側」の設定の話ではない。

解く側: 自分のプログラムが、外から来たデータを受け取って展開する

一方、サイトの裏側では、サーバー自身が「受け取る側」になる場面が多い。外のAPIから情報を取る、他のサイトのRSSやページを読む、決済や地図や翻訳のサービスへ問い合わせる、といった処理である。これらの処理で、相手が圧縮して返してきた応答を、自分のプログラムが解く。このとき解くのは、自分のサーバーの中の部品である。今回の欠陥は、この部品の側にある。

上段にサーバーがページを圧縮して利用者のブラウザへ送る流れ、下段に自社のプログラムが外のサービスの圧縮された応答を受け取って解く流れを、矢印の向きで比べた図。今回の知らせは下段の側
「送る側」と「解く側」。今回の知らせが当てはまるのは、解く側の部品

自動で展開する設定が、解く側を作る

外へつなぐ処理が、勝手に圧縮された応答を受け取るわけではない。つなぐ側が「圧縮した形で返してよい」と相手に伝え、返ってきた応答を自動で元に戻す設定にしたときに、解く側になる。cURLの公式の文書は、この設定をこう書く。

"Sets the contents of the Accept-Encoding: header sent in an HTTP request, and enables decoding of a response when a Content-Encoding: header is received."

(訳: HTTPリクエストで送るAccept-Encodingヘッダーの中身を設定し、Content-Encodingヘッダーを受け取ったときに、応答の展開を有効にする。)

同じ文書は、方式の名前を並べて指定できること、brはbrotliで、curl 7.57.0から使えること、空の文字列を渡すと、その環境のcURLが組み込んでいるすべての方式を示すヘッダーを使うこと、設定を無しにすると展開もしないことを書いている。PHPのマニュアルでは、この設定が、定数CURLOPT_ENCODING(cURL 7.21.6で非推奨)と、CURLOPT_ACCEPT_ENCODING(7.21.6から)の2つの名前で出てくる。古いコードには前者が、新しいコードには後者が書かれるので、探すときは両方を探す。

HTTPクライアントのライブラリが、設定を持っている

php.netの告知は「アプリケーションやHTTPクライアントのライブラリは有効にできる」と書いた。つまり、自分のコードに設定が無くても、使っているライブラリが、自動展開を有効にして動いていることがある。コードの検索で見つからないことと、解く側になっていないことは、同じではない。

03 用語 — 圧縮の話で出てくる言葉を、先にそろえる

用語: Brotli(ブロトリ)とデコーダー

Brotliは、Googleが公開している圧縮の方式とそのライブラリである。圧縮されたデータを元に戻す部分を、デコーダー(展開器)という。今回の欠陥は、デコーダーの側にある。

用語: Accept-EncodingとContent-Encoding

前者は、リクエストで「この圧縮の方式なら受け取れる」と伝えるヘッダー、後者は、応答で「この方式で圧縮した」と伝えるヘッダーである。cURLの文書は、前者を設定すると、応答の展開が有効になると書く。

用語: 範囲外への書き込み(out-of-bounds write)

プログラムが、用意した領域の終わりを越えて、メモリに書き込んでしまう欠陥である。CISAのカタログは、この欠陥の種類を、弱点の分類CWE-787として載せている。

用語: 同梱(バンドル)

ソフトが、必要な部品を、自分の中に抱えて配ることをいう。Node.jsは、Brotliのデコーダーを同梱している。同梱された部品は、OSの部品を更新しても、入れ替わらない。だから、同梱している側のソフトの更新が要る。

悪用が確認された脆弱性のカタログ

CISAのカタログ(Known Exploited Vulnerabilities、略称KEV)は、実際に悪用が確認された脆弱性の一覧で、各行に、追加日と、対応の期限が付く。今回の期限は2026年11月10日である。カタログの「必要な対応」の欄は、ベンダーの指示に沿って緩和策を適用すること、CISAのBOD 26-04という指針に従うこと、緩和策が無ければ製品の利用をやめることを書いている。BOD 26-04が誰に向けた指針かは、この記事では確かめていない。

04 型別 — 出典が挙げる範囲、挙げていない範囲、数え方の手順

🅰 出典が挙げる範囲は、4つの場所だった

開いた出典が挙げた、影響を受ける場所を、まとめる。

  • Node.js: 26.x、24.x、22.xが対象。node:zlibでBrotliを展開するアプリケーションが条件(Node.jsの告知)
  • PHPのWindows版: cURL拡張で、応答の自動展開が有効なとき(php.netの告知)。Linux版については、この告知に書かれていない
  • Brotliを取り込んだ他のソフト: Bun、Envoy Proxy、Istio(oss-securityの投稿が、patchtheplanetの一覧として挙げた)、PyPIのbrotliのパッケージ(Aikidoのブログ記事が加えている、と同じ投稿が書いた。その記事の本文は、この記事では開いていない)
  • Perlのモジュール: IO::Compress::Brotliの、0.004001から0.023より前の版(oss-securityに10月23日に出た、CPANのセキュリティ担当の投稿。件名のCVE-2026-115936は、Brotli本体のCVE-2026-111497とは別の番号)。本文は、下で読む

Perlの件は、投稿の本文を2026年10月28日に開いて読んだ。本文が書いているのは、次の3点である。1つ目は、対象の版が、Brotliのライブラリを自分の中に同梱して作られていて、その同梱の部品に、デコーダーの範囲外への書き込みがあること。2つ目は、0.023でその部品をBrotli 1.2.1に更新したこと。3つ目は、システムのBrotliを更新しても、これは直らないことである。

"The bundled copy, 1.0.4 through 1.2.0 across the range, carries the decoder out-of-bounds write described in CVE-2026-111497. Version 0.023 updates it to brotli 1.2.1."

(訳: 同梱された部品は、対象の版の全体を通して1.0.4から1.2.0で、CVE-2026-111497に書かれたデコーダーの範囲外への書き込みを抱えている。0.023は、これをBrotli 1.2.1に更新する。)

"Upgrading the system brotli does not remediate this."

(訳: システムのbrotliを更新しても、これは直らない。)

同じ投稿は、直し方を「IO-Compress-Brotli 0.023以上へ上げる」と書き、信頼できないデータをunbroメソッドやdecompressメソッドで展開する呼び出しが、同梱のデコーダーに届く、とも書いている。つまり、Node.jsと同じく、同梱している側のモジュールの更新が要る。一方、投稿が書いていないこと(0.004001より前の版や、ほかのPerlのモジュールの扱い)は、この記事も書かない。

🅰 出典に書かれていない範囲

次のものが影響を受けるかは、開いた出典のどれにも書かれていなかった。書かれていないことは、「影響が無い」という意味ではない。

  • ApacheやnginxのBrotliのモジュール
  • Linuxの配布元(ディストリビューション)の、Brotliのパッケージが、いつ修正されたか
  • PHPのLinux版、ホスティング事業者が用意したPHP
  • WordPressやその他のCMS、ECのパッケージ

この記事は、これらについて、影響の有無を言い切らない。確かめる方法は、04章の🅲と05章に書く。

実務のヒント

「書かれていない」と「無い」を分けて、台帳に書く。台帳の「影響」の欄は、「あり」「なし」だけでなく、「出典に記載なし。事業者に確認中」を作っておくと、あとで見返すときに、確かめた範囲が分かる。

🅱 公開された情報が測っていないこと

  • どの環境で、欠陥に実際に到達できるか。告知は、到達しうる条件を書くが、あなたの環境で到達できるかは、書かない
  • 修正の入っていない版が、どれだけ使われているか
  • カタログに載った悪用が、どのソフトに向けられたか。カタログの行は、製品を「Google Brotli」とだけ書く
  • 攻撃を受けた痕跡の見つけ方。この記事は、痕跡の調べ方を書かない

🅲 数え方の手順 — 台帳の「場所」の列を作る

手順は4つの段に分ける。

  1. 場所を列挙する: 担当サイトが、外のサービスから応答を受け取る処理を、洗い出す。外のAPI、RSSの取得、画像や文書を取りに行く処理、決済や翻訳や地図の呼び出し、などである
  2. 展開の有無を見分ける: それぞれの処理が、圧縮された応答を自動で展開する設定になっているか、コードの検索と、使っているライブラリの文書で確かめる
  3. 部品の持ち主を見分ける: 展開する部品が、OSのものか、言語の実行環境(Node.jsなど)に同梱されたものか、言語のパッケージが自前で持つものかを、書き分ける
  4. 直す手段を見分ける: OSのパッケージなら配布元の更新、実行環境なら実行環境の更新、言語のパッケージならパッケージの更新、と手段が違う。持ち主ごとに担当者を決める
解く側の部品を、Node.jsに同梱されたもの、PHPのcURL拡張が使うもの、言語のパッケージが自前で持つもの、OSのパッケージの4つに分け、それぞれの直し方を横に並べた図
解く側の部品の持ち主は4つに分かれ、直す手段もそれぞれ違う

版の番号だけで終わらせない

修正が入ったかを、版の表示だけで判断しないことは、PHPの修正を入れても、版の番号も「作った日」も入れ替える前と同じ文字だった ── 修正が入ったかを値で確かめる4つの方法と、3本目の知らせ(CVE-2026-115560)を当サイトで確かめた記録に書いた。Node.jsのように、修正版に新しい版の番号が付くものは、番号が確かめの入口になる。ただし、PHPのWindows版の「-1」のように、版の番号が変わらず、中身だけが替わるものがある。OSのパッケージは、配布元が修正を取り込むと、版の番号ではなく、改訂番号が上がる。確かめるときは、パッケージの変更履歴に、CVEの番号が出るかを見る。

05 明日、自社のサイトで確認できることチェックリスト

以下は、担当サイトで、Brotliの欠陥に関わる「解く側」を数える13項目である。1〜3番目はNode.js、4〜6番目は外へつなぐコードと自動展開、7〜9番目はPHPのWindows版・Python・Perl、10番目は「送る側」の切り分け、11〜13番目は事業者への確認・期限・記録である。1項目は5分以内でできる。チェックの状態はブラウザに保存され、サーバーには送られない。

  • 使っているソフトの台帳を開き、Node.jsを使う箇所(画面の組み立て・API・ビルド)を行ごとに数えて、箇所の数を書く
  • 数えた箇所のNode.jsの版を書き出し、10月21日の告知の版と、系統ごとに比べる(22系は22.23.4、24系は24.22.1、26系は26.12.1)。同じ系統で、その版より小さいものに印を付ける
  • OSのパッケージでNode.jsを入れている箇所があれば、パッケージの変更履歴を開き、CVE-2026-111497が出るかを見る
  • コードの置き場全体を、CURLOPT_ENCODINGとCURLOPT_ACCEPT_ENCODINGの2つの名前で検索し、ヒットしたファイルの数を、検索した範囲と一緒に書く
  • ヒットした設定値を1つ開き、空の文字列か、方式を名指ししたものか、brを含むものかを見分けて、台帳に書く
  • 依存の一覧(composer.jsonやpackage.json)を開き、外へつなぐライブラリの名前を3つ以上書き出し、それぞれの文書で、応答の自動展開の項目を探す
  • PHPをWindowsで動かす機械(開発機・検証機・社内ツール)が何台あるかを担当者に聞いて数え、あれば、ファイル名に「-1」が付いた版へ入れ替えたかを記録で確かめる
  • Pythonで動かす処理があれば、パッケージの一覧にbrotliの名前があるかを、一覧コマンドで1回確かめる
  • Perlで動かす処理があれば、IO::Compress::Brotliの版が0.023以上かを、モジュールの一覧で確かめる
  • 自分のページを取得するコマンドにAccept-Encodingでbrを付け、応答のContent-Encodingの有無を見て、「送る側」の確認として別の欄に書く
  • ホスティング事業者と制作会社に、「Brotliの件で、御社が管理する範囲に影響があるか」「修正をどの形で入れるか」「いつまでに」の3つを、文章で送る
  • 社内の対応の期限を、CISAのカタログの期限である2026年11月10日を目安に書き、箇所ごとに担当者の名前を入れる
  • 確認した箇所を、場所・展開の有無・部品の持ち主・修正の確認方法・確認した日の5列の表にして残す

実際のコマンドを2つだけ示す。コードの検索は、次の形になる(置き場の場所に合わせて変える)。

grep -rlE "CURLOPT_(ACCEPT_)?ENCODING" --include=*.php 置き場の場所

送る側の確認は、次の形である(自分のページのアドレスに変える)。

curl -s -H "Accept-Encoding: br" -D - -o /dev/null https://example.com/

後者の結果にContent-Encodingがbrと出ても、それはサーバーが圧縮して送っていることを示すだけで、解く側の確認ではない。

06 代替・他の選択肢 — 直す手段は、部品の持ち主で決まる

手段の比較

部品の持ち主直し方確かめ方・注意
Node.js告知にある修正版(22.23.4・24.22.1・26.12.1)へ更新する同梱の部品なので、OSのBrotliを更新しても入れ替わらない。更新後に、実行環境が新しい版で動き直したかを見る
PHPのWindows版「-1」が付いた作り直しのビルドへ入れ替えるPHPの版の番号は変わらない。配布元のファイル名と日付で確かめる
言語のパッケージパッケージを更新する。自前の部品を持つものは、パッケージ側の修正を待つOSの部品を更新しても直らないことがある。パッケージの更新の記録を見る
OSのパッケージ配布元が出す更新を入れる版の番号ではなく、変更履歴にCVEの番号が出るかを見る。出典に、配布元ごとの状況は書かれていない
自動展開の設定必要な方式だけを名指しし、brを外す応答を圧縮して返さない相手なら影響は小さいが、設定の変更は動作確認とセットにする

担当サイトの種類ごとの、当てはまり方

次の表は、担当サイトの作り方ごとに、どこを先に見るかを筆者が整理したものである。公式の告知が、こう分けたわけではない。

サイトの種類当てはまりうる所最初に確かめること
Node.jsで作るサイト画面の組み立てやAPIをNode.jsで動かし、外から来たBrotliのデータをnode:zlibで展開する処理があるとき(Node.jsの告知)Node.jsの版を、系統ごとの修正版と比べる(05章の1〜3番目)
PHPで外のAPIにつなぐサイトWindowsのPHPで、cURLの応答の自動展開が有効なとき(php.netの告知)。LinuxのPHPは、告知に書かれていない自動展開の設定を2つの名前で検索する(05章の4〜6番目)。Windowsの機械があれば、「-1」の版かを確かめる(7番目)
静的サイト(HTMLやCSSを置いて配るだけ)自分のプログラムで外の応答を解く処理が無ければ、「解く側」は無い。配信の圧縮は別の話外へつなぐ処理が本当に無いかを、台帳の「場所」の列で確かめる。サーバーの部品は事業者に聞く(11番目)

一時的な手として、自動展開の範囲を絞る

cURLの文書は、方式を名指しできると書く。外のサービスが、gzipで返せば足りるなら、「gzip, deflate」に絞り、brを受け取る入口を閉じることが、一時的な手になりうる。ただし、これは筆者の整理で、公式の告知が勧めた手ではない。告知が勧めるのは、修正版への更新である。絞るときは、相手のサービスがgzipだけで返せるかを、動作確認で確かめてから変える。

更新を試験環境で先に試す

実行環境の更新は、画面が崩れていないかを、複数ページで確かめる。試験環境と本番を、ページごとに比べるなら、🔧 WEBサイトの状況チェック・比較ツール(試験用のサイトと本番の違いをページごとに比べる・会員限定)が使える。外から見える範囲の点検には、🔧 WEBサイトの外からできるセキュリティ対策監査ツール(会員限定)があるが、これは外から見える範囲の点検で、サーバーの内側で解く側になっている部品は、見えない。

配信の圧縮を止める必要は、出典に書かれていない

サーバーがBrotliで応答を配る設定を、止めるべきだとは、開いた出典のどれにも書かれていない。止めたくなったときは、先に、そのモジュールが今回の欠陥の対象かを、モジュールの提供元に確かめる。確かめる前に止めても、解く側の部品は直らない。

07 当サイトで確かめたこと — 自前のコードを検索した結果と、確かめていないこと

2026年10月28日に、当サイトの試験環境の、自前のPHPのコードを、05章の4番目の形で検索した。数えた範囲は、アプリケーションとテーマのPHPのファイル2,514本(外部のライブラリを置く場所を除く)で、そのうち、外へつなぐ設定を書いたファイルは10本、応答の自動展開の設定を書いたファイルは0本だった。

数えた範囲の外の自前のコードで1か所見つけ、同じ日に絞った(2026年10月28日)

この記事を公開する前の確かめで、上の数えた範囲の外にある自前のコードに、応答の自動展開をすべての方式で受け付ける設定が1か所あった。06章に書いた方法(方式を名指しして、Brotliを外す)で、同じ日に、試験環境と本番の両方を直した。変えたのはその設定の1行だけで、直した後にページの表示が変わっていないことを確かめた。

当サイトで確かめていないこと

  • 外から与えられたデータを、Node.jsで展開する処理が、あるかどうか
  • PythonやPerlのBrotliのパッケージが、当サイトの処理に入っているか
  • 外部のライブラリを置く場所にも、応答の自動展開の設定を書いたファイルがあるが、当サイトの処理から使われているかは確かめていない
  • サーバーの部品の修正の有無は、この記事では扱わない

08 このテーマは、ここまで

修正が入ったかの確かめ方と、外へつなぐ通信の棚卸しは、これまでにも書いてきた。

版の表示は、修正の証拠にならなかった

PHPの修正を入れても、版の番号も「作った日」も入れ替える前と同じ文字だった ── 修正が入ったかを値で確かめる4つの方法と、3本目の知らせ(CVE-2026-115560)を当サイトで確かめた記録は、PHPの修正を入れても、版の番号も「作った日」も入れ替える前と同じ文字だったことと、修正で増えた設定の値で確かめる方法を書いた。Brotliの件も、PHPのWindows版の「-1」のように、番号が同じで中身が替わる形がある。

外から取った画面は、目当ての画面とは限らない

外から取った画面は、目当ての画面とは限らない ── 遮断の画面を404と読み、引用符の違いでnoindexを「無い」と読みかけたは、遮断の画面を404と読んだ失敗の記録である。05章の10番目のように外から応答を取るときも、取った画面の題名を先に見て、目当ての画面かを確かめる。

外へつなぐ通信の先は、一覧にする

認証局の中間証明書8枚の秘密鍵が漏れた週、当サイトのサーバーの中からつなぐ通信は、漏れた証明書を通していた ── AIの知らせを自分で測り直して、塞いだ記録は、サーバーの中から外へつなぐ通信が、漏れた証明書を通していたことを、測り直して塞いだ記録である。外へつなぐ先を一覧にして、定期的に発行元を見る手は、今回の「解く側」を数える手と同じ土台に乗る。

PHPの重大な脆弱性の、更新の順番

PHPの重大な脆弱性「php2shell」を、初心者から上級者まで1本で ── 自分のサイトは関係あるか、更新の順番、更新の後に確かめること、攻撃を受けたかの調べ方、当サイトとチームの記録は、PHPの重大な脆弱性で、自分のサイトが関係するかを確かめる順番と、更新の後に確かめることを書いた。担当サイトの一覧に「どの部品を、誰が更新するか」を書く考え方は、PHPの修正版が出た日に「どのサイトが当たるか」を数分で答えるには、担当サイトの一覧が要る ── 台帳の8列を埋めて確かめる13項目(2026年10月時点)でも扱った。

サーバーのソフトの更新を、確かめる仕組み

記事のチェック項目を自分のサイトに当てたら、自分のサーバーが対象だった ── Apache 2.4.***を、記事を公開したその日に上げるまでは、記事のチェック項目を自分のサイトに当てたら、自分のサーバーが対象だった、という記録である。PHP公式は、次の通常のリリースまで、セッションのアップロード進捗を0にするよう勧めた ── 設定の値・切り替えるコード・修正版に上げたあとの戻りを確かめる13項目(2026年10月時点)は、PHPの設定の値を確かめる13項目で、「値で確かめる」考え方は、今回も同じである。

2026年10月28日 — この記事の確認日

この記事の内容は、2026年10月28日に、Node.jsの告知、php.netの告知、oss-securityの3つの投稿(10月23日のPerlの件を含む)、BrotliのGitHubのリリースページ、cURLとPHPのマニュアル、CISAのカタログのデータを開いて確かめた時点のものである。配布元のパッケージの修正や、事業者の案内が出たときは、日付つきで追記する。

BrotliのデコーダーのCVE-2026-111497が、10月27日にCISAの悪用確認のカタログへ載った。条件は、外から来た圧縮データを自分の側のプログラムで展開すること。圧縮して配る設定とは別の話で、解く側の場所を担当サイトで数える。
2025/05/31
THU
00:00:00

ブラウザ・OS 最新バージョン

毎日更新:2026-10-28 調査更新済
  • Android(stable) 未取得
  • Chrome Android(stable) 157.0.8103.14
  • Chrome iOS(stable) 156.0.8078.54
  • Chrome(beta) 157.0.8103.15
  • Chrome(dev) 158.0.8117.2
  • Chrome(stable) 157.0.8103.15
  • Edge(stable) 156.0.4314.42
  • Firefox(stable) 159.0
  • Opera(stable) 137.0.6036.63
  • Safari iOS(stable) 未取得
  • Safari(stable) 未取得
  • iOS(stable) 未取得

現在の貴方のIPアドレス

216.73.216.36

このサイトで書いている人

株式会社ツクルン

株式会社ツクルン

Webアドバイジング・クリエイター
池田 南美夫
もうすぐ●●歳。ずっーと現役SE。日本にインターネットが上陸してから、ずっーと携わる。 ほんとは超アナログ人間のギター弾き、バンドマン。でも音楽活動とSE、案外似てる。