← 最新の論文
💻 computer science

Open-Source Intelligence for Code Provenance and the Security Patterns that Separate Human and Large-Language-Model Implementations of Common Programming Tasks

本論文は、コードスニペットの出自を人間によるものか大規模言語モデルによるものかを高い精度で判別できること、そして複数のプログラミング言語にわたる一貫したセキュリティパターンの相違を明らかにし、モデル主導の脆弱性修復における特定の失敗モードを浮き彫りにすることを実証する、完全に再現可能でオープンソースのパイプラインを提示するものである。

原著者: Mohammadreza Rashidi

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

原著者: Mohammadreza Rashidi

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

あなたは、あるミステリーを解こうとしている探偵だと想像してください。「このコードを書いたのは誰か?」。Stack Overflowのようなフォーラムをスクロールしている人間の開発者なのか、それとも数秒で回答を生成している大規模言語モデル(LLM)なのか?そしてより重要なのは、**「そのコードは安全か?」**ということです。

この論文は、研究者が「コードの動物園」を設置した、大規模なオープンソースの調査報告書のようなものです。彼らは9つの異なるAIモデルと実在の人間の開発者に、パスワードのロックからセキュアなログイン設定に至るまで、31種類のトリッキーなセキュリティ・パズルを解かせました。そして、コードのDNAから、その「種」を判別できるかどうかを分析しました。

以下に、探偵の仕事の傍らで提供された、調査結果をまとめます。

正体の入れ替わり:AIと人間を見分けられるか?

発見事項: はい、可能です。
研究者たちは、コードの安全性そのものではなく、コードの「形状」に着目する分類器(スマートな仕分けマシン)を構築しました。これは、絵画の主題ではなく、筆致を見ることで、その絵が人間の芸術家によって描かれたのか、それともロボットによって描かれたのかを判断しようとする試みに似ています。

  • スコア: 「人間 vs AI」の推測において、このマシンは**93%の的中率を記録し、ランダムな推測のベースラインである78%**を上回りました。
  • 「指紋」: セキュリティ上の秘密が正体を明かしたのではなく、スタイルが正体を明かしました。
    • AIのコードは、準備万端すぎるシェフのようです。非常に巨大で(平均1,801文字、対して人間は552文字)、エプロンをしっかりと着込み(多くのエラーハンドリングやインポートが含まれ)、完全で実行可能な食事を提供しようとします。
    • 人間のコードは、手軽な軽食のようです。短く、密度が高く、多くの場合、キッチンがすでに整っていることを前提としています。それは完全なプログラムではなく、「スニペット(断片)」なのです。
  • ひねり: AIが「AIであること」を見抜くのは簡単ですが、「どの特定のAIが」書いたのかを特定するのは非常に困難です。研究者が9つのモデルのうちどれが特定のコードを書いたのかを当てようとしたとき、精度はわずか**48%でした(ベースラインの17%**と比較して)。これは、人の声を聞いて誰であるかは分かっても、目が見えない状態で9人の友人のうち誰が話しているのかを正確に特定するのは難しいゲームのようなものです。また、この「声」は言語によって変化します。Pythonコードで訓練された分類器は、JavaScriptを見ると混乱してしまいます。

セキュリティの決闘:どちらがより安全か?

発見事項: AIは概して安全ですが、奇妙な盲点を持っています。
研究者は、コードが優れたセキュリティ習慣(強力なパスワードハッシュ化など)を使用しているか、あるいは悪い習慣(弱いパスワードの使用など)を使用しているかを測定しました。

  • スコア: AIモデルはセキュリティ・スケールで0.40を記録した一方、Stack Overflowからの人間の回答はわずか0.12でした。
  • なぜAIが勝つのか: AIは「新しい」ルールブックを読んでいるようです。AIは、現代的で強力なパスワードハッシュ化を使用し、セキュリティ・トークンのためのアルゴリズムを固定(ピン留め)する方法を知っています。人間の回答の多くは、かつては一般的でしたが現在は危険とされる古い手法を使用しており、これらは長年高い評価を得てきたものもあります。
  • AIの致命的な欠陥: AIは「親切」かつ「完全」であろうとしすぎるあまり、自ら罠にはまってしまうことがあります。完全なプログラムを書くよう求められると、AIはしばしば「秘密の鍵」の部分に偽のプレースホルダー(例:client_secret = "your-secret-key")を書き込みます。もし開発者がこのプレースホルダーを変更せずにそのままコピーしてしまうと、アプリは無防備になります。短いスニペットを書く人間は、秘密の鍵を空白のままにすることが多く、読者に安全に記入させるよう強制します。
    • 結論: 人間は古い習慣のせいで失敗し、AIは完全であろうとしすぎるせいで失敗します。

「修正」テスト:AIは穴を塞げるか?

研究者は、「ここには壊れた、不安全なコードがあります。これを修正してください」というゲームも行いました。

  • スコア: AIは**77%**の確率でコードを修正できました。
  • 罠: **16%**のケースにおいて、AIは「部分的な修正」を行いました。つまり、悪い部分(例:弱いパスワードハッシュ)は取り除いたものの、良い部分(例:強力なもの)を追加することを忘れてしまったのです。これは、整備士が車の錆びたブレーキを取り外したが、新しいブレーキを取り付けるのを忘れたようなものです。錆がなくなったので車は「直った」ように見えますが、依然として危険な状態です。

まとめ

この研究は、プロベナンス(由来)(コードがどこから来たのかを知ること)が、可能であり、かつ有用であることを証明しています。

  • もし、長く、構造化されており、エラーハンドリングが充実したコードを見かけたら、それはおそらくAIです。ハードコードされた秘密情報(変更されていないプレースホルダー)がないかチェックしてください。
  • もし、短く、密度が高く、古いライブラリを使用しているコードを見かけたら、それはおそらく人間です。古いセキュリティ習慣(弱いパスワードや開いたままのドアなど)がないかチェックしてください。

研究者たちは単に推測したのではなく、公開データのみを使用して完全に再現可能なパイプラインを構築しました。彼らは結果をシミュレーションしたのではなく、528個の実際のコードサンプルに基づいて測定しました。彼らはAIが「完璧に安全である」と主張しているわけではありません(実際はそうではありません)。彼らは、AIと人間が異なる場所で失敗することを示したのです。どのソースを見ているのかを知ることは、どの安全網を確認すべきかを教えてくれます。

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

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

Digest を試す →