警告:この脆弱性は既に悪用が確認されています(ゼロデイ)。
記事を読む前に、まずはChromeのアップデートを開始してください。
⚡ 3行でわかる要点 (TL;DR)
- Google Chrome 145 に深刻度Highのゼロデイ脆弱性(CVE-2026-2441)が発覚
- CSS処理におけるUse-after-free が原因で、細工されたWebページを見るだけで任意コード実行の恐れ
- Windows/Mac版は v145.0.7632.75 以降へ今すぐ更新が必要
🚨 はじめに
2026年2月中旬、GoogleはChromeの緊急セキュリティアップデートを公開しました。
今回の脆弱性 CVE-2026-2441 は、CSSの処理エンジンにおいて発見されたもので、攻撃者がすでにこの脆弱性を悪用していることが確認されています(発見者: Shaheen Fazim氏)。
単なる「アプデしてね」という記事は他にもあると思うので、本記事ではエンジニア向けに「なぜCSSでメモリ破壊が起きるのか(Use-after-free)」という技術的な仕組みに踏み込んで解説します。
🛠 技術解説:CSSにおけるUse-after-free (UAF)
今回の脆弱性の種類は Use-after-free (UAF) です。
これは、プログラムが「メモリを解放(free)」した後に、そのメモリ領域を誤って「参照(use)」してしまうバグです。
🔍 発生メカニズムのイメージ
Chromeのレンダリングエンジン(Blink)内では、以下のような競合状態(Race Condition)が発生していると推測されます。
// ※Blinkエンジンの挙動を簡略化した擬似コードです
// 1. あるDOM要素に複雑なCSS(アニメーション等)が適用される
Element* el = new Element();
Style* style = el->computedStyle();
// 2. JavaScriptやレンダリング処理によって要素が削除される
// メモリ上では 'style' オブジェクトが解放(free)される
delete style;
style = nullptr; // 通常はポインタも無効化されるべき
// ...(ここで攻撃者が解放されたメモリ領域に悪意あるデータを書き込む)...
// 3. レンダリングエンジンの別スレッド(レイアウト計算など)が
// すでに解放された 'style' を参照しにいってしまう!
if (style->hasAnimation()) { // <--- ここでUAF発生!
// 攻撃者が配置した偽の関数ポインタが実行される恐れ
style->executeRender();
}
⚠️ なぜCSSが危険なのか?
最近のWeb標準(CSS)は非常に高機能化しています。
@scroll-timeline-
:has()擬似クラス - CSS Container Queries
これらはレンダリングエンジンに対して、動的かつ複雑な依存関係の解決を求めます。
特に「DOMツリーの変更」と「スタイルの再計算」のタイミングが非同期で重なる一瞬の隙を突くことで、UAFが成立してしまうケースが近年多発しています。
🛡 影響を受けるバージョンと対策
📦 対象製品
- Google Chrome (Desktop)
✅ 修正済みバージョン
以下のバージョン(またはそれより新しい番号)になっていれば安全です。
| OS | バージョン |
|---|---|
| Windows / Mac | 145.0.7632.75 |
| Linux | 144.0.7559.75 |
🔧 確認手順
- アドレスバーに
chrome://settings/helpと入力 - 自動的にアップデートが開始されます
- 「再起動」ボタンを必ず押してください(メモリ上のプロセスを入れ替えるため必須)
📝 まとめ
ブラウザの脆弱性は「怪しいサイトを見なければ大丈夫」という常識が通用しません。
細工された広告バナーが表示されるだけで攻撃が成立する場合もあります。
組織のセキュリティ担当の方は、至急メンバーへのアップデート周知をお願いします。
📚 参考リンク
この記事が役に立ったら LGTM 👍 してもらえると、次のセキュリティ解説記事を書くモチベーションになります!