世界を動かす技術を、日本語で。

「Claude Mythos Preview」を用いたFirefoxの強化

概要

  • FirefoxはAIモデル(Claude Mythos Preview等)を活用し、過去最多の潜在的セキュリティバグを特定・修正
  • AI活用の手法、発見内容、他プロジェクトへのアドバイスを詳細解説
  • AIモデルとハーネス技術の進化により、実用的なバグ発見が大幅向上
  • 発見バグの一部を公開し、ソフトウェア防御強化の重要性を強調
  • 今後も継続的な改善とAI活用によるセキュリティ強化を推進

FirefoxにおけるAI活用によるセキュリティバグ発見と修正の詳細

  • Claude Mythos Preview などのAIモデルを活用し、 Firefox の潜在的なセキュリティバグを大量に発見・修正
  • 以前はAI生成のバグ報告は誤報が多く、プロジェクト管理者に負担を強いる傾向
    • LLMによる「問題」の指摘が容易だが、対応には多大な労力
  • モデルの能力向上と活用技術の進化により、短期間で状況が一変
    • モデルの高性能化
    • モデル運用技術(指示、スケーリング、ノイズ除去)の大幅改善
  • 通常は修正後しばらく詳細非公開だが、今回は特例として一部バグ報告を公開
    • 多様なブラウザサブシステムから抜粋
    • サンドボックス脱出等、高度な脆弱性も含む
  • 公開したバグ例(一部抜粋)
    • JIT最適化によりWebAssembly GC構造体の初期化が省略され、任意読み書き可能な偽オブジェクト生成
    • <legend>要素の15年越しのバグ(再帰スタック、エッジケースの組み合わせ)
    • IPC競合によるIndexedDB参照カウント操作でUAF(Use After Free)発生
    • NaN値がJSオブジェクトポインタに偽装されサンドボックス脱出
    • イベントループやGCを組み合わせた<object>属性セッターのUAF
    • WebTransportの証明書ハッシュ大量送信による競合とUAF
    • glibc DNS呼び出しの再現によるバッファオーバーリード等
    • 20年越しのXSLTハッシュテーブル再ハッシュ問題
    • カラーピッカー操作でのコールバックUAF
    • RLBoxサンドボックスの検証ロジック抜け穴
    • rowspan=0のHTMLテーブルでの16ビットビットフィールドオーバーフロー
  • これらの多くはサンドボックス脱出であり、完全なFirefox侵害には他のバグとの連携が必要
    • サンドボックス内で攻撃者制御のコード実行を前提
  • AIモデルによるバグ発見はファジングでは困難な領域にも有効
  • モデルが発見できなかった脆弱性も重要
    • 例:プロトタイプ汚染によるサンドボックス脱出を設計変更で根本対策

モデル活用のハードニングパイプライン構築

  • 過去数年にわたり、LLMによるコード監査を内部実験
    • GPT 4やSonnet 3.5等を活用
    • 誤検知率が高く大規模運用は困難だった
  • エージェント型ハーネスの導入で状況が一変
    • 実際にテストケースを生成・実行し、バグ仮説を動的検証
  • Anthropicからの初期報告修正後、自社ファジング基盤上にハーネスを構築
    • Claude Opus 4.6を用いたサンドボックス脱出探索
    • 複雑なマルチプロセスコードでも未知の脆弱性を多数発見
  • プロセス監督から始め、徐々にVM並列化・自動化
    • 各ファイル単位でバグ探索・報告を自動実行
  • 発見だけでなく、バグ管理・重複排除・トリアージ・修正まで一貫対応
    • パイプラインはプロジェクトごとに最適化が必要
    • エンジニアとの密なフィードバックループで改善
  • パイプライン構築後はモデルの入れ替えも容易
    • Claude Mythos Preview等の新モデル導入で効果向上
    • 150リリースで271件、他バージョンでも追加修正
  • チーム全体で100人以上が貢献
    • パッチ作成・レビュー、パイプライン構築・運用、リリース管理

ソフトウェア開発者への提言

  • どのプロジェクトでも、現代的なモデルとハーネスを活用すれば即座にバグ発見・堅牢化が可能
  • シンプルなプロンプトから開始し、観察・反復で最適化
  • 本質は「このコードにバグがあるか、テストケースを作って発見して」というサイクル
  • 現状は人判断+自動信号で重点領域を選定してスキャン
  • 近い将来、CIシステムに分析統合し、パッチ単位での自動スキャンも計画
  • モデルは柔軟で、パッチスキャンも十分有効と期待
  • 今こそ協力してインターネット全体のセキュリティ強化を推進

