こちらの記事は、セキュリティ専門家の松野によるニュース解説ラジオ「今日の10分セキュリティラジオ」の放送内容を文字に起こしご紹介しています。
2022年8月、Blackhat USAで、GitHubのAIペアプログラマーであるCopilotは本当に安全なコードを生成してくれるのか? を検証した研究が発表された。(記事はこちら)
【お届けするニュースはサイバーセキュリティ専門ニュースサイト「ScanNetSecurity」の提供でお送りしています。】AIが提案したコードに脆弱性が含まれていたということです。GitHub Copilotの概要と、AIを活用してソフトウェア開発をする際にセキュリティの観点で気を付けるべきポイントについて説明します。
今回の講演は、AIペアプログラマーであるCopilotがリリースされた直後に、その機能を試したところ、SQLインジェクションの脆弱性があるコードが提案されたことについて発表されています。
会場では、CopilotがSQLインジェクションを許すコードを提案してくる過程の動画が流されていたということです。
GitHub Copilot は、人間の指示やコメントに対して、サンプルやテンプレートとなるコードを出力してくれるAIツールです。GitHub上に展開されているソースコードを学習しており、自然言語で書かれたコメントを解釈して、必要なコードブロックを生成・提案してくれます。
例えば、Aさんが一人でコードを書くためには、開発言語やプログラミングの知識が必要とされます。何も知らないところから勉強しようとすると、決して短くはない時間がかかってしまうことが考えられます。仮に、Aさんがどれだけ良いアイデアを持っていたとしても、一人でソフトウェアを開発するにはそれ相応の時間がかかってしまうかもしれないし、もしかしたら途中であきらめてしまうかもしれません。
そのような問題を解決する方法として、一つのコードを指示役とコーディング担当に別れて開発を行うペアプログラミングという手法が挙げられます。Copilot はAIペアプログラマーとも呼ばれており、Aさんの指示を受けて、Copilotがコーディング担当となり、Aさんの代わりにコードを書いてくれます。
Copilot は、OpenAI が開発している自然言語処理エンジンGPT3をベースに作られています。また、新しく発表された Copilot X は、GPT4をベースとしており、音声で対話しながらのプログラミングができる機能も提供されるということです。
Copilot が提案したコードには、SQLインジェクションやMD5のハッシュが使われる脆弱性が含まれていたということです。AIがセキュリティまで考慮したプログラムを生成することは不可能ではありませんが、現状のAIとは別の仕組みが求められます。
例えば、Bさんが資料を作る際に、過去の資料をコピペすることもあるのではないでしょうか。仮に、Bさんが参考にしていた資料に誤字脱字があった場合、Bさん何も考えずにコピペをしてしまうと、その間違いを含めて複写してしまうことになります。
AIでも同様に、学習したデータに間違いが含まれていれば、その間違い通りに学習してしまう可能性があります。Copilot が学習する GitHub 上に展開されているソースコードに脆弱性が含まれていることは否定できないため、提案されるコードにも脆弱性が含まれる可能性が考えられます。
AIがセキュリティを考慮したプログラムを生成するためには、別の仕組みとしてセキュリティチェックをする機能を実装する方法が考えられます。AIペアプログラマーは人間の指示により、論理・確率・統計で「機能する」コードを提案するものです。このコードを提案する仕組みの外側に、そのコードがセキュリティの観点から「正しい」かをチェックする仕組みが求められます。もちろん、このセキュリティ的に正しいかをチェックする仕組み自体がAIであってもいいわけです。
今回は、GitHub Copilot の概要と、AIを活用してソフトウェア開発をする際にセキュリティの観点で気を付けるべきポイントについてお届けしました。
今日の10分セキュリティラジオにて毎週月・水・金にセキュリティの最新ニュースを取り上げ解説を行っています。隙間の時間の情報収集にぜひお役立てください!
お見積り・ご相談など、お気軽にご相談ください
サイトTOPへ