Vulnhuntr で脆弱性を発見:LLM と静的コード解析による包括的な機能を提供

Vulnhuntr: A Tool for Finding Exploitable Vulnerabilities with LLMs and Static Code Analysis

2024/10/19 SecurityOnline — 今日のサイバーセキュリティの進化の状況において、ソフトウェアとインフラの安全性を維持するために、コードベースの脆弱性を特定することは不可欠である。GitHub で入手可能なオープンソース・ツールである Vulnhuntr は、LLM (Large Language Models) と静的コード解析を活用することで、Python ベースのプロジェクトにおける、リモートから悪用可能な脆弱性を特定する。

シンプルさとパワフルさを追求して設計された Vulnhuntr は、インテリジェントな自動化と徹底的なコード分析のギャップを埋めるものであり、セキュリティ専門家/ソフトウェア開発者/ユーザー組織にとって、貴重なリソースとなる。

Vulnhuntr の仕組み

Vulnhuntr における脆弱性の検出では、独自の多段階アプローチが採用されている。

  1. LLM による README 分析:最初に LLM が行うのは、プロジェクトの README ファイルの分析と、コードベースにおける機能と潜在的な脆弱性を把握である。この情報は、その後の分析の指針として使用される。
  2. 初期コードスキャン:LLM はコードベース全体の初期スキャンを実行し、安全なコーディング手法と一般的な脆弱性パターンの理解に基づき、潜在的な脆弱性を特定する。
  3. コンテキストの詳細調査:潜在的な脆弱性ごとに、Vulnhuntr は LLM に対して固有のプロンプトを提供し、より詳細な分析を開始する。LLM は関連ファイルから追加のコンテキストを要求し、ユーザー入力からサーバ側へといたる、データの流れをトレースする。それにより、複数のファイルと機能にまたがる脆弱性を特定できます。
  4. 包括的な脆弱性レポート:Vulnhuntr は、調査結果の概要を記載した詳細なレポートを作成する。このレポートには以下が含まれる:
    • 各ファイルの初期評価結果
    • コンテキスト機能とクラス参照を含む二次評価結果
    • 各脆弱性の信頼性スコア
    • 分析プロセスのログ
    • 検証済みの脆弱性に対するPoC (Proof-of-concept) の悪用
リポジトリで発見された脆弱性の例

Vulnhuntr は、最近のスキャンにおいて、いくつかの著名プロジェクトにおける脆弱性を発見しており、その有効性を示している。

これらの発見が示唆するのは、学術研究ツールの LFI から、機械学習プロジェクトに RCE にいたる幅広い種類の脆弱性を、Vulnhuntr が検出していく可能性である。

制限事項

脆弱性スキャンの分野において、大きな進歩を遂げた Vulnhuntr だが、いくつかの限界もある。

  • Python サポート:現時点では、Vulnhuntr は Python のコードベースのみをサポートしている。
  • 脆弱性クラス:Vulnhuntr が識別できる脆弱性クラスは、LFI/AFO/RCE/XSS/SQLI/SSRF/IDOR などに限定されている。
結論

LLM と静的コード解析を組み合わせる Vulnhuntr は、脆弱性の検出に新たなアプローチをもたらし、高度な分析と詳細な洞察を提供している。コードベースの関連部分から動的にコンテキストを要求する能力により、包括的な検出が可能になっている。また、PoC エクスプロイトと信頼スコアによる最終的な分析により、開発者やセキュリティ・チームに実用的な情報を提供する。

Vulnhuntr を調査し、GitHub から開発にコントリビュートすることも可能である。