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氏はGitHub Security Labのエンジニアであり、GitHubとMicrosoftが開発したペアプログラミングのエージェントであるCopilotを、主にセキュアなコードを書くという部分に応用するというのがこのセッションのテーマだ。
しかし業界には多くのデべロッパーが存在するがセキュリティに特化したプログラマーは少なく、アプリケーションのデベロッパーとアプリケーションにおけるセキュリティエキスパートの比率は100対1程度であるという。実際のところアプリケーションにおけるセキュアなコードを書くためのノウハウはすでに蓄積されており、問題は「どうやってそれを多くのアプリケーションデベロッパーに使わせるのか?」という点にあるという認識を示した。
そして現時点でのAIはChatGPTに代表されるように対話式で必要とする情報を引き出すというのが一般的な使われ方だが、GitHubの回答はCopilotである。GitHubは自身のプライベートカンファレンスであるGitHub UniverseでもCopilotは「AIによるペアプログラミングのためのツール」であることを常に訴求しており、多くのデベロッパーが書いたオープンソースの膨大なソースコードを知識ベースとして使うことで効率の良いコード、バグを引き起こしやすいコードなどのサンプルとその傾向を確実に知識化していると言える。また単にプログラミング言語だけではなく、YAMLなどの構成ファイルやテストためのコード生成などさらに利用の範囲を拡げている。
そしてここからはデモの動画を交えてセキュアなコードを書くために生成型AIをどのように使うかという4つの点について例を示して解説を行った。
最初に紹介したのは安全なコードを書くという目的にAIを使うという例だ。
ここではSQL文の中で利用するユーザー名をインプットさせるという例を示して、安易なコードではSQLインジェクションが可能になってしまう例を見せて説明した。しかしCopilotを使うことでユーザー名をSQLの中のステートメントではなくパラメータとして扱うコードが生成され、それを使うことで脆弱性をなくすことができると説明。
そしてCopilotを使って最初から安全なコードを書くための対話の例を示して、ペアプログラミングで安全なコードを書くという目的は達成できることを示した。
次はすでに書かれたコードをCopilotにレビューさせるという方法だ。新規にコードを書くだけではなく、過去のコードをレビューして改善するという使い方である。つまり生成型AIを過去のコードのセキュリティ改善のために使うという例だ。
ただしAIはセキュリティテストを置き換えるツールでもなければ、デベロッパーを不要にするためのツールでもないということを強調した上で、2023年の傾向としてアタッカーが組織内に侵入する方法としてユーザーIDやパスワードを盗み出して使うという例が約49%にも上っていることを説明。
それに対する対抗策がGitHub Advanced Security(GHAS)であると説明。ここでも動画のデモを使って、パターン化によって発見が難しいクレデンシャルがソースコードリポジトリに含まれる場合であってもGHASによって発見できることなどを説明した。
3つ目の使い方はトレーニングに使うという側面だ。ここではCopilotと対話することでドキュメントなどに書かれている汎用の例を使ってコードのセキュリティの不備を解説するのではなく、実際に今開発しようとしているコードを例にしてどこをどのように直したら良いのかを提示することで、より具体的に修正方法に関する知識を得ることができると語った。
最後の部分はテストについてだ。ここではFuzzingテストについて、Copilotを使ってテストに利用するパターンを生成させるという例を示して説明を行っている。ここではPythonのコードに対するFuzzingテストのためのコードを生成するところを見せた。
GitHubはこれらのAIによる支援機能を実装するに際し、デベロッパーのプライバシーを侵害しているのではないか? という疑問が当然湧いてくるだろうと説明し、その回答としてGitHub Trust Centerを紹介。ここではGitHubによるソースコード利用についても細心の注意を払っていることを訴求した。GitHub Trust Centerについては、以下の公式サイトを参照されたい。
●参考:https://resources.github.com/copilot-trust-center/
そしてGitHubを使うデベロッパーのうち、大企業に属する500名に対するサーベイの結果を紹介。ここではデベロッパーの32%はコードを書くことに時間を割いてはいるものの、ほぼ同等の31%のデベロッパーは脆弱性対策のために時間を使っていることを紹介。ここではコードを書くのと同等の労力を脆弱性対策に使っているというエンタープライズの悩みを紹介した形になった。
またAIを使うことで実際のコードを書く時間を減らし、コードレビューやセキュリティレビューに時間を使いたいと思っていることも紹介した。
最後に今回のCopilotを使ったセキュリティ対策への使い方、4つについてまとめてセッションを終えた。
最後にまとめとして、Copilotによってより安全なコードを書くこと、クレデンシャルの発見などを使って既存のコードの問題点を発見すること、実際のソースコードを使って修正案を提示することでより実践的なトレーニングが可能になったこと、Fuzzingテストなどを生成したり安全なボイラープレートを生成したりすることで、適切なガイドラインを提示することなどを示して、機能を実装するアプリケーションを生成しながら同時にセキュアなコード、クレデンシャル管理などを提案することで、現実的なリスクを下げることが可能となると説明してセッションを終えた。
またGitHubが提供しているゲーム形式でセキュリティ対策を学べるサイトを紹介し、手を動かしながらセキュリティ対策を学ぶことが可能であることを付け加えた。
●参考:Secure Code Gameのサイト:https://github.com/skills/secure-code-game
今回のカンファレンスでは多くのセッションで触れられていたオープンソースのAIかクローズドのAIかという点には一切触れず、生成型AIを使ってデベロッパーを手助けするためのポイントに絞って解説を行っていたのが印象的だった。すでにCopilotは多くの場面で使われており、その先行者利益を最大限に使おうという意図が見えたセッションと言える。
なお2023年のGitHub UniverseでのCopilotに関する記事は以下を参考にして欲しい。このセッションはデベロッパーの評価を定量的に行わないことを解説したShopifyに関するもので、生産性について深く考えさせられる内容となっている。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- GitHub Universe 2023、GitHubのCOO、Kyle Daigle氏にインタビュー
- GitHub Universe 2023で、GitHubのCSO、Mike Hanley氏にインタビュー
- GitHub Universe 2023、MSのCEOもサプライズで登壇した初日のキーノートを紹介
- AI駆動型開発ツールに関する勉強会を取材。「まず使ってみることが大事」
- GitHub Universe 2022、キーノートで見せた多角的にデベロッパーを支援する機能とは?
- 「GitHub Universe 2022」からAIペアプログラミングのCopilotの未来を語るセッションを紹介
- CI/CD Conference 2021 MicrosoftとGitHubの連携をMSKKのアーキテクトが解説
- GitHub Universe 2023からShopifyが活用するCopilotのセッションを紹介
- 「GitHub Universe 2022」セキュリティの機能強化はOSS向けとエンタープライズ向けの2本立て
- 写真で見るGitHub Universe 2023、狭いスペースを最大限に使った展示ブースなどを紹介