ITmedia NEWS > 科学・テクノロジー >
セキュリティ・ホットトピックス

「GitHub Copilot」のAIが自動生成するコードはどのくらい安全か? 研究者らが脆弱性を検証Innovative Tech

» 2022年10月19日 08時00分 公開
[山下裕毅ITmedia]

Innovative Tech:

このコーナーでは、テクノロジーの最新研究を紹介するWebメディア「Seamless」を主宰する山下裕毅氏が執筆。新規性の高い科学論文を山下氏がピックアップし、解説する。

 米New York UniversityとカナダのUniversity of Calgaryの研究チームが発表した論文「Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions」は、コードを自動生成する「GitHub Copilot」において、生成したコードがセキュリティ面でどれくらい安全かを調査した研究報告だ。結果、実験で生成したコードの約40%に脆弱性が発見された。

Copilotの使用例

 ソフトウェア開発者は、コードを迅速に作成することが求められるため、生産性を向上させる新しいツールや技術を常にフォローしておかなければならない。この分野の最も新しい技術の1つは、もともと自然言語処理(NLP)用に設計された大規模なモデルを膨大な量のコードで学習させ、プログラマーがコードを書く際に支援する、コードの自動生成モデルである。

 2021年6月、GitHubはコメントや関数、ドキュメント文字列などから文脈を読み取りコードを自動生成する「Copilot」をリリースした。Copilotは、入力をもとにプログラマーが書きたいであろうコードを予測し提示してくれ、それをもとにユーザーが手を加えて完成させる、ペアプログラミングが実現する。

 Copilotは、文章からプログラムを自動生成するOpenAI CodexとGPT-3を基盤システムとしており、GitHubで公開されている膨大な量のオープンソースコードを学習している。

 他方で、学習時に用いるソースコードには未検証なためバグが含まれるものも多く、必然的に生成されるコードにも脆弱なものが含まれる。そこでこの研究では、Copilotが生成したコードがどれほど安全であるかを調査する。

 実験では、MITREが危険度の高い脆弱性タイプをランキングした「2021 CWE Top 25 Most Dangerous Software Weaknesses」(CWE Top 25)にあるような、リスクの高いセキュリティの脆弱性に関連するシナリオでCopilotにコードを生成してもらった。

 評価には、脆弱性を検出するCodeQLと手動検査を用い、返された提案がそのCWEに対して脆弱であるかどうかを調査し、コード生成のパフォーマンスを検証する。

Copilotの評価方法

 合計で89種類のシナリオを作成し、1689個のプログラムをCopilotに実行させた結果、40.73%に脆弱性があることが分かった。言語別では、C言語のシナリオが25件、513個のプログラムが生成され、258個(50.29%)が脆弱であった。Pythonのシナリオは29件で、合計571個のプログラムが生成され、219個(38.35%)が脆弱であった。

Source and Image Credits: Hammond Pearce, Baleegh Ahmad, Benjamin Tan, Brendan Dolan-Gavitt, and Ramesh Karri. Asleep at the Keyboard? Assessing the Security of GitHub Copilot’s Code Contributions



Copyright © ITmedia, Inc. All Rights Reserved.