FAQ:よくある質問

  • 「271件」との発表と、実際のCVE数が異なる理由
    • 内部報告バグは「ロールアップ」CVEとしてまとめて登録
    • 公式リポジトリのyamlがCVEの正規記録
    • 外部報告や他手法による発見分も含め、4月は合計423件を修正
    • Anthropic Frontier Red teamからの個別CVEも3件
  • セキュリティ評価(critical, high, moderate, low)の意味
    • sec-critical/sec-high:通常の利用で引き起こせる深刻な脆弱性
    • sec-moderate:複雑な手順が必要な場合
    • sec-low:ユーザー被害の少ないバグ
    • Firefox 150の271件は、180件がsec-high、80件がsec-moderate、11件がsec-low
  • sec-high/criticalと実際の攻撃可能性の違い
    • 多くの場合、単一バグではFirefox完全侵害は不可
    • 多層サンドボックス・OS保護(ASLR等)で防御
    • sec-highはクラッシュ症状等で判定し、実際のエクスプロイト構築は行わない
    • 誤判定リスクを下げ、脆弱性発見・修正にリソース集中

著者紹介

  • Brian Grinstead:Firefox Distinguished Engineer
  • Christian Holler:Firefox Tech Lead & Principal Engineer(@mozdeco)
  • Frederik Braun:Firefox Application Securityチームマネージャー、Sanitizer API等の標準化にも貢献

参考URL

Hackerたちの意見

LLMがバグを見つけて直すのがすごく上手くなって、Firefoxのエンジニアが新機能の追加に専念できる日が来るといいな。これは皮肉じゃないよ。Firefoxはもっと使われるべきだと思う。周りのほとんどの人は「Chromeの方がほとんどのことをうまくやるから」って理由で使ってないし、Firefoxは他のブラウザのロードマップには勝てないんだよね。

Firefoxはもっと使われるべきだね。 まったく同意だよ。どのサイトで買い物するかを、Firefoxで動くかどうかで選ぶこともあるし、サポートに「対応してない」とか「機能がうまく動いてない」ってたまに連絡することもある。たぶん何も変わらないけど、ブラウザを少しでも意識してもらうためにできることだと思ってる。

Firefoxはもっと使われるべきだね。 問題の一部は、バグ修正をやめると、Mr. Robotみたいなことを始めることだよね… ただのウェブブラウザが欲しいのに。ポケットやAIなんて誰も求めてないよ。もしAIを使ってバグを全部直すなら、彼らは他に何をするの? 様々な言語との構文互換性を維持することだけ? またブラウザをゴミに戻すだけだよ。

Chromeは99%以上のユースケースで意味のある点で良くないよ。俺は開発者だけど、過去10年くらいFFをuBlock Originだけで使ってる。妻も同じで、俺がいろいろ説明したら、インターネット体験がどれだけ違うか理解してくれたから、彼女もそれがメインブラウザになった。だから、「ここにクソみたいなアンダードッグがあるけど、独占は悪いから使って」みたいな議論はやめてほしい。俺が試した中では、全てにおいて一流の体験なんだ。モバイルではそれが3倍になるし、最高のモバイル体験だよ。

元のソース: https://news.ycombinator.com/item?id=48051079 これは、公開されたBugzillaのレポートのサンプルを実際にリストアップしているから、より良いんだ。この話題は以前も議論されたけど(2週間前に36件のコメント: https://news.ycombinator.com/item?id=47885042)、バグレポートが公開される部分は新しい情報だね。

もう一度言うけど、これは重要だよ:バグはバグだ。「潜在的な脆弱性」もバグだ。脆弱性は、概念実証や他の実質的な証拠でセキュリティに影響があることが確認できる。言葉は大事だし、バグも大事。大量のバグを修正することは、昔から重要で、実際に行われてきたことなんだ。それ自体がすごいことだから、十分だと思うよ。Mythosは271の脆弱性のためのPoCを書いて、セキュリティに影響があるコードパスの到達性を示したわけじゃない。Mythosは271の有効なバグを見つけたんだ。それで十分だよ。

君の定義にはちょっと混乱したけど、Mozillaが271の、えっと、ものをこう分けたんだ: > 追加のコンテキストとして、バグの緊急度を示すために、セキュリティの重大度評価をクリティカルからローまで適用しているよ: > * sec-criticalとsec-highは、通常のユーザーの行動で引き起こされる脆弱性に割り当てられる。ウェブページをブラウジングするような行動だね。技術的には違いはないけど、sec-criticalバグは公開されているか、実際に悪用されていることが知られている問題に予約されている。 > * sec-moderateは、通常はsec-highと評価されるはずの脆弱性に割り当てられるけど、被害者からの異常で複雑な手順を必要とするもの。 > * sec-lowは、煩わしいけどユーザーに害を及ぼすことはないバグに割り当てられる(例えば、安全なクラッシュ)。 > Firefoxのために発表した271のバグのうち、150はsec-high、80はsec-moderate、11はsec-lowだった。Mozillaはsec-highでも「脆弱性」という用語を使っているけど、その下で実際の悪用とは同じ意味ではないと言っている。定義のページでは、sec-lowも「脆弱性」として分類されている [2]。言葉は道具で、集合的な意味からその有用性を得るものだ。君がどこでその意味論を得たのか、Mozillaと一致するのか、違うのか興味があるな。

