← 最新の論文
🤖 machine learning

Detecting Contaminated Code-Generation Prompt Batches via Influence Functions

本論文は、影響関数を利用してモデルのパラメータへの異常な影響を測定することにより、定義済みの攻撃パターンに依存することなく、様々な脆弱性に対して高い検出精度を達成し、悪意のあるコード生成プロンプトのバッチを特定する、脅威モデルに依存しない検出手法であるCodeSIFTを紹介するものである。

原著者: Francesco Quinzan, Noor Munir, Yishun Lu, Stephen Roberts

公開日 2026-08-17
📖 1 分で読めます☕ さくっと読める

原著者: Francesco Quinzan, Noor Munir, Yishun Lu, Stephen Roberts

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

あなたは、非常に有能だが少しいたずら好きな副料理長を雇ったばかりのシェフだと想像してください。その副料理長は、レシピ(コード)を書くことができる人工知能(AI)です。普段は素晴らしい働きを見せますが、頼み方を間違えると、見た目は美味しそうでも、実は隠れた毒(圧力鍋の安全弁が外れていたり、ドアの鍵が開けっ放しだったりするようなもの)が含まれたレシピをこっそり混ぜ込んでくることがあります。問題は、AIが悪意を持ってやっている自覚がないことです。ただ、あなたの指示に従っているだけなのです。

長い間、セキュリティの専門家たちは、既知の毒のすべてを載せた巨大な「指名手配書」を用意することで、これらの悪いレシピを捕まえようとしてきました。もしレシピが既知の毒に似ていれば、フラグを立てるという方法です。しかし、もし悪党が、まだポスターに載っていない全く新しい毒を考案したらどうなるでしょうか?古い手法では、それを見逃してしまいます。オックスフォード大学の研究者たちが書いたこの論文は、まさにこの問題に取り組んでいます。彼らは、AIが書いたレシピそのものをチェックするのではなく、そのリクエストを聞いたときにAIの「脳」がどのように反応するかを観察するという、新しい方法を提案しています。彼らは「影響関数(influence functions)」と呼ばれる数学的ツールを使用しています。これは、特定の要求がAIの内部設定をどれほど揺さ動かすかを測定する、超高感度の地震計のようなものです。もしリクエストが通常のリクエストに比べて、巨大で奇妙な震動を引き起こすなら、それは罠である可能性が高いのです。

問題点:「悪いプロンプト」の罠

大規模言語モデル(LLM)は、私たちのためにコンピュータコードを書いてくれるツールの背後にある「脳」です。これらは、ログイン画面からデータベース接続まで、開発者が構築するあらゆるものを作るのに非常に役立ちます。しかし、一つ落とし穴があります。もしあなたが正しい(あるいは間違った)方法でAIに問いかけると、完璧に見えるものの、隠れたセキュリティホールを持つコードを生成させることができてしまいます。これらのホールは、ダムの目に見えない亀裂のようなものです。水(データ)は一見正常に見えますが、ある時突然決壊します。

これを防ぐ一般的な方法は、「静的解析器(static analyzers)」を使用することです。これは、セキュリティ用のスペルチェッカーのようなものです。これらはAIが書いたコードをスキャンし、「弱いパスワードを使用している」や「ドアの鍵をかけるのを忘れている」といった、既知のミスのリストを探します。しかし、このアプローチには大きな欠陥があります。それは、ミスがすでにリストに載っている場合にしか機能しないということです。もしハッカーが、これまでにカタログ化されていない新しい侵入方法を考案したり、AIを巧妙に騙して微細なミスを犯させたりした場合、スペルチェッカーは完全に見逃してしまいます。研究者たちは、既知の悪いもののリストに頼ることは、インフルエンザだけを探して新しいウイルスを防ごうとするようなものだと主張しています。

新しいアイデア:AIの「鼓動」に耳を傾ける

AIが生成するコードを見る代わりに、著者であるフランチェスコ・クインザンとそのチームは、AIが考えている間にその「脳内」で何が起きているかに注目することにしました。彼らは**影響関数(influence functions)**という概念を使用しています。

