flawopen.com/Incidents/angle-cross-platform-zero-day-december-2025
CVE-2025-14174:Chrome の ANGLE 脆弱性と Apple の CVE 記載
Google は Chrome の ANGLE の悪用を確認しました。Apple は別の WebKit メモリ初期化問題にもこの CVE を使用しています。
書類を転記する人が指定欄を越えて次の記録に書き込む様子は、範囲外アクセスの説明になります。台帳で同じ番号が別の記録に再利用されても、欠陥が同じとは限らず、同じコードが共有されている証拠にもなりません。
主要な概念と専門用語
ANGLE- Almost Native Graphics Layer Engine。OpenGL ES や WebGL の呼び出しを Metal、Direct3D、Vulkan などのネイティブ API に変換する Google のオープンソースライブラリ。
Metal バックエンド- Metal API を対象とする ANGLE の部分です。Google は Mac 版 Chrome の ANGLE の問題と説明していますが、該当関数や修正の仕組みは公開していません。
範囲外アクセス(CWE-787)- 範囲外アクセス(
CWE-119/CWE-787):バッファーの想定範囲外のメモリーにアクセスする操作です。CWE-787は範囲外書き込みを示します。Google は正確な操作や原因を公開していません。 チェック付き算術- オーバーフローを黙って折り返すのではなく報告する整数演算。Chromium や ANGLE の base::CheckedNumeric など。
ゼロデイ- ゼロデイは修正が公開される前に悪用された脆弱性です。Google は Chrome の ANGLE の問題が悪用されていると確認しました。Apple は iOS 26.2 の告知で WebKit の問題に関する標的型攻撃を別途説明しています。
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-787
- CISA KEV — 追加日 2025-12-12 — CVE-2025-14174
インシデントのタイムライン
Google が macOS 版 Chrome 143.0.7499.110 を公開し、ANGLE の問題に対するエクスプロイトが実際に存在すると明らかにする(Chromium issue 466192044)。
Apple の告知では CVE-2025-14174 は WebKit のメモリー初期化の問題、CVE-2025-43529 は別の WebKit メモリー破損の問題として記載されています。Apple は後者が標的型悪用に関係する可能性を示していますが、Chrome の ANGLE と共通の原因を示すものではありません。CISA は CVE-2025-14174 を KEV に追加しました。
ステップ・バイ・ステップの攻撃フロー
細工したページがグラフィックス層に届く
CVE の記録では、細工された HTML ページが Mac 版 Chrome の ANGLE の問題を引き起こします。CVSS ベクトルはユーザー操作を必要とするため、被害者が攻撃者の管理する Web コンテンツを開く経路です。
ANGLE が Metal に変換する
Google は ANGLE を Chrome の影響コンポーネントとして挙げています。公開告知は原因関数を示さず、WebKit が同じ脆弱なコードを使うとも述べていません。
バッファ外のメモリにアクセスする
Google は範囲外メモリアクセスと説明していますが、読み書きの別、対象バッファー、原因は公開していません。以下は一般例であり、ANGLE のソースでも CVE の再現でもありません。
標的型攻撃に使われる
Google は CVE-2025-14174 の悪用を確認しました。Apple は WebKit の標的型悪用を別途報告し、WebKit のメモリー初期化項目にもこの CVE を使っています。公開告知は Chrome と WebKit の共通チェーンを示していません。
ソースコード比較:脆弱 vs 堅牢化
Google は関数レベルの原因やパッチの詳細を公開していません。この一般的な C++20 の例はオフセットを検証し、減算で要求サイズと残り容量を比較してオーバーフローを避けます。この CVE の再現でも ANGLE の実際の修正でもありません。
// 一般化した例であり、ANGLE のソースコードや CVE-2025-14174 の実装ではない。
bool copyRange(std::span<std::byte> destination,
std::size_t offset,
std::span<const std::byte> source)
{
std::copy(source.begin(), source.end(), destination.begin() + offset);
return true;
}
// 一般化した例であり、ANGLE のソースコードや CVE-2025-14174 の修正パッチではない。
bool copyRange(std::span<std::byte> destination,
std::size_t offset,
std::span<const std::byte> source)
{
if (offset > destination.size() ||
source.size() > destination.size() - offset) {
return false;
}
std::copy(source.begin(), source.end(), destination.begin() + offset);
return true;
}
エンジニアリング&システム堅牢化チェックリスト
- ✓Mac 版 Chrome を 143.0.7499.110 以降に更新してください。現在の環境にはサポート対象の最新バージョンを導入してください。
- ✓製品間で共有している解析・グラフィックスライブラリ(ANGLE、FreeType、libwebp、libxml2)を洗い出し、各ブラウザーだけでなくそれらのセキュリティ公告も購読する。
- ✓呼び出し側が制御できる寸法から計算するすべてのバッファサイズに、チェック付き算術(base::CheckedNumeric、C23 の std::ckd_mul、Rust の checked_mul)を必須にし、チェックのない乗算はコードレビューで指摘する。
- ✓CI で AddressSanitizer を有効にし、テクスチャやバッファのアップロード経路を極端な寸法やゼロの寸法でファジングして、範囲外コピーがリリース前にテストで失敗するようにする。
- ✓Chrome の ANGLE アドバイザリと Apple の WebKit 項目は別々に追跡してください。識別子や日付の一致だけでは、共通の原因やエクスプロイトチェーンは証明されません。