핵심 개념
AIベースのコード合成のセキュリティを向上させるためのプロンプトエンジニアリング手法を提案し、GitHub Copilotを使用して評価した。
초록
AIアシスタントによるコーディング支援が増加しているが、生成されたコードのセキュリティに疑問がある。
現在の最先端技術をレビューし、改善領域を特定する。
プロンプト変更手法に基づく体系的なアプローチを提案し、3つの手法とその組み合わせでコードセキュリティを向上させることを示す。
実験では、OpenVPNプロジェクトで提案された手法の効果を評価し、安全なコード比率が最大8%増加し、不安全なコード比率が最大16%減少した。
1. ABSTRACT
AIアシスタントによるコーディング支援は増加しているが、生成されたコードのセキュリティに疑問がある。
提案された3つのプロンプト変更手法(シナリオ固有情報提供、反復的セキュリティ指向提示、一般的な整列シフト)により、GitHub Copilotで生成された不安全なサンプル数が最大16%減少し、安全なサンプル数が最大8%増加した。
2. INTRODUCTION
ChatGPTやAlphaCode 2などAIアシスタントツールへの注目が高まっている。
GitHub Copilotは人間競技者よりも優れた結果を出すDeepmindによって提案されている。
3. PROPOSED APPROACHES
Scenario-Specific Method:
開発者経験に基づき可能性のある問題点を列挙することでAIアシスタントに特定情報と警告情報を提供する方法。
Iterative Method:
前回生成されたコードサンプルのコメント部分(現在のイテレーション用)を修正することでAIアシスタントと反復的に通信する方法。
General Alignment Shifting Method:
ユーザープロンプト内(文脈内)で一般節(general clause)部分を挿入する方法。
4. EXPERIMENTS
OpenVPNプロジェクトから5つのタスク選択して実験。各メソッドごとに異なる方法で適用。
セキュリティ評価では、「Secure」「Partially secure」「Insecure」カテゴリーに分類。
통계
70 % の開発者は月に少なくとも1回GitHub Copilot を利用しており,46 % は毎日利用している。
提案手法は不安全な生成されたコードサンプル数を最大16%削減し,安全なコード数は最大8%増加させました。
인용구
"Although the AI assistant provided a reasonable code, the snippet contain CWE-
476 (the malloc function could fail to allocate memory, thus resulting in a NULL pointer dereference)."
"According to the results, the iterative method is the best-performing one to increase the number of secure solutions synthesized and reduce the number of insecure synthesized samples."