- ChromeはGeminiベースのエージェントで脆弱性の発見から分類・修正・配布・アップデート適用までを自動化し、Chrome 149と150で、直前の23マイルストーンを合計した数を上回る1,072件のセキュリティバグを修正した
- 脆弱性検出システムは、複数のモデル、ChromeのCVE・Git履歴の知識ベース、SECURITY.md、別の批評エージェントを組み合わせ、インターネットとローカルシステムへのアクセスを厳しく制限した環境で動作する
- 自動分類は、スパム・重複の除去、再現とスタックトレースの収集、深刻度などのメタデータ追加、担当者割り当てを行い、毎月数百時間分の開発者作業を削減すると推定される
- 修正公開後に悪用されるまでのパッチギャップを縮めるため、週2回のセキュリティリリースを試験し、再起動なしで子プロセスを置き換える動的パッチとmacOSの自動再起動を開発している
- 個別のバグ修正にとどまらず、MiraclePtr・
std::span・Rustでメモリ安全性を高め、提出時点のAI検査と2,300件以上の外部依存関係の自動更新により脆弱性の流入を防ぐ
AIが変えたセキュリティバグのライフサイクル
- LLMは、人間のセキュリティ専門知識だけで扱える規模を超えて自動脆弱性検出を拡張しており、Chromeは数百件のセキュリティバグをより速く発見・修正するためにAIを活用している
- 一般的な機能バグがUIのフリーズのような問題を引き起こすのに対し、セキュリティバグは攻撃者が個人データを読み取ったり、ユーザーに気づかれずにコンピューターを制御したりするエクスプロイトに利用される可能性がある
- セキュリティバグは、発見、分類、修正、修正版を含むChromeの配布、ブラウザーの再起動と適用という順序で処理され、すべての段階をできるだけ短縮することが目標である
脆弱性検出の拡大
- Chromeセキュリティチームは、数年にわたりLLMベースの検出技術を発展させてきた
- 2023年にはセキュリティファジングの範囲と性能を高める方法を開発した
- 2024年にはProject ZeroとNaptimeを開発し、LLMに脆弱性研究用の専門ツールを提供した
- 2025年にはDeepMind・Project ZeroとBig Sleepを開発し、このエージェントがV8 JavaScriptエンジンとグラフィックススタックでバグを発見した
- 2026年初頭に構築したGeminiエージェントハーネスは、より広いChromeコードベースで検出効率を高め、誤検出を減らした
- 発見されたサンドボックス脱出バグは、侵害されたレンダラーがブラウザーをだましてローカルファイルを読み取らせることができるもので、コード内に13年以上残っていた
- 検出ハーネスには次の機能が追加された
- オープンウェイトモデルと独自モデルそれぞれの強みを利用するモデル相互運用性
- 既存の全CVEとChromeの全Git履歴を含む知識ベース
- 信頼境界と脅威モデルを明確に伝えるSECURITY.md作成ガイドライン
- 別コンテキストでSECURITY.mdを読む批評エージェント
- モデルの非決定性と時間に伴う改善を反映するためのコードベース反復検査
- AIは一般のインターネットにアクセスできないロックダウンされた機器上で、保存されたソースコードのみを分析する
- すべてのネットワークリクエストを傍受し、アプリケーションと宛先に基づく許可リストを適用する
- モデルを無制限モードで実行せず、サブエージェントによるシステム変更と、指定されたソースディレクトリ外のファイルアクセスを制限する
- AI検出は既存のセキュリティテストを置き換えるものではない
- ファジングは、互いに離れたコード領域の長距離相互作用や、無関係に見える複数の操作の組み合わせから生じるバグに特に効果的である
- 外部研究者はChrome Vulnerability Reward Programを通じて、難しく影響の大きい脆弱性を継続して見つけるよう報奨を受ける
- 2026年初頭にはすべての種類の報告が増加し、3月には2025年全体を上回るバグ報告が寄せられた
- これに伴いVRPを変更し、内部検出結果に追加価値を提供し、自動処理パイプラインが受け入れやすい報告に集中するようにした
自動分類とマルチエージェント修正
- 以前はセキュリティ報告1件の分類に5分から30分以上かかり、主に人間の専門知識に依存していたが、現在はルールベースのシステムとAIを組み合わせて処理量と精度を高めている
- 自動分類は4段階で進む
- 正確な測定は難しいが、自動分類により毎月数百時間分の開発者作業を削減していると推定される
- 脆弱性修正にはマルチエージェントのワークフローを適用する
- 修正エージェントが問題ごとのコンテキストを受け取り、複数の候補パッチを生成する
- 批評エージェントが最も適した候補を評価し、開発者のレビューに必要な成果物を作る
- 2つのエージェントがコードレビューに似た反復作業を行い、機能動作、Chromium・Googleスタイル、ローカルコード慣例への準拠を検査する
- テスト作成エージェントが、開発者レビュー前にChrome対応プラットフォームと構成全体でテストを確認し、最大で数週間の時間を節約する
- 現在、ほとんどの脆弱性についてLLMが修正候補を生成している
- Chrome 149と150ではセキュリティバグ1,072件を修正し、直前の23マイルストーンの合計を上回った
- DeepMind・Project Zeroと協力したBig SleepとCodeMenderはCIに統合され、すべてのCLを24時間ごとに検査する
- 5月の1か月間で、重大なS1+問題を含む20件超の脆弱性が本番環境に到達する前にブロックされた
パッチギャップの短縮とアップデート適用
- 修正コードが公開オープンソースリポジトリに入ってからユーザーへ配布されるまでの間に、攻撃者がそれをリバースエンジニアリングして悪用できるN-day攻撃の期間をパッチギャップという
- メインツリーに反映された修正が、大多数のユーザーが利用するStableチャネルに届くまで通常は数週間かかる
- 深刻度に応じて修正を現在のStableリリースブランチへ直接マージし、新たな衝突や回帰を継続して監視する
- 主要なChromeマイルストーンを2週間周期へ移行したことで、毎週セキュリティアップデートを提供している
- AIベースの攻撃速度に対応するため、週2回のセキュリティリリースも試験中である
- Stableに到達したすべてのセキュリティバグは、内部・外部のどちらで発見されたかに関係なく公開文書化する
- 手作業のボトルネックをなくし、発見から公開までの時間を短縮するため、パッチからリリースノートとCVE説明を自動生成する作業を進めている
- Chromeは2008年から、新しいバイナリをバックグラウンドでダウンロードして準備し、次回再起動時に適用する自動更新を使っている
- 分類・修正・テスト・配布には1〜2日かかるが、ユーザーが再起動するまでの待ち時間もN-day悪用リスクに大きく寄与し得る
- 再起動は作業を妨げ、別途予定を組む必要があるため、ユーザーが先延ばししやすい
- ユーザーに再起動の負担を押し付けないための機能を開発中である
- 動的パッチはChromeのマルチプロセス構造を利用し、Renderer・GPUなどのバックグラウンド子プロセスを新しいバイナリへ順次置き換えるもので、ほとんどの場合にブラウザー全体の再起動をなくすことを目標とする
- 複雑な状況でもセッションを復元できるよう、より多くの状態をローカルに保存する方法を検討している
- 完全なセッション復元が保証される時点で自動的に再起動する
- Chrome 150はmacOSで、すべてのウィンドウが閉じられているがアプリがバックグラウンドに残っている状態を検知し、保留中のアップデートがあれば自動再起動する
- 長期的には、継続的な動的パッチと、妨げの少ないタイミングでの自動再起動を組み合わせた常に最新状態のブラウザーを目指す
- 企業IT管理者向けの推奨事項は次のとおり
- RelaunchNotificationポリシーを使い、通知から所定期間後の強制再起動まで段階的に適用する
- 変更内容の検証が必要なセンシティブな環境ではChrome Extended Stable Channelを使う
- Chrome Enterprise CoreまたはPremiumのOS非依存ダッシュボードでブラウザー全体のバージョンを追跡し、アップデートをきめ細かく管理する
C++防御とRustへの移行
- Chromeは既存のC++脆弱性をランタイムで無力化すると同時に、長期的にはメモリ安全な言語へ移行する二重戦略を用いている
- Chromiumコードの大半はC++であるため、ツールチェーンとランタイム緩和が即効性のある第一防衛線となる
- 強化された標準テンプレートライブラリとMiraclePtr系の技術により、Use-After-Free(UAF)脆弱性を減らしてきた
- C++防御ロードマップは3つの柱で構成される
- MiraclePtr・MiracleObjectの拡大
- MiraclePtrをSkia、ANGLE、Dawn、C++イテレーター、
std::コンテナーへ拡大する - MiracleObjectは、局所的なランタイム性能を時間的安全性と引き換えにし、GPUメインスレッドのUAF脆弱性の最大90%を無力化することを目標とする
- MiraclePtrをSkia、ANGLE、Dawn、C++イテレーター、
std::spanへの移行- ポインターとサイズを一緒に使う従来構造を、コンパイラーが検査する
std::spanへ置き換え、範囲外アクセス(OOB)を排除する - Chrome自身のコードの97%が厳格なunsafe-buffer警告とともに問題なくコンパイルされており、Skia・ANGLE・Dawnにも要件を拡大している
- ポインターとサイズを一緒に使う従来構造を、コンパイラーが検査する
- 構造・アロケーションの強化
- メモリアロケーション計算にchecked mathを適用し、整数オーバーフロー経路を防ぐ
- ポインターを含む型と非ポインター型を厳密に分離する追加ヒープパーティショニングにより、UAFの悪用を難しくする
- MiraclePtr・MiracleObjectの拡大
- C++ランタイム緩和は今後数年以内に限界効用が低下すると見ている
- ランタイム検査はコンパイル時保証よりコストが大きく、強く緩和されたC++バイナリでもRule of Twoを守るには、性能を制限する厳格なサンドボックスが必要である
- 長期的にはRustへの移行を推進する
- Rustフライホイール: ChromiumベースのAPIとツールをRustに直接提供する中央SDKを構築し、新しいコンポーネントで日常的に選べるようにする
- バグ密集領域の除去: 複雑なデータパーサー、画像コーデック、フォントスタックのように、過去にバグ密度が高かったコードを戦略的に置き換える
- 高権限のモジュール化: 新しいモジュールをRustで書き、ブラウザープロセスのような高権限領域でも、サンドボックスの性能コストなしに複雑な機能を実行できるようにする
- ブラウザー最上位UIをHTML・CSS・TypeScriptで実装し、既存のC++フレームワーク依存をさらに減らす案も検討している
コード提出前に脆弱性をブロック
- コードベース全体を定期的にスキャンする方式だけではChromeの速い開発ペースに追いつくのが難しいため、AI検査をコード提出時点の近くに配置している
- CIとコミットキュー(CQ)の防御モデルは変更差分を自動検査する
std::spanへの移行修正を提案する- ダングリングポインターを示す
- 数値演算の安全性を強制する
- 単独では安全なコードでも、別の場所の小さな論理変更と組み合わさると、深刻な潜在的セキュリティ問題になり得る
- CQ内の継続的なLLM意味解析は、従来の静的解析が見逃す微妙または複雑な相互作用を見つけ、コードがツリーに入る前にブロックする
オープンソースエコシステムと外部依存関係
- WebセキュリティはChrome自身だけでなく、オープンソースプロジェクトとメンテナーの対応能力にも依存する
- Googleは、メンテナーが脆弱性報告に迅速に対応するためのツールと支援を確保できるよう、他の参加者とともにAlpha-Omegaプロジェクトに1,250万ドルを寄付した
- Akritesプロジェクトの創設メンバーとして参加しており、中央脆弱性報告窓口とセキュリティインシデント対応チームを提供し、アップストリームメンテナーの負担を減らすことを目標としている
- ChromiumとV8、BoringSSL、Skia、ANGLE、Dawnのような関連プロジェクトには2,300件を超える外部依存関係がある
- このうち約1,700件が、Androidデバイス、エッジコンピューティングプラットフォーム、大規模クラウド企業スタックなど、さまざまな製品を通じてユーザーに配布されている
- 自動脆弱性検査パイプラインは、Google内部フィードと米国政府のNVD、オープンソース中心のOSVデータを収集する
- 事後モニタリングだけではリスクギャップが残る可能性があるため、すべてのChrome外部依存関係を最新のアップストリーム版へ先行更新する自動更新パイプラインへ移行し始めている
- 自動化の過程ではGOSSIPのようなプロジェクトの安全シグナルを利用し、外部オープンソースエコシステムの他のリスクも反映する
継続的に保護されるブラウザー
- LLMによって発見・修正されるバグ数が増えることは失敗ではなく、修正されたバグ1件ごとに攻撃者が利用できる足場が1つずつ減る
- 発見と修正だけでは十分ではなく、攻撃者が悪用する前に修正版を配布し、ユーザー環境へ適用しなければならない
- より速いリリース、動的パッチ、妨げの少ないタイミングでの自動再起動、構造的防御を組み合わせ、ユーザーを妨げることなく継続的に保護されるChromeを目指す
1件のコメント
Hacker Newsの意見
最近仕事が忙しい間に パフォーマンス最適化 でAIをかなり使ってみたが、上位レベルの方向性を定めるのにはほとんど役に立たなかった。SQLクエリの怪しい箇所を指摘しても前後の性能差はほぼなく、無駄な提案に時間を取られ、他の人が未加工のAI出力を意味のある貢献のように投げてくることにまで対処しなければならなかった
ただし、自分で見つけた変更を実装したり、JOINをCTEに移す作業はずっと楽になった
AIツールに「簡潔に」「質問にだけ答えて」「求めていない情報は出さないで」と繰り返しても必要以上に出力してきて、トークンをもっと消費させようとする微妙な試みに見える
コードテキストだけではキャッシュサイズ、データベース容量、ネットワーク遅延は分からないのだから、こうした文脈を与えたほうがより良い結果を得られる
先月5月のベルリン Pwn2Own でFirefoxが賞金をまったく支払わなかったという事実が重要な資料だ。2007年以降のすべてのイベントで賞金を支払ってきたのに、確認された脆弱性が一つもなかったというのは、簡単に見つかる脆弱性がほぼなくなり、この種のモデルがある程度有用だというシグナルに見える
多くのバグを修正できるという点は信じるが、実際のプロセスが気になる。Googleがブログを出し、管理職が上層部に AI導入の成果 を示せるよう、数回のスプリントにわたってバグ修正を促し、チームが普段よりはるかに多く働いた可能性もある
LLMの性能は実行される反復構造に左右され、その構造はバリデータの品質に左右されるのだから、管理職の実績アピールがなくても十分説明できる
AIは野放しに働かせるのではなく 加速ツール として活用すべきで、批判者はそこを混同しているように見える。投資収益が悪いからといってExcelに腹を立てるようなストローマン論法に近く、これ以上論争するより、きちんと効率よく使おうとしている人たちと静かに使い方を共有したい
放置すると数回の反復で結果は悪化し、丁寧に導けば価値は出るが、その手間は、特に反復作業がある場合、結局自分でコードを書くのと大差ない
自動修正のうちいくつが 差し戻されたのか、新しいバグをいくつ作ったのか、検出エージェントの偽陽性率がどれくらいなのかは分からない。投稿には成功した数値しかなく、うまくいかない可能性についてはまったく触れられていない
バグを 10 個修正しながら 2 個新たに作ったとしても、単独で悪用可能な深刻なバグでない限り純利益は大きい。ブラウザ攻撃はますます長い 脆弱性チェーンを必要とするため、AI で潜在的なバグを見つける利点は無視しがたい
https://blog.chromium.org/2012/05/tale-of-two-pwnies-part-1....
今後 Google が Chromium には公開の 集団的バグ探索は不要だと判断し、公開開発をやめるのではないかと懸念している。そうなれば現在の Chromium 系は最後の公開版の事実上のフォークとなり、Gemini の支援を受ける Chrome ほど保守する資源がないため、各フォークの管理難易度に差が出るかもしれない
AI 批判はしばしば、コードを盲目的に生成するのが悪いという狭い範囲に集中しており、その点は簡単に認められる。しかし、敵対的テスト、開発者の仮定の検証、リファクタリング提案、小さな開発ツール、ガイド付きコーディング、大規模コードベースの依存関係や動作の追跡はその反対側にあり、大きな助けになりうる
盲目的なコード生成に当てはまる批判を、こうした活用全体とあまりに安易に混同している
そもそもこのバグのうちいくつが LLM が書いたコードから生じたのかが核心だ。バグを 100 倍多く作り、100 倍多く直すことは自慢にならない
オープンソースプロジェクトなので、実際に LLM が作ったバグなのか自分で確認することもできる
Chrome がどこで何をしていてもユーザーを追跡しようとする 行動追跡バグも修正したのか気になる