GitHub、「Copilot Autofix」一般提供–AIでコードの脆弱性を検出・説明して修正提案
今回は「GitHub、「Copilot Autofix」一般提供–AIでコードの脆弱性を検出・説明して修正提案」についてご紹介します。
関連ワード (ソフトウェア等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
GitHubは米国時間 8月14日、「Copilot Autofix」の一般提供を「GitHub Advanced Security(GHAS)」で開始したと発表した。
ソフトウェアは、以前に比べて短期間で出荷され、新しい機能が早期に数多くリリースされるようになった。安全なコードの開発に多くの努力が向けられても、脆弱(ぜいじゃく)性は本番環境に紛れ込み、侵害の主な理由となり続けているとGitHubは述べる。さらに、多くの開発者は、セキュリティ要件を理解と実装が困難なものと捉えており、優れたセキュリティ上の成果を得るのは容易でなく、さらなる脆弱性が野に放たれるという結果的になっているという。
「コードスキャニングツールは、脆弱性を検出するが、根本的な問題を解決しない。修正にはセキュリティに関する専門知識と時間が必要で、2つの貴重なリソースが極めて不足している。言い換えれば、問題は脆弱性の検出ではなく、その修正にある」(同社)
Copilot Autofixは、AIを活用し、コード内の脆弱(ぜいじゃく)性の分析、問題となる理由の説明、迅速な修正を支援するコードの提案を提供する。プルリクエストでコードから新たな脆弱性を排除するとともに、既存の脆弱性に対する修正も生成する。
SQLインジェクションやクロスサイトスクリプティングといった数十種類にわたるコード脆弱性に対応しており、プルリクエスト内で却下、修正、コミットすることが可能。コードの提案には、「CodeQL」エンジン、「GPT-4o」、ヒューリスティックと「GitHub Copilot API」の組み合わせたものを使用する。CodeQL分析とフローバス周辺のコードの短い断片といったソースを基にすることで、大規模言語モデル(LLM)を使ったプロンプトを構築するという。
3月にパブリックベータ版が公開されて以来、Copilot Autofixはプルリクエストで使われ、新しいコード内にある脆弱性が本番環境にマージされて顧客に影響を与える前に迅速な修正を支援してきた。5〜7月のデータから、検出から修正完了までの時間を大幅に短縮されていることが明らかになっている。
Copilot Autofixを使った場合、プルリクエスト時アラートに対して修正を自動的にコミットするまでの時間は、中央値で28分だった。手動で対応した場合の1.5時間に比べて3倍早かった。同様に、クロスサイトスクリプティングの脆弱性では22分で、手動で対応した場合の約3時間に比べて7倍は早く、SQLインジェクションの脆弱性では18分で、手動で対応した場合の3.7時間に比べて12倍早かったという。
GitHub Copilotは、コード作成を高速化するとともに修正のペースも上げるので、未処理となっている既存の脆弱性の解消を進めることができるGitHubは説明する。このような脆弱性はセキュリティ負債と知られている。
既存の脆弱性についてCopilot Autofixを使用するには、GHASの「Code scanning」のアラートで「Generate fix」ボタンをクリックする。コードと脆弱性を評価し、レビュー用に説明とコードの提案を表示する。「Create PR with fix」ボタンを押すと、アラートを修正するために必要なコードの変更を含む新しいプルリクエストが作成される。優先的に対応しづらい低・中程度の深刻さを持つアラートであっても積年のセキュリティ負債が数クリックで解消できると同社はアピールする。
オープンソースソフトウェアに対して責任ある利用者であるとともに貢献者でもあることは非常に重要だとGitHubは考える。そのため、9月から、プルリクエストでのCopilot Autofixの利用を全オープンソースプロジェクトに対して無料で可能にする。同社は、Code scanningや「Secret scanning」「プライベート脆弱性レポート」ツールなどをオープンソースメンテナーが無料で利用できるようにしてきた。
ソフトウェアセキュリティの責任は開発者にあり続けるが、AIエージェントがその負荷軽減に役立つと同社。経験豊富なセキュリティ人材は不足しているが、Copilot Autofixを使うことで、セキュリティの専門知識を必要な時に活用することができるため、セキュリティはソフトウェア開発と同じ意味を持つようになるという。