Mythosは、メモリ安全でない動作を示す全てのバグに対してPoCを書いたんだ(例えば、use-after-freeやバッファオーバーランなど)。私たちにとっては、これがセキュリティ脆弱性と見なすのに十分な証拠なんだ、他に示されない限りはね。これは常にそうだったし(ファジングバグにも)。

Mythosは脆弱性のために271のPoCを書かなかったけど、君が言いたいのは「エクスプロイト」ってことかな?

これは、優先順位を決める必要がある場所ではどこでも真実じゃないよ。

Claudeは、もし自分がそのコードを持っていると思えば、見つけた脆弱性に対してPoC(Proof of Concept)エクスプロイトを生成することができるし、実際にそうするだろうってことは覚えておいてもいいかも。これについての唯一の情報源は自分の経験だけで、証拠は共有できないけどね。

彼らはほんの数件のチケットしかリンクしてないから、実際に271の異なるものを見たときにその洞察が当てはまらないかもしれないけど、私が調べたものは全部、厄介なバグを含むC++コードだったよ。Firefoxは複数の言語で書かれていて、C++はそのうちの約25%だけど、これらの問題はすべてC++に関わっているみたいだね。

このアプローチの一般的な限界は、バリデーターの質に依存するってことだね。テストケースを使って、例えばAddressSanitizerのuse-after-freeを作るのは簡単だから。もっと微妙な問題に対しては、より具体的なバリデーターが必要になるのかな?それともLLMが他の危険な条件を見つけるのが上手くなるのかな?様子を見てみよう。

MythosはC++コードの脆弱性を見つけるのが他の言語よりもずっと得意かもしれないね。結局、これらのモデルは既存のセキュリティ分析に基づいてるから。俺が見る限り、これらのバグはほとんどC++特有のものではなくて、単にC++コードで発生しただけなんだ。最も安全なRustでも、TOCTOUの問題のようなものを魔法のようにキャッチすることはできないよ。

PalmSourceにいたとき、CoVerityやFortify(静的コード分析ツール)の予算を取ろうとしたんだけど、「高すぎる」って管理層に言われたんだ。結局、ネットワークスタックのスキャンに限定した低コストの契約をまとめるのにもう1年かかった。「いや、BSDベースだからBSDは本質的に安全だ」って言われたけど、それも全然違うからね。最終的には辞めてMozillaに行ったら、コードの中に/* flawfinder ignore */ってコメントが散らばってた。私の推測では、Mythosは「flawfinder ignore」の指示を無視して、コード内の既知の脆弱性を報告したんじゃないかな。

コードはオープンだよ。もしそれが証明できたら、リアルなニュースになるね…

以前の非技術的なブログ記事は、Anthropicのための恥知らずな製品宣伝だと思って無視してた。リンクされたハッキングブログ(この記事よりも良い情報源)は、歓迎すべきリリースだね。今は本当に何かがあるのを否定するのは難しいと思う。Mozillaの内部での「脆弱性」の定義は、多くの人が直感するよりも広く適用されているだろうけど、こういう問題が真剣に受け止められて修正されるのはいいことだね。

一方で、AISLEのような他の会社は、古いモデルを使って自社のハーネスでMythosに匹敵する脆弱性を出してるよね。 https://aisle.com/blog/aisle-matches-anthropic-mythos-on-fre... だから、Mythosが本物なのは確かだけど、Deepseek proやGPT 5.5などでも同じことができると思うよ。

リンクされたハックスブログ https://hacks.mozilla.org/2026/05/behind-the-scenes-hardenin...

これが静的分析ツールにどう影響するか、みんなはどう思う?全然違う分野だけど、しばしば同じ目標を達成するよね。静的分析ツールは遅いし、たくさんの誤検知を報告するから、これらのモデルが十分に良くて安くなったら、静的分析を使うことは少なくなるのかな。