これを理解するために、AIが何百万もの正常で安全なコーディングタスクで訓練されていると想像してください。その脳は、よく調律されたピアノのようなものです。あなたが普通の音(安全なプロンプト)を奏でると、ピアノは馴染みのある予測可能な方法で振動します。しかし、もしあなたが、調律が完全に狂った音や、ピアノが訓練を受けていないことを要求する音(悪意のあるプロンプト)を奏でると、ピアノの弦は奇妙に振動します。「影響関数」とは、特定の音を奏でたときに、ピアノの内部の張力がどれだけ変化するかを正確に測定する方法なのです。

研究者たちは、この新しいツールをCodeSIFTと呼んでいます。その仕組みは以下の簡単なステップによるものです。

  1. ベースライン: まず、大量の正常で安全なコーディングリクエストをAIに投入します。それらのリクエストに応じて、AIの内部設定がどれくらい「揺れる」かを測定します。これにより、AIの「正常な鼓動」が作成されます。
  2. テスト: 次に、新しいリクエストのバッチをAIに投入します。それらの中には安全なものもあれば、AIを騙して悪いコードを書かせようとする「毒された」プロンプトも含まれています。
  3. 測定: 各リクエストに対して、CodeSIftはそのリクエストを受け入れるために、AIの内部設定がどれほどシフトする必要があるかを計算します。もしリクエストが奇妙であったり悪意があったりする場合、AIはその要求を満たすために、内部ロジックにおいて巨大で不自然な跳躍をしなければなりません。これにより、大きな「影響スコア」が生じます。
  4. 判定: 一連のリクエスト全体の平均的な「揺れ」が、通常の鼓動よりもはるかに大きい場合、CodeSIFTは警報を鳴らします。具体的なミスが何であるかは重要ではありません。単に、そのリクエストが異常な反応を引き起こしていることを検知するのです。

得られた結果

チームは、CodeSIFTを3つの異なるAIモデル(30億から70億パラメータの範囲)と、2種類のトリッキーなシナリオ(パスワードとログインセキュリティに関する「AuthSec」、およびクラウドサーバーとネットワークのトリックに関する「InfraCloud」)でテストしました。テストのために、400個の悪意のあるプロンプトと400個の安全なプロンプトを含む特別なデータセットを作成しました。

結果は非常に有望でした。悪いプロンプトが混ざったバッチを投入すると、CodeSIFTは、悪いプロンプトの数が増えるにつれて、それらを特定する精度が向上しました。

  • パスワードセキュリティのテストでは、バッチが高度に汚染されている状態でも、0.98(1.0が完璧)という驚異的な精度に達しました。
  • クラウドセキュリティのテストでは、少し難易度は上がりましたが、やはり最大で0.98に達しました。
  • 決定的なことに、誤報を出すことはほとんどありませんでした。安全なプロンプトのみを投入した場合、ほぼ毎回、それらを安全であると正しく識別し、「誤検知」の発生率を非常に低く抑えました。

対照的に、従来の「スペルチェッカー」の手法(BanditやSemgrepなど)は、一貫性に欠けていました。時として機能することもありましたが、多くの場合、悪いプロンプトを完全に見逃したり、さらに悪いことに、AIモデルが変わると安全なコードを危険であるとフラグ立てしたりしていました。研究者たちは、これらの古いツールは表面的なパターンに集中しすぎており、異なるAIモデル間での転用性が低い一方で、CodeSIFTの「AIの内部反応を聞く」という手法は、すべてのモデルにおいて有効であったことを見出しました。

なぜこれが重要なのか

この発見の最もエキサイティングな部分は、CodeSIFTが事前に攻撃の姿を知る必要がないということです。既知のウイルスのリストを必要としません。ただ、「正常」とはどのようなものかを知るだけでよいのです。これは、将来、私たちが質問に対するAIの反応を観察するだけで、新しい、これまで見たこともないような攻撃からAIコーディングアシスタントを守ることができる可能性を示唆しています。

著者たちは、このアプローチが非常に有望な方向性であると述べています。彼らは70億パラメータまでのモデルでテストを行いましたが、この数学的手法はさらに大規模なモデルでも機能すると考えています。ただし、現在は「バッチ(一括)」のリクエストに対するテストであり、100万個の安全なリクエストの真っ只中にある単一の悪いプロンプトを捉えるためのものではないことも注記しています。しかし、現時点でも、これはAIの鼓動に耳を傾け、危険なコードを一行も書かせる前にトラブルメーカーを捕まえるための、新しく賢明な方法を提供しています。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →