連載 [第8回] :
  AI_dev Europe 2024レポート

AI_dev Europe 2024から、GitHubによるCopilotをコードのセキュリティ向上のためのツールとして解説したセッションを紹介

2024年10月2日(水)
松下 康之 - Yasuyuki Matsushita
AI_dev Europe 2024から、GitHubのエンジニアがCopilotのコードセキュリティへの応用を解説したセッションを紹介する。

AI_dev Europe 2024から、GitHubのエンジニアが解説するコードの脆弱性を抑止するためのCopilotの利用を解説したセッションを紹介する。セッションを行ったのはJoseph Katsioloudes氏、タイトルは「Code Security Reinvented: navigating the Era of AI」、生成型AIをセキュリティの分野に応用する例を解説している。

AI_devはオープンソースの護持者であるThe Linux Foundation(LF)の主催ではあるが、このセッションの中で言う「オープンソース」とはGitHubがホストする大量のオープンソースプロジェクトのソースコードでしかなく、GitHubとMicrosoftが共同で開発するペアプログラミングのエージェントであるCopilotは、実際にはクローズドソースのソフトウェアとなる。つまりオープンソースの利用を拡大したいLFが、クローズドソースであるCopilotの解説セッションを提供しているというわけだ。

すでに多くのプログラマーが利用する生成型AIの実装形であるCopilotを解説するセッションが、参加者を惹き付ける力には抗えなかったということだろう。GitHubはこのカンファレンスのスポンサーでもないので、単純にセッションの内容がカンファレンスのニーズに合致していたことを示している。セッションの動画は以下から参照可能だ。

●動画:Code Security Reinvented: Navigating the Era of AI

セッションを行うKatsioloudes氏

セッションを行うKatsioloudes氏

Katsioloudes氏はGitHub Security Labのエンジニアであり、GitHubとMicrosoftが開発したペアプログラミングのエージェントであるCopilotを、主にセキュアなコードを書くという部分に応用するというのがこのセッションのテーマだ。

毎年多くの脆弱性が発見され修正されているという事実を紹介

毎年多くの脆弱性が発見され修正されているという事実を紹介

しかし業界には多くのデべロッパーが存在するがセキュリティに特化したプログラマーは少なく、アプリケーションのデベロッパーとアプリケーションにおけるセキュリティエキスパートの比率は100対1程度であるという。実際のところアプリケーションにおけるセキュアなコードを書くためのノウハウはすでに蓄積されており、問題は「どうやってそれを多くのアプリケーションデベロッパーに使わせるのか?」という点にあるという認識を示した。

世界で最も利用されているペアプログラミングの相手がCopilotと紹介

世界で最も利用されているペアプログラミングの相手がCopilotと紹介

そして現時点でのAIはChatGPTに代表されるように対話式で必要とする情報を引き出すというのが一般的な使われ方だが、GitHubの回答はCopilotである。GitHubは自身のプライベートカンファレンスであるGitHub UniverseでもCopilotは「AIによるペアプログラミングのためのツール」であることを常に訴求しており、多くのデベロッパーが書いたオープンソースの膨大なソースコードを知識ベースとして使うことで効率の良いコード、バグを引き起こしやすいコードなどのサンプルとその傾向を確実に知識化していると言える。また単にプログラミング言語だけではなく、YAMLなどの構成ファイルやテストためのコード生成などさらに利用の範囲を拡げている。

そしてここからはデモの動画を交えてセキュアなコードを書くために生成型AIをどのように使うかという4つの点について例を示して解説を行った。

デベロッパーがAIを使ってセキュアなコードを書くための方法を解説

デベロッパーがAIを使ってセキュアなコードを書くための方法を解説

最初に紹介したのは安全なコードを書くという目的にAIを使うという例だ。

ここではSQL文の中で利用するユーザー名をインプットさせるという例を示して、安易なコードではSQLインジェクションが可能になってしまう例を見せて説明した。しかしCopilotを使うことでユーザー名をSQLの中のステートメントではなくパラメータとして扱うコードが生成され、それを使うことで脆弱性をなくすことができると説明。

そしてCopilotを使って最初から安全なコードを書くための対話の例を示して、ペアプログラミングで安全なコードを書くという目的は達成できることを示した。

次はすでに書かれたコードをCopilotにレビューさせるという方法だ。新規にコードを書くだけではなく、過去のコードをレビューして改善するという使い方である。つまり生成型AIを過去のコードのセキュリティ改善のために使うという例だ。

ただしAIはセキュリティテストを置き換えるツールでもなければ、デベロッパーを不要にするためのツールでもないということを強調した上で、2023年の傾向としてアタッカーが組織内に侵入する方法としてユーザーIDやパスワードを盗み出して使うという例が約49%にも上っていることを説明。

クレデンシャルを盗用されることが組織への侵入の約半分の原因

