Home

生成AIは安全なコードを書けるのか?プロンプト一つで脆弱性が10分の1に減少した研究結果

公開日

img of 生成AIは安全なコードを書けるのか?プロンプト一つで脆弱性が10分の1に減少した研究結果
•••

生成AIは安全なコードを書けるのか?プロンプト一つで脆弱性が10分の1に減少した研究結果

ChatGPTやGitHub Copilotといった生成AIを、日々のコーディングに活用する開発者は急速に増えています。しかし、その便利さの一方で、「AIが生成したコードは本当に安全なのだろうか?」という懸念も高まっています。不適切なコードは、深刻なセキュリティ脆弱性の原因となりかねません。

本記事では、KTH王立工科大学の研究者、Elvis Tran氏とErik Diep氏による論文「Security Flaws In Generative AI Code」に基づき、生成AIに安全なコードを書かせるための具体的な方法と、その驚くべき効果について解説します。

AIコードのセキュリティを検証したKTH王立工科大学の研究

この研究では、LLM(大規模言語モデル)が生成するPythonコードのセキュリティ品質を評価するため、以下の2つの要素が脆弱性の発生にどう影響するかが調査されました。

  1. プロンプトエンジニアリング: AIへの指示(プロンプト)を、最適化した場合としない場合で比較。
  2. モデルパラメータ: temperature(出力の多様性)とtop-p(単語選択の範囲)という、AIの応答を制御する設定値を変更。

生成されたコードは、Pythonの静的解析ツール「Bandit」を用いて、一般的なセキュリティリスクについてスキャンされました。

プロンプトエンジニアリングが脆弱性を劇的に削減

調査結果の中で最も注目すべきは、プロンプトの質がコードの安全性に絶大な影響を与えた点です。

最適化されたプロンプト vs. 最適化されていないプロンプト

研究では、「セキュリティを意識したPythonアシスタントとして、常にベストプラクティスに従ってください」といった役割や背景を明確に与えた「最適化プロンプト」と、単に「Python関数を書いて」とだけ指示する「非最適化プロンプト」が比較されました。

その結果は驚くべきものでした。以下のグラフが示すように、最適化されたプロンプトは、最適化されていないプロンプトと比較して、生成されたコードの脆弱性の総数を最大で10分の1以下にまで削減しました。

図表1: 最適化プロンプトと非最適化プロンプトの脆弱性件数比較

最適化プロンプトと非最適化プロンプトの脆弱性件数比較

重大リスクはゼロに

さらに重要なのは、SQLインジェクションやコマンドインジェクションにつながるような「重大(High Severity)」な脆弱性が、最適化されたプロンプトを使用した場合には一件も検出されなかったことです。これは、明確で質の高い指示を与えるだけで、最も危険なセキュリティリスクの多くを未然に防げる可能性を示唆しています。

Temperature/Top-p設定の影響は軽微

一方で、AIの応答の「創造性」や「多様性」を調整するtemperaturetop-pといったパラメータは、コードのセキュリティ品質に一貫した、あるいは大きな影響を与えませんでした。

この結果は、AIの挙動を細かくチューニングすることよりも、どのような指示を与えるかという「プロンプト」そのものが、安全なコードを生成する上で遥かに重要であることを示しています。

結論:AI時代に開発者が心得るべきこと

この研究は、生成AIを安全に活用するための重要な示唆を与えてくれます。

「プロンプトエンジニアリング」こそが鍵

AIに高品質なコードを生成させるには、モデルのパラメータを微調整することに時間を費やすよりも、プロンプトを工夫することに注力すべきです。具体的には、以下のような要素をプロンプトに含めることが有効です。

  • 明確な役割設定: 「あなたはセキュリティ専門家です」
  • 具体的な指示: 「SQLインジェクションを防ぐために、パラメータ化クエリを使用してください」
  • ベストプラクティスの要求: 「常に安全なコーディングのベストプラクティスに従ってください」

AIはアシスタントであり、専門家ではない

たとえ最適化されたプロンプトを使ったとしても、脆弱性が完全になくなるわけではありません。本研究でも、低〜中程度の脆弱性は依然として検出されました。

生成AIは強力な「アシスタント」ですが、万能の「専門家」ではありません。開発者は、AIが生成したコードを鵜呑みにするのではなく、必ず自身の目でレビューし、静的解析ツールなどを活用して検証する責任があります。この「人間による監督」こそが、AI時代のソフトウェア開発における最後の、そして最も重要な防衛線となるのです。


Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!

参考資料:

Author: vonxai編集部

Google Scholarで開発生産性やチーム開発に関する論文を読むことが趣味の中の人が、面白かった論文やレポートを記事として紹介しています。