これについて考えてたんだけど、静的解析ツールはかなり速いし、ほとんどが完全に決定論的だから、CIに組み込むことでバグや潜在的なバグを早めにキャッチできるんだよね。俺はFirefoxのCIで使う静的解析ツールを維持してるんだけど、誤検出は修正するか、問題じゃないって注釈をつけないと、パッチをツリーに入れられないんだ。つまり、誤検出も真の検出もゼロにする必要があるってこと。これは意識的なトレードオフで、解析を弱めて誤検出(見逃したバグ)を出す必要があるんだ。そうしないと、シグナル対ノイズ比が高すぎて、みんなが無視したり、注釈をつけたり、実行をやめたりするからね。ほとんどの静的解析ツールはこういうバランスを取らなきゃいけない。AIは一般的にもっと自由度があるけど、誤検出を許すのが基本的なところなんだ。これがその力の源になってるから、上に検証とバリデーションの層を重ねる必要がある。遅くなるし、「この特定の形式のエラーを100%キャッチする」なんて言えないけど、たくさんの問題を見つけてくれる。データポイントとして、俺の解析は、真の検出(実際のバグ)が出る可能性が低いと思ってたケースをカバーしてなくて、実装するのが面倒だと思ってたんだ。OpusかMythos、どっちかがそのケースからの脆弱性を報告し始めたから、急いで分析を拡張してそのギャップをカバーした。実装に時間がかかって、ソースツリーのフルスキャンを終えた頃には、Claudeが報告した重要な問題を全部見つけてた。静的解析は他にもいくつか見つけたけど、正直言って、それらが実際にトリガーされるかどうかはまだわからない。静的解析には価値があると思ってる。問題のあるパターンのいくつかは、AIが構築できないようなトリッキーなパスを通って到達できるかもしれないし、他のコードが変更されると本当の問題になるかもしれない。今のところ、両方の可能性に対して修正を用意しておく価値があると思うし、AIに無駄な時間を使わせたくないっていう小さな理由もある。一方で、明らかにコスト/ベネフィットのバランスは変わってきてる。チームを組むこともできるね。もし俺が基準を緩めて、分析が疑わしい問題の追加警告レポートを書くことを許可すれば、誤報の可能性があることを明確に期待して、AIにそのリストを渡して検証させることができる。要するに、スロップをスロップマシンに流し込んで、粗い中からダイヤモンドをフィルタリングさせるって感じ。考える材料だね…

LLMはツールを置き換えるよりも、ツールを使うのがずっと得意だよ。ツールは一般的に、LLMで同じ結果を得るよりもずっと速い。LLMのコーディングツールを使って静的解析ツールの出力を管理するのはすごく効果的だし、問題がないことを強制するガードレールを追加するのはいいアイデアだと思う。すべてがクリーンであることを確認するためにCIチェックを追加するのと同じだね。誤検出については、ツールによるかな。俺はノイズを大量に生成するツールは避ける傾向がある。ほとんどのツールは、ノイズが多い場合はルールを無効にすることを許可してるし、LLMにすべての問題を修正するように指示することもできる。ルールと議論するよりも修正する方が安いなら、修正しちゃった方がいい。手動でやらなきゃいけなかった頃は本当に高くついたけど、今はそうじゃない。最近、数年触ってなかったAnsibleのコードベースをリフレッシュするためにこれをやったんだ。何百ものansible-lintの問題があって、ほとんどが非致命的な警告や廃止警告だった。10分後にはゼロになったよ。たぶんそれほど深刻なものではなかったけど、技術的負債の一形態だね。何百もの警告を手動で修正しなきゃいけないなら、たぶんやらないだろうけど、魔法の杖を振って全部解決できるなら、やらない手はないよね。ガードレールを調整して、今は常にansible-lintを実行して問題を修正するようにしたよ。追加で数秒しかかからないし。

面白い可能性として話題に上がっているのは、静的解析ツールを強化して、LLM(大規模言語モデル)が最初に発見するバグの形を見つけることだね。静的解析ツールは速くて安価だから、大規模なコードベースに対してスケールしやすいし、LLMの手法を一般化することもできるかもしれない。

Zigの人たちがLLM生成のバグを考慮しないって文脈でこの記事を読むと、どの技術が私のツールチェーンに入るかの視点が変わるね。

両方とも正しいけど、どのモデルを使うか、誰がそのバグを提出するかによるね。先進的なモデルの能力は、数ヶ月で99%のノイズから99%の有効なバグに変わった。あるプロジェクトは前者に溢れていて、メンテナに対する本質的なDoS攻撃を避けるための対策が必要なんだ。

本当にOpusがこれらを全部できなかったわけじゃなくて、バグを修正するインセンティブがなかっただけなんだ。Mythosは実際のマーケティングユースケースを代表してたから、これを修正するためにお金を使ってくれてありがとう。でも、これは持続可能じゃないよ。

ソフトウェアを作っている人は、今日から現代のモデルを使ってバグを見つけてコードを強化するためのハーネスを使い始めることができる。今すぐ始めることをお勧めします。俺の理解では、それは商業的なLLMプロバイダーによってすぐに禁止されるレシピなんじゃないの?