ChromeのXSLT use-after-freeが実環境で悪用(CVE-2026-125350)
Chromeに同梱されたlibxsltのuse-after-freeはメモリを破壊する可能性があります。CVE-2026-125350は実環境で悪用され、157.0.8103.50で修正されました。
要点
- ChromeのXMLとXSLTの処理におけるuse-after-freeにより、細工されたページがレンダラーのメモリを破壊できます。GoogleはCVE-2026-125350をHighと評価し、実環境にエクスプロイトが存在すると述べています。
- 157.0.8103.50より前のデスクトップChromeのすべてのバージョンが影響を受けます。Statcounterによると、2026年10月の世界のデスクトップブラウザシェアでChromeは66.98パーセントです。
- 2026年11月10日時点で、CVE-2026-125350はCISAのKnown Exploited Vulnerabilities(KEV)カタログに掲載されていません。
- この欠陥はChromeが同梱するlibxsltの直接パターン一致キャッシュにあります。同じ修正が、2026年10月12日に別途報告されたCVE-2026-125346も閉じます。
- Chromeを157.0.8103.50または157.0.8103.51に更新し、ブラウザを再起動してください。Chromiumベースのブラウザは各ベンダーの更新が必要です。「修正方法」を参照してください。
影響を受けますか?
次の条件がすべて当てはまる場合に影響を受けます。
- Windows、macOS、Linuxで157.0.8103.50より前のデスクトップGoogle Chromeを実行している。
- 攻撃者が制御するページ、または攻撃者が制御するXMLとXSLTを読み込むページを開く。脆弱なパーサーが実行されるのに追加の操作は不要です。
- ビルドにlibxsltの修正がまだ含まれていない。Googleは2026年11月9日のデスクトップ版157.0.8103.50と157.0.8103.51で修正を提供しました。
このアドバイザリはデスクトップChromeを対象としています。Chromiumベースのブラウザはエンジンを共有しますが、各ベンダーが独自のビルドと修正スケジュールを提供します。Chromiumブラウザが修正済みだと思う前に、ベンダーに確認してください。
| ブランチ | 影響を受けるバージョン | 修正版 |
|---|---|---|
| WindowsとmacOS向けChrome | 157.0.8103.50/.51より前のすべてのバージョン | 157.0.8103.50または157.0.8103.51 |
| Linux向けChrome | 157.0.8103.50より前のすべてのバージョン | 157.0.8103.50 |
ブラウザからインストール済みバージョンを確認します。
# Open this URL in Chrome and read the version line
chrome://version
ターミナルでは、パッケージマネージャーがインストール済みビルドを報告します。
# Debian and Ubuntu
dpkg-query -W -f='${Version}\n' google-chrome-stable
# Fedora and RHEL
rpm -q google-chrome-stable
# macOS
defaults read "/Applications/Google Chrome.app/Contents/Info.plist" CFBundleShortVersionString
結果を157.0.8103.50と比較します。その番号より前のビルドは影響を受けます。
修正方法
- Chromeを157.0.8103.50以降に更新します。WindowsとmacOSでは、三点メニューを開き、ヘルプ、Google Chromeについての順に選び、更新をインストールします。Linuxではパッケージを更新します。
sudo apt update && sudo apt install --only-upgrade google-chrome-stable - ブラウザを再起動します。ダウンロードされたが適用されていない更新では、古いレンダラーが実行されたままになります。
- エンタープライズポリシーでChromeを管理している場合は、更新が許可され、バージョン報告がすべての端末で157.0.8103.50以降を示すことを確認します。
- Chromiumベースのブラウザを使用している場合は、そのアドバイザリと更新チャネルを確認します。Chromeのビルド番号が当てはまると思い込まないでください。
- すぐに更新できない場合は、閲覧を信頼できるサイトに限定し、プロキシで信頼できないXMLとXSLTのコンテンツをブロックします。これは露出を減らしますが、修正ではありません。
XSLTを動作させたまま脆弱なパターンキャッシュを無効にする設定スイッチはありません。Googleのリリースが修正です。
根本原因は何ですか?
この欠陥はlibxsltのパターンマッチャーにあるxsltTestCompMatchDirect()の再入の問題です。この関数は、直接パターン評価で得られたノードセットを変換コンテキストのランタイムエクストラにキャッシュし、パターンを評価する前にキャッシュされたポインタを読み取ります。
キャッシュは、同じドキュメントに対する直接パターンテストを繰り返すときに、ノードごとにXPathを再評価する代わりに1つのノードセットを再利用するために存在します。最初のステップのランタイムエクストラ、つまりリストポインタ、リストを作成したドキュメント、インデックスでインデックス付けされます。この設計は、評価がキャッシュを変更しないことを前提としています。XSLTは遅延評価を許すため、グローバル変数やテンプレートパラメーターが、外側の評価がまだスタックにある間にネストした変換命令を実行できます。ネストしたxsl:numberが同じキャッシュスロットを準備または置換し、前提を破ります。
修正前のChromiumツリーのthird_party/libxslt/src/libxslt/pattern.cにある脆弱なコードは次のとおりです。
list = (xmlXPathObjectPtr)
XSLT_RUNTIME_EXTRA_LST(ctxt, sel->lenExtra);
if ((list == NULL) || (prevdoc != doc)) {
...
newlist = xmlXPathEval(comp->pattern, ctxt->xpathCtxt);
...
if (nocache == 0) {
if (list != NULL)
xmlXPathFreeObject(list);
list = newlist;
XSLT_RUNTIME_EXTRA_LST(ctxt, sel->lenExtra) =
(void *) list;
...
} else
list = newlist;
}
この関数はxmlXPathEvalの前にキャッシュからlistを読み取ります。評価は同じキャッシュスロットに対してxsltTestCompMatchDirect()へ再入できます。たとえば、値がxsl:numberを実行する遅延評価のグローバル変数を通じて再入します。ネストした呼び出しはキャッシュされたオブジェクトを解放または置換します。外側の呼び出しはその後、古くなったlistポインタを解放します。これは二重解放であり、キャッシュを解放済みメモリへ向けたままにします。
Chromiumの修正コミットも同じ順序を説明しています。キャッシュされたノードセットは評価前に読み取られ、ネストした呼び出しがそれを解放または置換し、外側の呼び出しが再び解放します。
どのように悪用されますか?
攻撃者には、ChromeがXSLTスタイルシート付きのXMLとして解析するドキュメントが必要です。スタイルシートがパターンマッチャーを再入するキャッシュ経路へ導きます。
- 被害者が、
xml-stylesheet処理命令付きの攻撃者制御のXMLドキュメント、または攻撃者制御のXSLTスタイルシートを読み込むページを開きます。 - テンプレートの一致や
xsl:numberのパターンが、遅延評価される構文を使用します。たとえば、値がxsl:numberを実行するグローバル変数です。 - 直接パターン一致キャッシュがパターンのために準備され、
xmlXPathEvalが同じキャッシュスロットに対してxsltTestCompMatchDirect()へ再入します。 - ネストした呼び出しがキャッシュされたノードセットを解放または置換します。外側の呼び出しが古いポインタを解放し、代わりに
newlistを保存します。 - 変換は解放済みメモリを指すキャッシュエントリで続行し、レンダラーにuse-after-freeが生じます。
GoogleはCVE-2026-125350のエクスプロイトが実環境に存在すると述べています。同社はエクスプロイト、攻撃チェーン、影響を受けるサイト、攻撃者の身元を公開していません。この記事の執筆時点でCVEレコードは公開データベースになく、Googleはユーザーの更新中にバグの詳細を制限しています。
同じ修正が、2026年10月12日にNeonix SecurityのArni Hardarsonが報告したXMLのuse-after-freeであるCVE-2026-125346も閉じます。Googleはこちらが悪用されているとは述べていません。2つの報告は同じキャッシュの欠陥を対象としています。
攻撃の流れは?
細工されたXMLとXSLTのドキュメントが再入するパターンキャッシュ評価を引き起こし、ネストした呼び出しがキャッシュされたノードセットを解放し、外側の呼び出しが再び解放して、レンダラーにuse-after-freeを残します。
攻撃者に何ができますか?
欠陥を引き起こした攻撃者はChromeレンダラーのメモリを破壊します。Googleはこの欠陥をHighと評価し、実環境にエクスプロイトが存在すると述べています。同社は、エクスプロイトがレンダラーのサンドボックスを脱出するか、どのプロセスを標的にするか、コード実行後に何をするかを述べていません。
条件は影響の一部です。
- 攻撃者は被害者に攻撃者制御のXMLまたはXSLTを読み込ませる必要があります。通常のページ訪問で十分です。
- 脆弱なコードはレンダラーで実行されます。そこでのコード実行は、2つ目の欠陥やサンドボックス脱出が連鎖するまでChromeのサンドボックスに制限されます。Chromeはすべてのデスクトッププラットフォームでレンダラーをサンドボックス化します。Googleが報告するエクスプロイトはレンダラーで止まるか、より大きなチェーンの一部である可能性があり、公開記録はどちらかを述べていません。レンダラーのメモリ破壊プリミティブはほとんどのブラウザ攻撃チェーンの最初の段階であるため、どちらでも更新は緊急です。
- 公開されたエクスプロイトコードはありません。実環境のエクスプロイトは、公開されたサンプルではなくGoogleの声明から知られています。
「実環境で悪用」を「デバイスの完全な侵害」と読まないでください。Googleはそのチェーンを公開しておらず、レンダラーのサンドボックスは別の境界です。
修正が機能する理由
修正はxmlXPathEvalの後にキャッシュスロットを再読み取りするため、外側の呼び出しはネストした呼び出しの前に読んだポインタではなく、現在キャッシュにあるオブジェクトを解放します。以下はChromiumコミット61cab3f77203が追加したコードです。
@@ -581,6 +581,15 @@ xsltTestCompMatchDirect(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp,
nocache = 1;
if (nocache == 0) {
+ /*
+ * xmlXPathEval can re-enter this function for the same cache
+ * slot, e.g. through a lazily evaluated global variable whose
+ * value runs xsl:number. The nested call may free or replace
+ * the cached object, so re-read it instead of using the value
+ * read before the evaluation.
+ */
+ list = (xmlXPathObjectPtr)
+ XSLT_RUNTIME_EXTRA_LST(ctxt, sel->lenExtra);
if (list != NULL)
xmlXPathFreeObject(list);
list = newlist;
修正はChromiumのコピーに対して完全です。CVE-2026-125350とCVE-2026-125346を閉じ、コミットは細工されたXSLTをiframeで読み込む回帰テストを追加します。
上流のlibxsltプロジェクトは変更を取り込んでいません。上流のmasterブランチのlibxslt/pattern.cは依然としてxmlXPathEvalの前にlistを読み取り、呼び出し後に解放します。Chromiumは修正をthird_party/libxslt/chromiumのパッチとして保持しています。libxsltを同梱するソフトウェア、特にサーバー側のXMLパイプラインや他のブラウザは、そのコピーが修正済みかベンダーに確認してください。
侵害されたかどうかを確認するには?
GoogleはCVE-2026-125350の侵害指標を公開していません。ブラウザのエクスプロイトはディスクにほとんど痕跡を残さないため、信頼できる確認はブラウザのバージョンを確認し、影響を受けるビルドを使用していた期間を露出として扱うことです。
- すべてのデスクトップChromeが157.0.8103.50以降を実行していることを確認します。ローカルでは
chrome://versionを使用し、それ以外は端末管理のインベントリを使用します。 - 影響期間のブラウザクラッシュレポートで、XMLやXSLTを読み込むページのレンダラークラッシュを確認します。クラッシュは手がかりであり、悪用の証拠ではありません。
- プロキシとDNSのログで、ユーザーが通常訪問しないホストからのXMLやXSLTコンテンツを確認します。Googleはドメインもハッシュも公開していません。
- 悪用を疑う場合は、マシンを消去する前にブラウザプロファイル、クラッシュダンプ、プロキシログを保存し、その後で再構築します。
成功したエクスプロイトはクラッシュもファイルも残さない場合があります。クラッシュがないことは、端末が露出していなかった証拠ではありません。
年表
- 2026-10-12:Neonix SecurityのArni HardarsonがXMLのuse-after-freeであるCVE-2026-125346を報告する。
- 2026-11-06:匿名の研究者がXMLのuse-after-freeであるCVE-2026-125350を報告する。Googleは後にこれを実環境で悪用されていると述べる。
- 2026-11-07:Chromiumがコミット
61cab3f77203を適用し、libxsltの直接パターン一致キャッシュの2つの欠陥を修正する。 - 2026-11-09:GoogleがWindowsとmacOS向けChrome 157.0.8103.50/.51、Linux向け157.0.8103.50をリリースする。
よくある質問
CVE-2026-125350は実環境で悪用されていますか?
はい。Googleの安定版チャネルの投稿は、CVE-2026-125350のエクスプロイトが実環境に存在すると述べています。Googleは誰が使用しているか、どのサイトが配信しているか、レンダラーのサンドボックスを脱出するかを述べていません。
公開されたエクスプロイトはありますか?
いいえ。Googleはエクスプロイトコードを公開しておらず、この記事の執筆時点でCVEレコードは公開されていません。実環境のエクスプロイトは、サンプルではなくGoogleの声明から知られています。
AndroidのChromeは影響を受けますか?
Googleのアドバイザリはデスクトップの安定版チャネルを対象としています。Android向けChromeは記載されていません。Androidは安全ではなく未確認として扱い、Playストアで更新してください。
他のChromiumブラウザは影響を受けますか?
各ベンダーが同じlibxsltの修正を提供するまでは、おそらく影響を受けます。Chromeのビルド番号はEdge、Brave、Opera、Vivaldiには当てはまりません。各ベンダーのアドバイザリと更新チャネルを確認してください。
直接パターン一致キャッシュとは何ですか?
libxsltの変換ごとのキャッシュで、直接XPathパターン評価で得られたノードセットを保存します。同じパターンをノードごとに再評価するのを避けます。キャッシュは変換コンテキストにあるため、ネストした評価が同じスロットに到達し、保存されたオブジェクトを置換できます。
libxslt自体は修正されていますか?
いいえ。上流のlibxsltのmasterブランチには依然として脆弱な読み取りがあり、Chromiumは修正をローカルパッチとして保持しています。libxsltを同梱するアプリケーションは、上流プロジェクトとベンダーを追跡してください。
更新はどのくらい緊急ですか?
今すぐ更新してください。この欠陥は通常のページ訪問で到達でき、Chromeはデスクトップブラウザの過半数を占め、Googleはエクスプロイトが存在すると述べています。更新には再起動が必要です。
参考資料
- Chrome Releases、「Stable Channel Update for Desktop」、2026年11月9日、修正版、9件のセキュリティ修正、CVE-2026-125350、CVE-2026-125346、実環境悪用の声明:https://chromereleases.googleblog.com/2026/11/stable-channel-update-for-desktop_018223192.html (2026年11月10日確認)
- Chromiumコミット61cab3f77203671e09402e68738aa217632aed8d、「Fix use-after-free in libxslt direct pattern match cache」、修正と回帰テスト:https://github.com/chromium/chromium/commit/61cab3f77203671e09402e68738aa217632aed8d (2026年11月10日確認)
- 修正前の
third_party/libxslt/src/libxslt/pattern.cにある脆弱なxsltTestCompMatchDirect():https://github.com/chromium/chromium/blob/6eade082d6e5/third_party/libxslt/src/libxslt/pattern.c (2026年11月10日確認) - 上流libxsltのmasterブランチの
libxslt/pattern.c、修正前の順序を依然として含む:https://github.com/GNOME/libxslt/blob/master/libxslt/pattern.c (2026年11月10日確認) - Statcounter Global Stats、2026年10月の世界のデスクトップブラウザ市場シェア:https://gs.statcounter.com/browser-market-share/desktop/worldwide (2026年11月10日確認)
- CISA Known Exploited VulnerabilitiesカタログのJSONフィード、2026年11月10日にCVE-2026-125350を確認(未掲載):https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json (2026年11月10日確認)