概要
- OpenAIの o3モデル を使い、Linuxカーネルの ゼロデイ脆弱性 を発見した事例の解説。
- ksmbd (SMB3プロトコルカーネルサーバ)の脆弱性調査の流れを紹介。
- o3による既知脆弱性(CVE-2025-37778)発見のベンチマーク結果を詳細に分析。
- o3が新たなゼロデイ(CVE-2025-37899)を自動的に指摘した過程を説明。
- LLMの現状と今後の脆弱性研究へのインパクトについて考察。
OpenAI o3モデルによるLinuxカーネル脆弱性発見事例
ksmbdと脆弱性調査の背景
- ksmbd はLinuxカーネル内で動作する SMB3プロトコルサーバ。
- SMB3はネットワーク越しにファイル共有を実現するプロトコル。
- 調査目的は、 LLM関連ツール開発 からの一時的な休息を兼ねた脆弱性監査。
- o3リリース後、既知バグを使い o3の能力ベンチマーク を実施。
CVE-2025-37778(Kerberos認証脆弱性)の概要
- Kerberos認証処理中 の“session setup”リクエスト処理における use-after-free 脆弱性。
- sess->stateが SMB2_SESSION_VALID の場合、 sess->user が解放される。
- ksmbd_krb5_authenticateによる再初期化が行われない場合、解放済みポインタ利用が発生。
- 発見・再現には 3.3k LoC 程度のコード理解が必要。
- a. sess->state == SMB2_SESSION_VALID を成立させる条件の特定
- b. sess->userが再初期化されないパスの特定と誘導
- c. 解放後にsess->userへアクセスする箇所の特定
LLM評価環境とプロンプト設計
- LLMには “session setup”コマンドハンドラ と、その呼び出し関数群(深さ3まで)を入力。
- パケット受信からハンドラ実行、接続終了まで の一連のコードを含める。
- システムプロンプトでは「use-after-free脆弱性の検出」「ksmbdの概要・脅威モデル」を明示。
- 誤検知抑制 を強く指示する設計。
o3による検出結果と他モデル比較
- 100回実行 でo3は8回脆弱性を検出(8%)、66回は未検出、28回は誤検知。
- True Positive:False Positive比 は1:4.5(最大5誤検知で1本物発見)。
- Claude Sonnet 3.7は3回、Claude Sonnet 3.5は0回と比較し、 o3は2〜3倍高精度。
- o3の出力は 簡潔かつバグレポート風、Sonnetは思考過程型。
o3によるゼロデイ(CVE-2025-37899)発見
- “session setup”以外も含む smb2pdu.c全体(約9k LoC) を対象にo3へ入力。
- 入力トークン増加で検出精度は低下(1/100回)するが、 新規脆弱性を自動指摘。
- 新規脆弱性は“session logoff”ハンドラでの sess->user解放 に関するuse-after-free。
- 複数スレッド が同時に同じセッションを扱う場合、解放済みポインタ参照が発生。
- o3は 同期処理の欠如 と 競合条件 を正確に推論し、脆弱性を報告。
LLMの脆弱性研究へのインパクトと今後
- o3のコード理解・推論能力 は大幅に進化。
- 10k LoC未満の問題なら o3が解決や支援できる可能性 が現実的。
- LLMは専門家を 置き換えるものではなく、効率化・高度化を支援 する存在。
- 脆弱性研究者やエクスプロイト開発者は LLM活用による生産性向上 に注目すべき段階。
- 今後も LLMの進化と脆弱性検出自動化 の動向に継続的な注視が必要。