← 最新の論文
💻 computer science

Vulnerable Code Search: Transferable Attack for Code Language Models

本論文は、コードの識別子を摂動させることで、無関係なスニペットをターゲットとなるクエリに人工的に適合させ、オープンソースおよびクローズドソースの両方のコード言語モデルの検索性能を著しく低下させる、転移可能でプログラミング言語に依存しない敵対的攻撃を導入するものである。

原著者: Kaicheng Wang, Liyan Huang, Jesse Thomason, Weihang Wang

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

原著者: Kaicheng Wang, Liyan Huang, Jesse Thomason, Weihang Wang

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

現代のソフトウェアという広大で広がりを持つエコシステムにおいて、開発者は必要な構成要素を見つけるためにデジタルライブラリに頼っています。データを素早くロードするための特定の関数を探しているプログラマーを想像してみてください。彼らが検索バーに質問を入力すると、システムは完璧な一致を見つけるために、数百万行のコードを瞬時に精査しなければなりません。コード検索として知られるこのプロセスは、エンジニアが車輪の再発明をするのではなく、既存のソリューションを再利用することを可能にする、生産性のバックボーンです。これを大規模に機能させるために、コンピュータは人間の質問とコンピュータコードの両方を共通の数学的空間へと翻訳する特化型のモデルを使用します。この空間において、2つのアイテムが互いに近いほど、それらはより類似しているとみなされます。そしてシステムは結果をランク付けし、最も関連性の高いコードを最上位に配置します。長年、業界はこれらのシステムが堅牢であることを信頼してきました。コードが正しく動作している以上、コンピュータはその目的を理解できるはずだと想定してきたのです。

しかし、新たな研究が、これらのシステムにおける驚くべき脆弱性を明らかにしました。南カリフォルニア大学の研究者たちは、これらの強力な検索ツールが、コードが実際に行っている内容を変えるのではなく、その中の変数名や関数名を変更することによって、簡単に欺かれ得ると発見しました。研究チームは、これらの名前を慎重に入れ替えることで、全く無関係なコードを、特定の質問に対する完璧な回答であるかのように見せかけることができることを実証しました。それはまるで、利用者の要望に合うように章のタイトルを書き換えただけで、中身が料理に関するものであるにもかかわらず、司書がそのタイトルに釣られて、料理本を棚から取り出してしまうようなものです。

研究者たちは、この弱点を突く手法を開発しました。彼らは、特定の検索クエリとは無関係なコード(例えば、ユーザーがデータのロード方法を求めているときに、数値のリストをソートするためのスニペットなど)を取り上げ、内部のシンボルを体系的にリネームしました。彼らはコードのロジックを一行も変えずにこれを行いました。これにより、プログラムは以前と全く同じように動作することを保証しました。より小規模でアクセスしやすいコンピュータモデルを使用してこれらの変更を誘導することで、彼らは、無関係なコードをコンピュータの目から見てターゲットとなる質問と数学的に同一に見せるための、特定の名前を見つけ出しました。その結果、機能としては完璧ですが、ユーザーの意図からは意味的に切り離されたコードが生成されました。しかし、検索エンジンはそれをトップの結果としてランク付けしたのです。

この発見の最も恐ろしい側面は、このトリックがいかに簡単に異なるシステム間でも転用できるかという点です。研究者たちは、より小規模なオープンソースモデルを使用してこれらの欺瞞的なコードスニペットを生成しましたが、そのトリックは主要なテクノロジー企業が使用するはるかに大規模なクローズドソースのシステムに対しても、同様に効果的に機能しました。彼らがこれらの最先端モデルに対してテストを行った際、検索エンジンの性能は崩壊しました。ある実験では、正しい答えを見つけるシステムの能力が最大75パーセントも低下しました。これまで標準的なテストで高いスコアを記録していた検索エンジンは、真の解決策と、操作された偽物とを区別することに失敗したのです。このことは、これらのモデルがコードの真の意味を本当に理解しているのではなく、代わりに、プログラムの深いロジックよりも、変数名に使用されている特定の単語といった表面的なパターンに過度に依存していることを示唆しています。

この研究はまた、これらのシステムをこのような攻撃に対して強化できるかどうかについても調査しました。研究者たちは、これらの欺瞞的なパターンを無視するようにモデルを訓練しようと試みましたが、その解決策には重い代償が伴いました。モデルをこのトリックに対してより耐性のあるものにすると、通常の検索を行う能力が大幅に低下し、精度が半分に落ち込みました。逆に、安全性とパフォーマンスのバランスを取ろうとすると、モデルはより巧妙なバージョンの攻撃に対して依然として脆弱なままでした。これらの知見は、現在の世代のコード検索ツールが、その印象的なベンチマークにもかかわらず、これまで考えられていたよりもはるかに脆い基盤の上に構築されていることを示しています。それらは、ソフトウェアの実際の機能を把握することよりも、テキストの表面的な一致を優先しており、開発ワークフローを混乱させたり、最悪の場合、正当に見える悪意のあるコードを開発者に使用させたりする操作に対して無防備な状態にあります。

この脆弱性は、単純な検索エンジンにとどまりません。研究者たちは、同じトリックがリポジトリからコードを生成するために使用される大規模言語モデルをも欺くことができることを示しました。これらの高度なシステムに操作されたコードを提示すると、Python、C++、Javaを含む複数のプログラミング言語において、正しい関数を選択する精度が激減しました。この攻撃が機能したのは、モデルがクエリに一致するリネームされた識別子に引き寄せられ、コードの挙動が的外れであるという事実を無視したためです。研究は、業界が、単なるテキストの外観ではなく、コードの構造とロジックを理解する、より堅牢な手法へと移行する必要があると結論付けています。それまでの間、重要なソフトウェアの決定を導くためにこれらの自動化ツールに置かれている信頼は、極めて不安定であり、わずか数語の変化に対して脆弱なままなのです。

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

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

Digest を試す →