フロンティアモデルがソフトウェアの脆弱性を「見つける」のは、もう難しくない。難しいのはその後だ。AIが吐き出した数百件の指摘のうち、本物はどれで、誤検知はどれか。それを仕分ける人間の時間が足りない。OSSメンテナの多くは無償のボランティアで、ただでさえIssueの山に追われている。そこへAIが「脆弱性かもしれません」を大量投下したら、セキュリティは良くなるどころか、ノイズで埋もれて悪化しかねない。
6月22日に動き出したOpenAIとTrail of BitsのPatch the Planetが面白いのは、新しいモデルを自慢する話ではなく、この「見つけたあとの詰まり」を運用でどう解くかに正面から取り組んでいる点だ。一次情報はTrail of Bits側のブログにかなり具体的に書かれている。
1週間で19プロジェクト、64PR
Patch the Planetは、OpenAIが5月に立ち上げたサイバーセキュリティ向け施策「Daybreak」の一環で、セキュリティ企業のTrail of Bitsと組んで進める。やることはシンプルで、重要なOSSにAIを当てて脆弱性を見つけ、人間のエンジニアがレビューしてからメンテナにパッチとして渡す。
最初の1週間の数字をTrail of Bitsはこう報告している。
| 項目 | 1週目の実績 |
|---|---|
| 対象プロジェクト | 19 |
| 発見されたバグ | 数百件 |
| 提出されたPull Request | 64 |
| 起票されたIssue | 51 |
| マージ済みパッチ | 37 |
| 解決済みIssue | 19 |
対象には cURL、NATS、pyca/cryptography、Sigstore、aiohttp、Go、freenginx、Python、python.org、urllib3、PyPI、Valkey、RustCrypto といった、ほぼ全エンジニアが間接的に依存している基盤が並ぶ。発表後にはさらに30以上のプロジェクトが参加したという。使われたモデルは、OpenAIが自社で最もサイバー能力が高いと位置づける GPT-5.5-Cyber と、エージェント実行環境の Codex だ。
ここで注意したいのは、報道によって「対象は8プロジェクト」とする記事と「19プロジェクト」とする記事が混在することだ。OpenAI側の告知が初期の代表的なサブセットを挙げ、Trail of Bits側が実際に着手した全体を数えている、という差に見える。実数で押さえるなら、手を動かした当事者であるTrail of Bitsの19という数字が確からしい。
主役はモデルではなく、フィルタの設計
この取り組みの核心は、Trail of Bits自身が認める一文に出ている。
フロンティアモデルは脆弱性を見つけるのもパッチを書くのも非常に得意だが、同時に大量の誤検知を生み、ただでさえ手一杯のメンテナの負担を増やしてしまう。
だから設計の重心は「いかに多く見つけるか」ではなく「いかにメンテナに届く前に絞るか」に置かれている。エンジニアが指摘を一次レビューし、重複排除、誤検知フィルタ、深刻度の補正、パッチ生成までを挟んでから渡す。社内には Patchy という監視ボットを置き、どの指摘がどのパッチとしてマージされたかを追っている。AIの出力をそのまま投げない、という当たり前のことを、ワークフローとして固めたわけだ。
個人的にここが一番実務に効くと思う。AIセキュリティツールを自分のリポジトリに入れて「指摘が多すぎて運用が回らない」と感じた人は少なくないはずで、問題はモデルの賢さではなく、出力を受け止める側の構造だった。Patch the Planetはその構造をプロダクト化しようとしている。
メンテナ側でできること: AGENTS.md と脅威モデル
ここからは読者が自分のプロジェクトに持ち帰れる話だ。Trail of Bitsは、誤検知を減らすうえで効いた具体策として、リポジトリに AGENTS.md のような説明ファイルと明示的な脅威モデルを置くことを挙げている。pyca/cryptographyでは、既存のセキュリティドキュメントがノイズ除去に「劇的に効いた」とされる。
考えてみれば筋が通っている。「このコードでは何が攻撃面で、何は設計上わざとそうしているのか」をモデルに事前に教えておけば、想定内の挙動を脆弱性と誤認する確率は下がる。イメージとしてはこんな粒度だ。
# AGENTS.md (セキュリティ文脈の例)
## 信頼境界
- 外部入力: HTTPリクエストヘッダ、Cookie、アップロードファイル
- 信頼済み: 同一プロセス内の内部API呼び出し
## 既知の設計上の判断(脆弱性ではない)
- デバッグ用エンドポイントは localhost バインドのみで意図的に無認証
- 一時ファイルは権限0600で生成し、漏洩前提の設計はしていない
実際に効いた例も具体的だ。aiohttpではCookieのスコープ問題やダイジェスト認証の資格情報オリジン検証など8件の修正が5時間ほどの間にマージされ、pyca/cryptographyでは他ライブラリとの差分テスト(differential testing)からAES-GCMのバグが見つかった。python.orgにはzizmorによるCIスキャンやSBOMの添付が入った。単発の指摘で終わらず、ファジングハーネスやCVE変種解析パイプラインといった「使い回せる仕組み」を残しているのが、この取り組みのもう一つの特徴だ。象徴的なのが、GPT-5.5-Cyberがサニタイザビルドやseedコーパスを含むファジング環境一式を1日未満で組んだという話で、Trail of Bitsは熟練者でも手作業なら2〜3週間かかると見積もっている。
同じ能力が、攻撃側にも開く
ただ、手放しで歓迎する話でもない。OpenAIがDaybreakで示したデモには、GPT-5.5-CyberがLinuxカーネルの3,000万行超を解析し、カーネルポインタの情報漏洩PoCを8個、ローカル権限昇格のエクスプロイトを24個「自動生成した」というものが含まれる。Codex SecurityはdnsmasqのCVE 4件を外部修正(2.92rel2)より前にパターンとして検出し、Chrome V8で5件、Safari WebKitで10件超の脆弱性も挙げたとされる。
防御に使えるものは、当然攻撃にも使える。24個のLPEエクスプロイトを書ける能力は、パッチを書く能力と地続きだ。だからこそ「人間のレビューを必ず通す」「メンテナと協調的に開示する」という運用の縛りが、技術そのものと同じくらい重要になる。Patch the Planetが指摘の生数ではなくマージ済みパッチ数を成果として強調しているのは、その自覚の表れだろう。
構図として見ると、これはOpenAIの Daybreak がAnthropicの Project Glasswing に対抗して進めているもので、フロンティアラボの競争軸が「賢いチャット」から「セキュリティ研究をどこまで自動化できるか」へ広がってきたことを示している。モデルの性能比較表に一喜一憂する局面は、そろそろ後景に退きつつある。実際に効くのは、AIの大量出力を信頼できる成果へ変換する運用の作り込みのほうだ。自分のリポジトリにAIセキュリティを入れる前に、まず脅威モデルとAGENTS.mdを書く。Patch the Planetから持ち帰る教訓は、案外そんな地味なところにある。