[論文レビュー] Using ChatGPT as a Static Application Security Testing Tool
この論文は、プロンプト工学を用いて脆弱性を検出するように指示することで、GPT-3.5(ChatGPT経由)をPythonコード向けの静的アプリケーションセキュリティテスト(SAST)ツールとして評価している。Bandit、Semgrep、SonarQubeと比較して、誤検出および誤検出の減少が確認され、特定の設定においてF1スコアが0.4101に達するなど、従来のSASTツールの補完的アシスタントとしての強力な可能性を示している。
In recent years, artificial intelligence has had a conspicuous growth in almost every aspect of life. One of the most applicable areas is security code review, in which a lot of AI-based tools and approaches have been proposed. Recently, ChatGPT has caught a huge amount of attention with its remarkable performance in following instructions and providing a detailed response. Regarding the similarities between natural language and code, in this paper, we study the feasibility of using ChatGPT for vulnerability detection in Python source code. Toward this goal, we feed an appropriate prompt along with vulnerable data to ChatGPT and compare its results on two datasets with the results of three widely used Static Application Security Testing tools (Bandit, Semgrep and SonarQube). We implement different kinds of experiments with ChatGPT and the results indicate that ChatGPT reduces the false positive and false negative rates and has the potential to be used for Python source code vulnerability detection.
研究の動機と目的
- 大規模言語モデル、特にChatGPTを用いたPythonコードにおけるソフトウェア脆弱性検出の可能性を評価すること。
- 従来のSASTツール(Bandit、Semgrep、SonarQube)と比較して、ChatGPTの脆弱性検出精度の性能を評価すること。
- ChatGPTを用いたプロンプト工学が、静的コード解析における誤検出および誤検出率の低減に寄与するかどうかを調査すること。
- GPT-3.5を従来のSASTツールの結果を改善する補助的アシスタントとして使用する可能性を検討すること。
提案手法
- 研究では、Common Weakness Enumeration(CWE)カテゴリに基づき、ChatGPTにPythonソースコードのセキュリティ脆弱性を分析するようプロンプトを設計する。
- 4つの異なる実験設定を設計:二値分類、脆弱性リスト選択、SASTアシスタント役割、自由記述分類。
- ChatGPTは、既知の脆弱性を含む3つのデータセットで評価され、精度、再現率、F1スコアの指標を用いてBandit、Semgrep、SonarQubeと比較された。
- プロンプト設計は、モデルのパフォーマンス向上を目的として、自然さと表現力に重点を置き、先行するLLMプロンプト評価研究のガイドラインを基にした。
- 評価指標は脆弱性データセットからの正解ラベルを用いて計算され、異なるプロンプト設定における結果が分析された。
- 実験は、セキュリティに重要な応用で広く使われていることから、Pythonコードに限定して実施された。

実験結果
リサーチクエスチョン
- RQ1プロンプトベースの指示を用いて、ChatGPTはPythonソースコードにおけるセキュリティ脆弱性を効果的に検出できるか?
- RQ2精度、再現率、F1スコアの観点から、ChatGPTの脆弱性検出パフォーマンスは、Bandit、Semgrep、SonarQubeといった従来のSASTツールと比較してどうなるか?
- RQ3ChatGPTをSASTアシスタントとして使用することで、既存のSASTツールの誤検出および誤検出率を低減し、精度を向上させることができるか?
- RQ4異なるプロンプト設定は、ChatGPTの脆弱性検出結果の信頼性および一貫性にどのように影響するか?
主な発見
- SASTアシスタント役割の設定では、ChatGPTはF1スコア0.1808を達成し、同じ設定でSonarQube(F1: 0.0743)、Bandit(F1: 0.1022)、Semgrep(F1: 0.1812)を上回った。
- 自由記述分類タスクでは、ChatGPTはF1スコア0.1808を達成し、ルールベースのSASTツールと比較して中程度ながらも競争力のあるパフォーマンスを示した。
- 二値分類実験では、ChatGPTはF1スコア0.4101を達成し、Semgrep(F1: 0.1812)、Bandit(F1: 0.1022)、SonarQube(F1: 0.0743)を顕著に上回った。
- 複数の実験において、ChatGPTは誤検出および誤検出率がすべての3つのベースラインSASTツールを下回っており、特に二値分類設定で顕著であった。
- モデルのパフォーマンスはプロンプト設計に敏感であり、最適化されたプロンプトが顕著に良い結果をもたらした。これは、信頼性ある出力を得るためにはプロンプト工学が不可欠であることを示唆している。
- 有望な結果が得られたものの、本研究はGPT-4ではなくGPT-3.5に依存していること、データセットカバレッジのギャップ、外部サーバーにソースコードをアップロードする際のセキュリティ懸念といった制限を認識している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。