【AWS re:Invent 2024レポート】Amazon Q Developerのチャットを活用しながらコードをスキャンし、不具合やセキュリティの脆弱性を解消する方法

  1. セッション
  2. まとめ
Twitter
Facebook
Hatena
【AWS re:Invent 2024レポート】Amazon Q Developerのチャットを活用しながらコードをスキャンし、不具合やセキュリティの脆弱性を解消する方法

DXアプリケーション担当 の井上です。データ分析の集計機能開発、集計結果をグラフや表などでダッシュボードに表示させる機能の設計・開発・テストを行っています。

ラスベガスで開催された「AWS re:Invent 2024 」に参加しました。生成AIを扱ったセッションについてレポートします。

セッション

タイトル: Implement security fixes to codebase using Amazon Q Developer(TNC222)

  • 登壇者:Mostafa Saher
  • 概要: IDEでAmazon Q Developerを設定し、Pythonコードをスキャンして不具合・セキュリティの脆弱性を特定、修正する方法を学ぶ。

このセッションはPCを持参する必要がない「Interactive training」の形式で、会場内の各席にワークステーションが1台ずつ用意されていました。

図1  会場に用意されていたワークステーション

使用したIDEはVisual Studio Codeです。拡張機能の「Amazon Q」を選択すると、Amazon Qとのチャット欄が表示されます。

図2 「Amazon Q」アイコンとチャット欄

様々なコマンドが用意されており、例えば、“ /help”と入力するとAmazon Qの機能概要が確認でき、“/clear”と入力するとチャット内容をクリアできます。

Amazon Qとのチャットを使いながら、スキャン機能を使用した不具合特定を行ってみました。

今回のセッションは、「不具合のあるPythonコードを別の開発者から引き継いだ」という設定です。設問の設定では開発者がAPIエンドポイントの欠落について言及していたようなので、下記の質問をAmazon Qとのチャットに投げてみました。
「このファイルの開発者は、APIエンドポイントの欠落について言及しました。その詳細を教えてください。」
すると、Amazon Qが欠落しているAPIエンドポイントの記載箇所を教えてくれました!
確かに、エンドポイントらしき変数「api_endpoint」の値が空文字(“”)になっていることが分かります。

図3Amazon Qが欠落しているAPIエンドポイントの記載箇所について回答

また、修正が必要な箇所の明示だけでなく、どう修正すればいいのか、その修正が必要な理由等も一緒に回答してくれました!とても便利です。

次に、コードの潜在的な脆弱性を特定するために、プロジェクトスキャンを実施してみました。
IDE下部の[▷Amazon Q]をクリックするとAmazon Qのステータスバーが画面上部に展開されます。
[プロジェクトスキャンの実行]を選択すると、コードスキャンがバックグラウンドで実行されました。

図4 [▷Amazon Q]をクリック

図5 Amazon Qのステータスバーにて[Full project scan is now /review! Open in Chat Panel(プロジェクトスキャンの実行)]を選択

スキャンが完了すると、検出された脆弱性のある個所が[PROBLEMS]タブにリストで表示されました。Amazon Qの力を借りてこれらの問題を解決 していきます!

図6 検出された脆弱性が[PROBLEMS]タブにリストで表示

検出された脆弱性の1つ目は「CWE-798 - Hardcoded credentials・・・」と表示されており、どうやら認証情報がハードコーディングされていることが問題のようです。

図7検出された脆弱性について問題のあるコードを表示

クリックすると、問題のある行を強調表示してくれます。
確かに認証情報がハードコーディングされていることが分かります。

検出された脆弱性について知りたい場合は、対象の脆弱性(今回は「CWE-798 - Hardcoded credentials」)を右クリックし、表示されるポップアップから[View details for “CWE-798 - Hardcoded credentials”](詳細を見る)を選択すると詳細が表示されます。

図8 脆弱性について詳細を表示(今回は認証情報のハードコーディング)

問題についてさらに理解したい場合は、図7ポップアップ2行目の[Explain “CWE-798 - Hardcoded credentials”]」(説明)を選択すると、自動生成されたプロンプトがAmazon Qとのチャットに送信され、チャット上で脆弱性の説明をしてくれます!とても便利です。

図9 (こちらは図7で検出された2つ目の脆弱性についての説明をAmazon Qに求めた画像になりますが、チャット上で回答が返ってきていることが分かります。)

このように、Amazon Qの力を借りて脆弱性を検出し、なぜ問題なのかを確認しながら解決できます。
解決できた脆弱性は[PROBLEMS]タブのリストから削除されるので、対応漏れの心配も無さそうです。

まとめ

AWS re:Invent 2024のセッションレポートとして、Amazon Q Developerとのチャット、及びコードスキャン機能を使用した不具合、脆弱性の特定方法について紹介しました。
この機能を使用することによって、不具合の特定に時間を要してしまうことや、潜在的な脆弱性を残したままになってしまう問題の解決につながり、生成AIによる業務の質とスピードの向上が目指せると感じました。

Amazon Q Developerには、ここで紹介した機能の他に、htmlファイルを参照し、それがどんな情報のサイトであるかを読み取って回答してくれたり、Pythonコード内の特定のメソッドを選択すると、そのメソッドが何をしているのかを回答してくれたりと、様々な機能が搭載されていました。
Amazon Q Developerを使用することによって、より効率的な開発が可能となりそうだと実感できました。
皆様も是非利用してみてください。便利な機能や、より効率的な開発ができることを実感できます。

富士ソフトのAWS関連サービスについて、詳しくはこちら
アマゾンウェブサービス(AWS)

この記事の執筆者

井上 奈々Nana Inoue

ソリューション事業本部
情報ソリューション事業部 DXアプリケーション部
基盤ソリューショングループ
担当 / 専門

AWS