クレデンシャルを盗用されることが組織への侵入の約半分の原因

それに対する対抗策がGitHub Advanced Security(GHAS)であると説明。ここでも動画のデモを使って、パターン化によって発見が難しいクレデンシャルがソースコードリポジトリに含まれる場合であってもGHASによって発見できることなどを説明した。

3つ目の使い方はトレーニングに使うという側面だ。ここではCopilotと対話することでドキュメントなどに書かれている汎用の例を使ってコードのセキュリティの不備を解説するのではなく、実際に今開発しようとしているコードを例にしてどこをどのように直したら良いのかを提示することで、より具体的に修正方法に関する知識を得ることができると語った。

最後の部分はテストについてだ。ここではFuzzingテストについて、Copilotを使ってテストに利用するパターンを生成させるという例を示して説明を行っている。ここではPythonのコードに対するFuzzingテストのためのコードを生成するところを見せた。

コードの中の安全ではない書き方をCopilotが指摘

コードの中の安全ではない書き方をCopilotが指摘

GitHubはこれらのAIによる支援機能を実装するに際し、デベロッパーのプライバシーを侵害しているのではないか? という疑問が当然湧いてくるだろうと説明し、その回答としてGitHub Trust Centerを紹介。ここではGitHubによるソースコード利用についても細心の注意を払っていることを訴求した。GitHub Trust Centerについては、以下の公式サイトを参照されたい。

●参考:https://resources.github.com/copilot-trust-center/

そしてGitHubを使うデベロッパーのうち、大企業に属する500名に対するサーベイの結果を紹介。ここではデベロッパーの32%はコードを書くことに時間を割いてはいるものの、ほぼ同等の31%のデベロッパーは脆弱性対策のために時間を使っていることを紹介。ここではコードを書くのと同等の労力を脆弱性対策に使っているというエンタープライズの悩みを紹介した形になった。

大企業のデベロッパーは多くの時間を脆弱性対策に使っている

大企業のデベロッパーは多くの時間を脆弱性対策に使っている

またAIを使うことで実際のコードを書く時間を減らし、コードレビューやセキュリティレビューに時間を使いたいと思っていることも紹介した。

コードレビューにより多くの時間を使いたいという希望を示している

コードレビューにより多くの時間を使いたいという希望を示している

最後に今回のCopilotを使ったセキュリティ対策への使い方、4つについてまとめてセッションを終えた。

4つのまとめを紹介

4つのまとめを紹介

最後にまとめとして、Copilotによってより安全なコードを書くこと、クレデンシャルの発見などを使って既存のコードの問題点を発見すること、実際のソースコードを使って修正案を提示することでより実践的なトレーニングが可能になったこと、Fuzzingテストなどを生成したり安全なボイラープレートを生成したりすることで、適切なガイドラインを提示することなどを示して、機能を実装するアプリケーションを生成しながら同時にセキュアなコード、クレデンシャル管理などを提案することで、現実的なリスクを下げることが可能となると説明してセッションを終えた。

またGitHubが提供しているゲーム形式でセキュリティ対策を学べるサイトを紹介し、手を動かしながらセキュリティ対策を学ぶことが可能であることを付け加えた。

GitHubが公開しているSecure Code Gameのサイト

GitHubが公開しているSecure Code Gameのサイト

●参考:Secure Code Gameのサイト:https://github.com/skills/secure-code-game

今回のカンファレンスでは多くのセッションで触れられていたオープンソースのAIかクローズドのAIかという点には一切触れず、生成型AIを使ってデベロッパーを手助けするためのポイントに絞って解説を行っていたのが印象的だった。すでにCopilotは多くの場面で使われており、その先行者利益を最大限に使おうという意図が見えたセッションと言える。

なお2023年のGitHub UniverseでのCopilotに関する記事は以下を参考にして欲しい。このセッションはデベロッパーの評価を定量的に行わないことを解説したShopifyに関するもので、生産性について深く考えさせられる内容となっている。

●参考:GitHub Universe 2023からShopifyが活用するCopilotのセッションを紹介

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

開発ツールイベント
第8回

AI_dev Europe 2024から、GitHubによるCopilotをコードのセキュリティ向上のためのツールとして解説したセッションを紹介

2024/10/2
AI_dev Europe 2024から、GitHubのエンジニアがCopilotのコードセキュリティへの応用を解説したセッションを紹介する。
AI・人工知能イベント
第7回

AI_dev Europe 2024からIBMとRed HatによるInstructLabのセッションを紹介

2024/9/25
AI_dev Europe 2024からIBMとRed Hatが協同で解説したInstructLabのセッションを紹介する。
AI・人工知能イベント
第6回

AI_dev Europe 2024から生成型AIのオープンさを概観するセッションを紹介

2024/9/18
AI_dev Europe 2024から、生成型AIのオープンさを概観するセッションを紹介する。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています