Skip to main content
QUICK REVIEW

[論文レビュー] IRIS: LLM-Assisted Static Analysis for Detecting Security Vulnerabilities

Ziyang Li, Saikat Dutta|arXiv (Cornell University)|May 27, 2024
Software Reliability and Analysis Research被引用数 14
ひとこと要約

IRISはLLMと静的汚染分析を組み合わせ、Javaのリポジトリ全体の脆弱性検出を行う。LLMによってCWE特有の汚染仕様を推定し、CodeQLを拡張する。GPT-4が最良の結果を示し、69件の脆弱性を検出(CodeQLの27件に対し)false positivesを最大で約80%低減。

ABSTRACT

Software is prone to security vulnerabilities. Program analysis tools to detect them have limited effectiveness in practice due to their reliance on human labeled specifications. Large language models (or LLMs) have shown impressive code generation capabilities but they cannot do complex reasoning over code to detect such vulnerabilities especially since this task requires whole-repository analysis. We propose IRIS, a neuro-symbolic approach that systematically combines LLMs with static analysis to perform whole-repository reasoning for security vulnerability detection. Specifically, IRIS leverages LLMs to infer taint specifications and perform contextual analysis, alleviating needs for human specifications and inspection. For evaluation, we curate a new dataset, CWE-Bench-Java, comprising 120 manually validated security vulnerabilities in real-world Java projects. A state-of-the-art static analysis tool CodeQL detects only 27 of these vulnerabilities whereas IRIS with GPT-4 detects 55 (+28) and improves upon CodeQL's average false discovery rate by 5% points. Furthermore, IRIS identifies 4 previously unknown vulnerabilities which cannot be found by existing tools. IRIS is available publicly at https://github.com/iris-sast/iris.

研究の動機と目的

  • メソッドレベルの分析を超えた、スケーラブルでリポジトリ全体にわたる脆弱性検出の必要性を動機づける。
  • LLM主導の汚染仕様推定と静的汚染分析(CodeQL)を融合するニューロ-シンボリックなパイプラインを提案する。
  • 現実世界のJava脆弱性データセットであるCWE-Bench-Javaをキュレーションし、全体プロジェクトの推論能力を評価する。
  • CWE-Bench-JavaにおいてIRISがCodeQLよりも脆弱性検出を改善し、文脈依存のLLMベースのフィルタリングによって偽陽性を低減することを示す。

提案手法

  • 静的分析(CodeQL)を用いてJavaプロジェクトのデータフローグラフを構築し、候補APIを抽出する。
  • 外部/内部APIのCWE特有の汚染源と汚染先を、LLMsにプロンプトをかけて推定し、JSON形式の仕様を返す。
  • LLM推定仕様をCodeQLの汚染解析クエリに翻訳して、未 sanitizationのデータフローを検出する。
  • CWE特定のクエリでCodeQLを実行し、候補となる脆弱パスを取得し、次にLLMベースの文脈分析で偽陽性をフィルタリングする。
  • CWE-Bench-Javaで複数のLLM(GPT-4、GPT-3.5、Llama系、DeepSeekCoder、Mistral、Gemma)を対象に評価する。
  • 結果を提示し、推定仕様の精度と文脈フィルタリングの有効性を分析する。

実験結果

リサーチクエスチョン

  • RQ1IRISはCWE-Bench-Javaで既知の脆弱性をCodeQLと比較していくつ検出できるか?
  • RQ2真陽性を犠牲にせず偽陽性を減らす文脈分析の有効性はどれくらいか?
  • RQ3各CWEに対する外部/内部APIのソース/シンクの汚染仕様をLLMsがどれだけ正確に推定できるか?

主な発見

  • GPT-4を用いてIRISはCWE-Bench-Javaで69件の脆弱性を検出し、CodeQL(27件)より42件多い。
  • GPT-4はテストされたLLMの中で一般に最良の性能を示し、より小型の専門モデル(例:DeepSeekCoder 8B)も高い性能を示す(例:67件検出)。
  • 文脈分析は報告されるパスの数を劇的に減らし(GPT-4では最大81%のパス削減)、真陽性を維持する。
  • 平均するとGPT-4とDeepSeekCoderによる推定ソース/シンクの仕様は候補の約4%で、GPT-4は手動確認で高い精度(70%超)を達成。
  • OS Command Injection(CWE-78)は複雑なガジェットチェーンパターンのため多くのLLMにとって特に難しく、静的解析の限界を示している。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。