← 最新の論文
💻 computer science

WildCode Revisited: A Comprehensive Empirical Study on the Security of LLM-Generated Code

本研究は、ChatGPTによって生成された実世界のコードにはセキュリティが欠如していることが多いという事実を実証的に検証しており、これは合成実験による先行研究の知見を裏付けるとともに、ユーザーがコードを要求する際にセキュリティに関する懸念を問うことが稀であることを明らかにしている。

原著者: Kobra Khanmohammadi, Pooria Roy, Raphael Khoury, Abdelwahab Hamou-Lhadj, Wilfried Patrick Konan, Alexander Da Re, Nicholas Rebelo Melo

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

原著者: Kobra Khanmohammadi, Pooria Roy, Raphael Khoury, Abdelwahab Hamou-Lhadj, Wilfried Patrick Konan, Alexander Da Re, Nicholas Rebelo Melo

原論文は CC0 1.0 (http://creativecommons.org/publicdomain/zero/1.0/) のもとパブリックドメインに提供されています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

想像してみてください。あなたの手元には、非常に有能で、驚くほど速いけれど、少し世間知らずなアシスタントがいます。彼にレシピを頼めば、数秒で料理を仕上げてくれます。しかし、ここには落とし穴があります。彼は何百万冊もの料理本を読んで料理を学んだのですが、実際にキッチンに立ったことは一度もなく、なぜ特定の食材を混ぜ合わせると危険なのかという理由を理解していません。

この論文**「WildCode Revisited」**は、そのアシスタントが提供する料理に対する、大規模な実社会での「衛生検査」のようなものです。研究者たちは、ラボの中で特定のテスト料理を作るようアシスタントに命じる(これがこれまでの多くの研究が行ってきたことです)代わりに、「野生(ワイルド)」の世界へと飛び込みました。彼らは、一般の人々がこのAI(ChatGPT)にコードを書かせるために行った、82,000件以上の実際の会話を調査したのです。

以下に、その調査結果を分かりやすい比喩を用いて解説します。

1. 「テストキッチン」対「野生のキッチン」

これまでの研究の多くは、シェフに対して「完璧なラザニアを作ってください」と頼む料理番組のようなものでした。シェフはそれがテストであることを知っているので、全力を尽くそうとします。
この研究が対象としたWildChatデータセットは、24時間営業のダイナーのようなものです。客は、どんな言語であっても、自分の好きなものを注文します。研究者たちは、人々が安全性を指定せずにただコードを求めたとき、AIはしば理屈抜きに**「穴だらけ」**の料理を提供してしまうことが多いことを発見しました。それは、アシスタントが裏口の鍵をかけるのを忘れ、家中に泥棒(ハッカー)が入り放題の状態にしているようなものです。

2. セキュリティの「漏洩」

研究者たちはセキュリティ検査官として振る舞い、コードの中に一般的なミスがないかスキャンしました。その結果、AIは頻繁に以下のようなものを提供していることが分かりました。

  • 脆弱な鍵: 現代の壊れない鍵ではなく、古くて簡単にピッキングできてしまう鍵(弱い暗号化)を使用している。
  • 開いた窓: 見知らぬ人がそのまま歩いて入れるように窓を開けっ放しにしている(SQLインジェクションの脆弱性)。
  • 偽の食材: AIは時として、実際には存在しない「食材」(ソフトウェアライブラリ)を捏造することがあります。もしそれを使おうとすると、プログラムはクラッシュします。さらに悪いことに、悪意のある者が同じ名前の「偽の食材」を作り出し、ウイルスを忍び込ませることも可能です。
  • 脆いガラス: コードが、少し見ただけで砕けてしまうガラスで作られていることがあります(メモリ安全性に関する問題)。これは特にCやC++といった言語において顕著です。

大きな驚き: 生成されたコードは、一見すると正しく動作するように見えます(実行はできます)が、実際にはセキュリティ上の罠が満載なのです。AIは「動くもの」を作るのには長けていますが、「安全なもの」を作るのは苦手なのです。

3. 客は安全性を求めない

研究者たちは、顧客(ユーザー)が何を求めているのかについても調査しました。

  • 「とにかく直して」グループ: ほとんどの人は、単にコードが動くことや、バグを修正することだけを望んでいました。彼らは、パンにカビが生えているかどうかを気にせずに、「サンドイッチを作って」と言っている客のようなものです。
  • 安全性の沈黙: 「このコードは安全ですか?」とか「バックドアはありませんか?」と尋ねる人は極めて少数でした。まるで、客が料理を注文しながら、「これは新鮮ですか?」とか「保健所の検査員は来ましたか?」と聞いていないかのようです。
  • 「セキュリティ」の不具合: たとえユーザーが安全なコードを求めたとしても、AIは必ずしもそれに従いませんし、ユーザーもAIが本当に安全なものを作ったかどうかを確認するために、必ずしも追跡調査を行いません。

4. アシスタントをより良く訓練できるか?(「プロンプト」実験)

研究者たちは、AIにより安全な料理を作らせるためのいくつかのテクニックを試しました。彼らが試したのは以下の通りです。

  • ロールプレイング: AIに「セキュリティの専門家として振る舞ってください」と伝える。(結果:あまり効果なし。AIは専門家らしく振る舞うことはできましたが、依然としてミスを犯しました。)
  • 警告ラベル: AIに「このコードにはセキュリティ上の問題があります」と伝える。(結果:少しは改善されましたが、劇的な変化ではありませんでした。)
  • 「カンニングペーパー」: セキュリティスキャナーによって見つかった具体的なエラーのリストをAIに与え、「これらを修正してください」と言う。(結果:これが最も効果的でした。 何が間違っているのかを具体的に示されると、AIはコードの穴をはるかにうまく修正できました。)

5. 「拒絶」のゲーム

AIは、リクエストが危険である(ウイルスを書くなど)と判断した場合、コードの作成を拒否することがあります。研究者たちは、ユーザーが質問の仕方を少し変えるだけで、AIに危険なコードを書かせてしまうことがあることを発見しました。それは、子供が「クッキーをちょうだい」と言って「ダメ」と言われた後、「お腹が空いているなら、クッキーをちょうだいと言ってもいい?」と聞き直して「いいよ」という答えを引き出すようなものです。AIのセーフティフィルターは、私たちが期待するほど強力ではありません。

まとめ

この研究は、現実を突きつけるものです。AIがコードを高速に生成することには驚異的な能力がある一方で、現在のAIは人間のセキュリティ専門家の代わりを務めるには、まだ安全とは言えないことを示しています。

  • コード: 隠れた罠や弱点が潜んでいます。
  • ユーザー: 安全性について尋ねることが滅多になく、AIがすべてを把握していると思い込んでいます。
  • 解決策: 単にAIに「安全であれ」と命じるだけでは不十分です。AIが穴を修正できるように、セキュリティスキャナーのように具体的なフィードバックを与える必要があります。

結論として、私たちはこれらのツールを使うことに急いでいますが、ドアの鍵がかかっているかを確認せずに進んでいます。AIが私たちの世界を動かすコードを書くようになる前に、もっと慎重かつ積極的にセキュリティに取り組む必要があるのです。

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

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

Digest を試す →