夢晨(モンチェン) 凹非寺(アオフェイシー)発 量子位(QbitAI)公式アカウント
AIがLinuxのセキュリティ脆弱性、それもカーネルレベルのゼロデイ脆弱性を見つけ出すことに成功しました。
OpenAIの社長が先日、独立研究者Seen Heelan氏の実験結果を転載しました。o3モデルを使って、LinuxカーネルのSMB実装におけるリモートゼロデイ脆弱性を発見したとのことです。
さらに驚くべきは、その全過程で複雑なツールは一切使われなかったことです。フレームワークも、エージェントフレームワークも、ツール呼び出しもなしに、純粋にo3 APIのみが用いられました。
この脆弱性はCVE-2025-37899として識別され、SMBの「ログオフ」コマンドハンドラにおけるUse-After-Free(解放後使用)の脆弱性です。
著者によると、大規模言語モデルによって発見されたこのような脆弱性としては、これが初の公表例だそうです。
発見プロセスを見た一部のネットユーザーは、「非常に手の込んだ実験設定かと思ったが、実際は大量のコードを結合してo3に100回チェックさせただけだった」と感嘆しました。
他のホワイトハットハッカーも、このような方法で他の重要なオペレーティングシステムをチェックし始めていることを願います。
OpenAIのチーフリサーチオフィサーであるマーク・チェン氏は次のように述べています。「o3のような推論モデルは、高度な技術作業や有意義な科学的発見を支援し始めています。今後1年間で、このような成果はさらに普及するでしょう。」
AIは脆弱性を見つけるだけでなく、修正も支援する
Sean Heelan氏は独立研究者で、大規模モデルに基づいた脆弱性研究とエクスプロイト自動生成に焦点を当てています。
彼は元々、LinuxカーネルのKSMBD(カーネルモードSMB3プロトコル実装)の脆弱性を手動でチェックしており、大規模モデル関連のツール開発から一時的に離れたいと考えていました。
しかし、o3がリリースされた後、彼は試さずにはいられませんでした。「すでにこれらの脆弱性を持っているので、o3がそれらを見つけられるか試してみよう」と。
彼はまず、自身で手動で発見した脆弱性CVE-2025-37778をテストとして使用しました。これはKerberos認証パスのUse-After-Free脆弱性で、大規模モデルの能力をテストするのに非常に良い基準です。なぜなら、
それはLinuxカーネルのリモート攻撃対象の一部であるため
それは単純ではなく、それを発見するには、特定のセッション状態のトリガー方法、認証関数の複数の実行パス、関数間のオブジェクトのライフサイクル管理を理解する必要があるため
しかし、それは極端に複雑でもなく、著者自身は関係する約3300行のコードを10分で理解できたため
次に実験を開始する前に、大規模モデルにどのコードを見せるべきかという問題を明確にする必要がありました。
理想的な状況では、大規模モデルがコードベース全体を読み込んで結果を出力しますが、実際にはコンテキストウィンドウの制限により、それは事前にできませんでした。
最終的にHeelan氏はLLMに「セッション設定」コマンドハンドラのコード、それによって呼び出されるすべての関数のコードなどを提供しました。呼び出しの深さは3に達するまで(これは脆弱性を推論するために必要なコードを含む深さです)、またコマンドハンドラ、接続確立/切断、リクエストディスパッチなどの完全なコンテキストも含まれていました。
プロンプトでは、o3にUse-After-Free脆弱性の検索を専門に指示し、KSMBDアーキテクチャの説明を提供し、誤報を避けることを強調し、各実験を100回実行して成功率を統計しました。
関連するコードとプロンプトはGitHubでオープンソース化されています。
Heelan氏は同様の手順でClaude 3.7とClaude 3.5も比較テストしましたが、o3のパフォーマンスは目を見張るものがありました。
OpenAI o3: 100回の実行中8回脆弱性を発見
Claude 3.7: 100回中3回発見
Claude 3.5: 100回中一度も発見せず
さらに興味深いのは、o3とClaudeの出力スタイルが全く異なっていたことです。
o3が生成した脆弱性レポートは、人間が書いたかのように構造が明確で、重点が強調されていました。
Claudeは思考の流れや作業ログのようで、詳細は豊富ですがやや冗長でした。
次に起こったことはさらに素晴らしいものでした。
Heelan氏はo3がより大量のコードでどれだけ機能するかをテストしたいと考え、すべてのSMBコマンドハンドラのコード、約12,000行のコードを提供しました。
元の脆弱性を見つける成功率は1%に低下し、パフォーマンスは著しく低下しましたが、実行結果の中でo3は全く新しい脆弱性を報告しました。
Heelan氏自身もこの脆弱性を以前は知りませんでした。これもsess->userの解放が原因でしたが、今回はセッションログオフハンドラで発生しました。
この脆弱性に関するo3自身の説明は以下の通りです。
ksmbdワーカーがsess->userを使用するリクエストを実行している間に、同じセッションのSMB2 LOGOFFを処理する別のスレッドがその構造を解放する。このポインタを保護する同期メカニズムがないため、最初のスレッドが解放されたメモリを逆参照してしまう。これは古典的なUse-After-Free脆弱性であり、カーネルメモリの破損や任意のコード実行につながる可能性がある。
さらに興味深いことに、研究者はo3が脆弱性を発見するだけでなく、場合によっては人間よりも完璧な修正案を提供することを発見しました。
以前のKerberos認証脆弱性について、Heelan氏が最初に提案した修正は、単純にポインタをNULLにすることでした。
if (sess->state == SMB2_SESSION_VALID) { ksmbd_free_user(sess->user); sess->user = NULL; // この行を追加 }
しかし、o3のレポートではこの修正が不十分であると指摘されました。SMBプロトコルは2つの異なる接続が同じセッションに「バインド」することを許可しており、解放とNULL化の間の短い期間に、別のスレッドがこのポインタにアクセスする可能性があるためです。
最終的にHeelan氏は、o3を使用して元の脆弱性を見つけて修正していれば、「理論的には」自分が行うよりも良い結果になっただろうと認めました。
「理論的には」という限定が加えられたのは、現在のAIの誤報率が少し高いため、人間がo3のすべてのレポートを注意深く確認するのは難しいからです。
しかし、彼は技術の発展とともにこの割合が低下するだけだと考えています。
Heelan氏はレポートの最後に次のように述べています。
大規模モデルは、プログラム分析技術の能力領域において、私たちがこれまで見てきたものよりも人間に近い位置にあります。創造性、柔軟性、汎用性を考慮すると、LLMは記号実行、抽象解釈、ファジングよりも人間のコード監査員に近いと言えます。
彼は特に、セキュリティ研究に従事しているなら、今すぐ密接に注目すべきだと強調しました。
専門家レベルの研究者は置き換えられず、むしろ効率が向上する
10,000行以内のコードの問題に対して、o3はかなりの確率で解決または解決を支援できる
まだ約1:50のS/N比の問題があるものの、これは時間と労力を費やす価値がある
しかし、その中のリスクも指摘する人もいます。
もし悪人がAIの能力を利用して同様の脆弱性を見つけ、システムを攻撃したらどうなるでしょうか?
— 完 —
量子位AIテーマ企画、現在募集しております!「AI導入事例365選」「AI活用事例1001選」へのご参加、または「お探しのAI製品」「発見したAIの新しい動き」についてぜひお聞かせください。
💬 量子位AI交流グループにもぜひご参加ください。AIについて語り合いましょう〜
ワンクリックでフォロー 👇 スターを点灯
最先端のテクノロジーの進歩を毎日お届け
ワンクリックで「いいね」「シェア」「ハート」の三連発
コメント欄にあなたの意見を残してください!