開発者は日々の業務のますます多くの部分をAIコーディングアシスタントに頼るようになっており、これらのツールが次の数行を予測すると、ちらっと見ただけで多くの提案を受け入れてしまいます。こうしたツールは大量のコード集積から学習しますが、そのコードの一部は学習が始まる前に改ざんされている可能性があります。汚染されたサンプルは、あるきっかけを見た際に安全でないコードを書くようモデルに教え込み、正しいプロンプトが引き金を引くまで、その欠陥は静かに潜んでいます。

こうした汚染を早期に見つけようとする防御策の多くは、学習データを審査したり、既知の問題がないか出力をスキャンしたりするものです。ルイビル大学とノーステキサス大学のチームは、こうした防御をすり抜けてしまった後の段階に対応するシステム「CodeTracer」を構築しました。この研究は、すでに有害な補完を生成してしまったモデルを出発点としています。目標は、その補完を、そうした挙動を教え込んだ学習サンプルにまでさかのぼって追跡することです。
汚染されたモデルに投げかけるフォレンジックの問い
研究者たちは、大規模なファインチューニングのパイプラインが実際にどう運用されているかに即した設定で、この手法を構築しました。誰かが調査を始める頃には、学習時の勾配情報はすでに失われています。チェックを行う担当者が知っているのは、ファインチューニングに使ったコーパスと、不正な補完に関する報告(プロンプトとモデルが生成したコードを含む)だけです。この研究は「誰がバグを仕込んだのか」という問いに導かれて進められます。
この作業の順序は、実際のセキュリティインシデント対応の進め方とも合致します。原因究明、追跡、そして後片付けは、いずれも事案発生後に行われるものです。CodeTracerは、この同じ流れを機械学習のサプライチェーンに適用します。汚染されたデータは公開リポジトリを経由して入り込み、ファインチューニングの過程で企業自身のモデルに紛れ込む可能性があるためです。
3つの段階の中身
CodeTracerは3つの段階で動作します。第一段階では、有害な補完を読み取り、変数名などの表面的な詳細を取り除いた上で、安全でない挙動を構造化した要約を作成します。第二段階では、学習データの中から同じ根本的なロジックを持つコードを検索し、膨大なファイル群を小規模な候補集合まで絞り込みます。第三段階では、言語モデルに各候補を要約と照合させ、同じ安全でないパターンを持っているかどうかを判定させます。
デフォルトの構成では、読み取りと判定の段階にGPT-4.1を、検索段階には「UniXcoder」と呼ばれるコードエンコーダーを使用しています。絞り込み段階では上位500件の候補を残しており、これは一件ずつ確認するのに十分小さい規模です。
検証の対象範囲
評価には、それぞれ100以上のスターを獲得しているGitHubリポジトリから収集した、100万件を超えるPythonのソースファイルを用いました。このテストのために、そのプール内に少数の汚染されたサンプルを混入させています。
この研究の中心には、3種類の安全でないパターンが据えられました。信頼できない入力を使ったテンプレートのレンダリング、Webリクエストでの証明書チェックの無効化、そしてマシン上のすべてのインターフェースへのネットワークサービスのバインドです。それぞれが、実運用ソフトウェアで実際に見られるミスを反映しています。
さまざまなバックドア攻撃、そして競合する各種手法との比較を通じて、CodeTracerは偽陰性率を0.03未満に保ち、仕込まれたサンプルの見逃しはごくわずかでした。CodeTracerが追跡したファイルを取り除くと、攻撃成功率はほぼゼロまで下がりました。
処理時間は1件あたり約47秒で、比較対象となった他の複数のツールより速く、コストも1件の補完あたりおよそ0.33ドルで済みました。良性ファイルが800万件という、はるかに大規模なプールでも精度を維持しており、そこではわずかな汚染サンプルを見つけ出すことがより難しくなります。
CodeTracer自体を狙った攻撃も2種類ありました。一つは、検索から隠すために悪意あるコードにダミーコードを詰め込むものです。もう一つは、言語モデルの判定を誘導するためにコードにコメントを紛れ込ませるものでした。どちらの場合も、見逃し率は数パーセント程度にとどまりました。
数字を読み解く上での注意点
この結果は、テストしたあらゆる攻撃、あらゆる安全でないパターン、そしてあらゆるモデルにわたって一貫しています。この一貫性は、もう一段掘り下げて見る価値があります。
この研究の中心に据えられた3種類の安全でないパターンは、通常の良性コードの中にも頻繁に現れます。偽陽性率の低さが意味を持つのは、良性のテストセットに、汚染されたコードに似たコードが含まれている場合に限られます。
このパイプラインは、3段階のうち2段階を一つのモデルファミリーに頼っており、GPT-4.1が挙動の要約作成と候補の採点の両方を担っています。比較対象となった手法の一部は、他のAIシステムにおける汚染データの追跡に関する、同じ研究グループによる過去の研究に由来するものです。とはいえ、この手法自体は独自に成立しています。汚染されたコードモデルに対する事後の帰属特定については、これまで本格的な取り組みがほとんどなく、CodeTracerは低コストで動作し、今回のテストでは直接的な攻撃にも耐えた、実用的な選択肢を提供しています。
AIを介して書かれるコードは年々増えており、その多くは軽い確認だけでリリースされています。不正な提案の背後にある学習データを指し示せるツールがあれば、チームは自分たちのモデルが何をどこから学んだのかについて、より踏み込んだ問いを投げかけられるようになります。研究者たちは次に、この考え方をAIエージェントにも広げたいとしています。そこでは追跡すべき痕跡がより長く、より冷え切ったものになります。
翻訳元: https://www.helpnetsecurity.com/2026/07/20/tracing-backdoored-code-completions/