この記事では、以下の内容を扱います。 use-after-free(UAF)脆弱性がなぜ危険なのか CSSの処理がどのようにメモリ破壊を引き起こすのか UAFからリモートコード実行に至るエクスプロイトチェーンの全体像 ブラウザの防御機構と、開発者としてできること 対象読者: Webアプリケーション開発者、ブラウザセキュリティに関心のあるエンジニア。C/C++のポインタやメモリ管理の基礎知識があると理解しやすいですが、本記事ではゼロから解説します。 CSSレンダリングエンジンの内部構造 脆弱性を理解するためには、まずブラウザがCSSをどのように処理しているかを知る必要があります。 レンダリングパイプライン ブラウザがHTMLとCSSをパースした後、画面に描画するまでに5つのフェーズを順番に通過します。 図: Blinkレンダリングパイプラインの5フェーズ 各フェーズの役割は次のとおりです。

