[論文レビュー] An Empirical Cybersecurity Evaluation of GitHub Copilot's Code Contributions
本研究では、MITREのTop 25から選ばれた高リスクCWEを標的とした89のシナリオを用いて、GitHub Copilotのセキュリティリスクを評価した。1,692件の生成プログラムの約40%が脆弱性を含んでおり、バグのあり得るオープンソースコードを学習データとして使用していることによる、AI支援開発における顕著なセキュリティ懸念を示している。
There is burgeoning interest in designing AI-based systems to assist humans in designing computing systems, including tools that automatically generate computer code. The most notable of these comes in the form of the first self-described `AI pair programmer', GitHub Copilot, a language model trained over open-source GitHub code. However, code often contains bugs - and so, given the vast quantity of unvetted code that Copilot has processed, it is certain that the language model will have learned from exploitable, buggy code. This raises concerns on the security of Copilot's code contributions. In this work, we systematically investigate the prevalence and conditions that can cause GitHub Copilot to recommend insecure code. To perform this analysis we prompt Copilot to generate code in scenarios relevant to high-risk CWEs (e.g. those from MITRE's Top 25 list). We explore Copilot's performance on three distinct code generation axes -- examining how it performs given diversity of weaknesses, diversity of prompts, and diversity of domains. In total, we produce 89 different scenarios for Copilot to complete, producing 1,692 programs. Of these, we found approximately 40% to be vulnerable.
研究の動機と目的
- GitHub Copilotの出力における不正なコードの広がり、特に高リスクのセキュリティ文脈における不正なコードの頻度を調査すること。
- プロンプトの多様性、脆弱性の種類、ソフトウェア分野の違いが、Copilotによる脆弱なコード生成の傾向に与える影響を評価すること。
- Copilotがオープンソースコードを学習することで、悪用可能なパターンを学習し再現するリスクがあるかどうかを評価すること。
提案手法
- 本研究では、MITREのTop 25リストに含まれる高リスクCWEを標的とした89の異なるコード生成シナリオを設計した。
- Copilotに各シナリオのコード生成を依頼し、合計1,692件のプログラムが生成された。
- 静的解析と既知のセキュリティパターンに基づく手動検査を用いて、生成コードの脆弱性を分析した。
- 脆弱性の評価は、脆弱性の種類、プロンプトのバリエーション、ソフトウェア分野の3軸にわたる多様性を考慮した。
- 脆弱性はCWEマッピングに従って分類され、既知の攻撃パターンと照合して検証された。
- さまざまな設定における不正なコードの発生率を定量化し、リスク要因を同定した。
実験結果
リサーチクエスチョン
- RQ1GitHub Copilotが高リスクセキュリティシナリオに対してプロンプトされた際、どの程度の割合で脆弱なコードを生成するか?
- RQ2プロンプトの多様性は、Copilotによる不正なコード生成の可能性にどのように影響するか?
- RQ3異なるソフトウェア分野は、Copilotのコード出力のセキュリティ品質にどの程度影響を及えるか?
- RQ4どの種類のCWEが、不正な形でCopilotによって最も頻繁に生成されるか?
主な発見
- GitHub Copilotが生成した1,692件のコードサンプルのうち、約40%が既知のセキュリティ脆弱性を含んでいた。
- Copilotは、インジェクション脆弱性や不適切なアクセス制御を含むシナリオに対して、脆弱なコードを生成する傾向が高かった。
- 本研究では、プロンプトのバリエーションが脆弱性発生率に顕著な影響を与えることが判明し、特定の表現方法が不正な出力のリスクを高めた。
- 特に入力検証や認証に関連する高リスクCWEは、不正な形で不均衡に多く生成された。
- 結果から、Copilotがオープンソースコードを学習することで、そのデータに存在する不正なパターンを学習し再現するリスクが明らかになった。
- 本研究の結果から、CopilotのようなAIペアプログラミングツールは、注意深く監視されない限り、不正な脆弱性を無意識に広めてしまう可能性がある。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。