Skip to main content
QUICK REVIEW

[論文レビュー] Is GitHub's Copilot as Bad as Humans at Introducing Vulnerabilities in Code?

Owura Asare, Meiyappan Nagappan|arXiv (Cornell University)|Apr 10, 2022
Software Engineering Research被引用数 13
ひとこと要約

本研究では、実際のC/C++プロジェクトで過去に脆弱性を引き起こしたコード断片をプロンプトとして与えた場合、GitHub Copilotが人間の開発者と同等の割合でソフトウェア脆弱性を導入するかどうかを評価する。Big-Vulデータセットを用いて、Copilotは脆弱なコードを33%の割合で再現し、修正コードを25%の割合で再現した。これは、人間ほど脆弱性を導入する傾向が強くないことを示唆しているが、依然として有意な少数のケースで不正なコードを生成している。

ABSTRACT

Several advances in deep learning have been successfully applied to the software development process. Of recent interest is the use of neural language models to build tools, such as Copilot, that assist in writing code. In this paper we perform a comparative empirical analysis of Copilot-generated code from a security perspective. The aim of this study is to determine if Copilot is as bad as human developers. We investigate whether Copilot is just as likely to introduce the same software vulnerabilities as human developers. Using a dataset of C/C++ vulnerabilities, we prompt Copilot to generate suggestions in scenarios that led to the introduction of vulnerabilities by human developers. The suggestions are inspected and categorized in a 2-stage process based on whether the original vulnerability or fix is reintroduced. We find that Copilot replicates the original vulnerable code about 33% of the time while replicating the fixed code at a 25% rate. However this behaviour is not consistent: Copilot is more likely to introduce some types of vulnerabilities than others and is also more likely to generate vulnerable code in response to prompts that correspond to older vulnerabilities. Overall, given that in a significant number of cases it did not replicate the vulnerabilities previously introduced by human developers, we conclude that Copilot, despite performing differently across various vulnerability types, is not as bad as human developers at introducing vulnerabilities in code.

研究の動機と目的

  • GitHub Copilotが人間の開発者と同等の割合でソフトウェア脆弱性を導入するかどうかを評価すること。
  • Big-Vulデータセットに含まれる実世界の人的要因による脆弱性と比較して、Copilotが脆弱なコードや修正コードを生成する挙動を分析すること。
  • Copilotの脆弱性導入率が脆弱性の種別、公開日、修正の複雑さによってどのように変化するかを調査すること。
  • Copilotの挙動が、安全なソフトウェア開発や将来のAI支援プログラミングツールに与える影響を評価すること。

提案手法

  • 本研究では、脆弱なコードと修正済みコードのコミットが関連付けられた実際のC/C++脆弱性を含むBig-Vulデータセットを用いる。
  • 各脆弱性について、脆弱性が導入された直前のコード断片を抽出し、それをCopilotのプロンプトとして使用する。
  • Copilotの生成結果は、二段階の分類プロセスを経て分析される:出力が元の脆弱なコードに一致するか、または修正済みコードに一致するか。
  • 出力の手動による検査と分類が行われ、元の脆弱性または修正コードとセキュリティ的に同等かどうかを評価する。
  • 本研究では、異なる脆弱性タイプ(CWEカテゴリ)、公開日、修正の複雑さの観点から、Copilotの挙動の違いを検討する。
  • 統計的分析を用いて、データセットの異なるサブセットにおける脆弱性再現や修正生成の傾向を評価する。

実験結果

リサーチクエスチョン

  • RQ1GitHub Copilotは、人間の開発者と同等の確率で同じ脆弱性をコードに導入するだろうか?
  • RQ2脆弱性の年齢によって、Copilotが脆弱なコードや修正コードを生成する傾向は変化するだろうか?
  • RQ3特定の種類の脆弱性は、Copilotによって再現されたり修正されたりする確率が高くなるだろうか?
  • RQ4修正の複雑さは、Copilotが正しいセキュアなバージョンを生成する能力にどのように影響するだろうか?

主な発見

  • Copilotは、テストされたケースの約33%で元の脆弱なコードを再現しており、人間の開発者ほど同じ脆弱性を導入する可能性が低いことが示唆される。
  • Copilotは25%のケースで正しい修正コードを生成しており、一部の状況では既知の脆弱性を回避できる可能性がある。
  • Copilotは、新しい脆弱性に対しては脆弱なコードを生成する可能性が低く、最近導入されたセキュリティ問題に対しては性能が向上している。
  • 修正が単純な脆弱性に対してはCopilotのパフォーマンスが高く、修正の複雑さと生成精度の間に相関があることが示唆される。
  • Copilotが脆弱性を再現するか修正コードを生成する確率は、CWEカテゴリによって顕著に異なる。一部の脆弱性タイプは、他のタイプよりも再現されやすい。
  • 一部のケースでは人間より性能が優れているものの、Copilotは評価されたシナリオの少なくとも1/3で不正なコードを生成しており、継続的なセキュリティリスクが浮き彫りになっている。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。