Security of LLM-generated Code: A Comparative Analysis
本論文は、7 つの主要な大規模言語モデルによって生成されたコードのセキュリティを実証的に評価し、それらすべてのモデルが脆弱性を含むコードを生成しており、その大部分が深刻度「クリティカル」または「高」であることを見出した。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたのソフトウェアのコード作成のために、7 人の異なる「超知的」見習いを雇ったと想像してください。これらの見習いは人工知能(AI)によって駆動され、驚くほど速く、親切であることで有名です。彼らは業界のトップツールであり、何百万人もの開発者によって使用されています。
カルトン大学の研究者たちは、これらの 7 人の見習いを厳格なテストにかけると決めました。彼らは宇宙船の建造や小説の執筆を依頼したわけではありません。代わりに、「ログインページを作成する」や「ユーザーが写真をアップロードできるようにする」といった、81 件の一般的なコーディングタスクの特定のセットを与えました。目的は、これらの AI 見習いが書いたコードが安全に使用できるものか、それとも隠れた罠に満ちているものかを明らかにすることでした。
彼らが発見したことを、簡潔にまとめると以下の通りです。
1. 「完璧な」見習いは存在しない
最も衝撃的な発見は何でしょうか?7 人の見習い全員がテストに合格しませんでした。 彼らがテストしたすべての AI ツール(OpenAI の GPT-4o、Google の Gemini、IBM の watsonx などの大手を含む)は、セキュリティ上の欠陥を持つコードを生成しました。
これは、7 人の有名な自動車メーカーから車を購入するのと同じです。少なくとも 1 台は完璧な安全評価を持つと期待するでしょう。しかし、研究者たちはすべての車にブレーキが壊れているか、ハンドルが緩んでいることを見つけました。実際、彼らが生成したコードの大部分は「重大(Critical)」または「高(High)」の深刻度を持つ欠陥を含んでいました。つまり、これらは単なる小さな傷ではなく、ハッカーが侵入できるような大きな穴なのです。
2. 指示の「罠」
研究者たちは、AI をミスに誘導するように設計された特別な指示(プロンプト)のセットを使用しました。例えば、ある AI に「ユーザーがファイルをアップロードできる関数を書いてください」と頼みました。
- AI のミス: 一部の AI は、写真ではなくウイルスをアップロードできてしまうコードを書きました。
- 驚き: AI がメインのタスクを正しく遂行したとしても、セキュリティルールを忘れることがよくありました。例えば、ある AI は完璧に機能するログインページを書きましたが、パスワードを平文で保存していました(これは、パソコンの付箋にパスワードを書き留めるようなものです)。
3. 「デバッグモード」の災難
最も一般的なミスの一つは、「デバッグモード」をオンにしたままにしておくことでした。
- 比喩: レストランのキッチンだと想像してください。「デバッグモード」とは、裏口を大きく開け、「秘密のレシピを見て、コンロを試してください」という看板を掲げているようなものです。これは料理人が学習している時には素晴らしいですが、一般に開放された本物のレストランにとっては最悪です。
- 現実: AI はこの「裏口」を開けたままにするコードを書き続けました。開発者がこのコードをチェックせずに使用した場合、システム全体がハッキングされる可能性があります。研究者たちは、一部の AI ツールが「本番環境ではこれをオフにしてください」という小さなコメントを追加していたと指摘しましたが、開発者が実際にその注記を読んで従うことに頼ることはできませんでした。
4. 「速いが危険」というパラドックス
この研究では、IBM の watsonx という特定のツールにおいて奇妙なパターンが発見されました。
- 比喩: 非常に短く単純な文章(短いコード)を書く見習いを想像してください。「短い文章はチェックしやすいから、きっと安全に違いない」と思うかもしれません。
- 現実: この見習いは、実際にはコード行あたりの危険なエラー率が最も高かったのです。コードが非常に短かったため、重要なセキュリティチェックを完全に省略していました。これは、急いでいるために地雷原をショートカットするドライバーのようなものです。
5. 「過信する」開発者
この論文は、危険な人間の要素を浮き彫りにしています。開発者は、仕事が速くなるためこれらの AI ツールを愛用しています。しかし、この研究は開発者が信頼しすぎていることを示唆しています。
- 比喩: 「自動運転」機能付きの車を購入し、車が決して衝突しないと仮定してハンドルで眠りにつくドライバーのようなものです。
- 現実: AI ツールは自信に満ちた声で話すのが上手いため、開発者はコードが安全だと仮定してしまいます。研究者たちは、これらのツールによって生成されたコードスニペットの73% 以上に、少なくとも 1 つのセキュリティ欠陥が含まれていたことを発見しました。開発者がこれをチェックせずに単にコピー&ペーストするだけで、実質的にトラブルを招いていることになります。
結論
この論文は、これらの AI ツールがコードを素早く書くことには優れているものの、現時点ではデフォルトで「安全な」コードを書くことにはひどく劣っていると結論付けています。
彼らは、誰よりも速く野菜を刻むことができるが、手を洗うのを忘れたり、食品が腐っていないか確認するのを忘れたりする、非常に才能があるが経験の浅いシェフのようです。研究者たちは、これらの AI ツールが速度よりも安全性を優先するように教えられるまで(あるいは開発者がすべての行を二重チェックすることを学ぶまで)、これらを使ってソフトウェアを作成することはリスクの高いギャンブルであると警告しています。
要点: AI をただ信頼しないでください。生成されたコードを新人従業員のドラフトのように扱ってください。公開される前に、シニアのセキュリティ専門家によるレビューが必要です。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。