Droid LLM Hunter — Android向けLLM統合脆弱性スキャナ

Security

概要

Droid LLM Hunterは、キーワードベースの単純なスキャンと人間のコードレビューの中間を埋めることを目的に作られた自動化セキュリティ解析ツールです。従来の静的解析で得られるシグネチャやパターン検出に加え、LLMを用いてコードの文脈や意図を解釈し、誤検知を減らすとともに脆弱箇所の説明や修正案を生成します。Smali/Java対応のハイブリッド逆コンパイル、コールグラフに基づくコンテキスト解析、リスクスコアリング機能を備え、開発フローやCIに組み込みやすい設計です。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 4
  • ファイル数: 12
  • メインの言語: Python

主な特徴

  • ハイブリッド逆コンパイル(Smali / Java)を想定した解析パイプライン
  • LLMを用いたコンテキスト解析により誤検知を削減し、自然言語での説明を生成
  • コールグラフとフロー追跡による文脈認識(Context-Aware Analysis)
  • リスクフィルタリングと重要度スコアで実務的な優先順位付け

技術的なポイント

Droid LLM Hunterの技術的な肝は「静的解析の精度向上」にLLMをどう組み合わせるかにあります。まずAPKを逆コンパイルしてSmaliやJavaソースを取り出し、従来型のSASTパターン(シグネチャ、正規表現、ASTベースの検査)で候補箇所を抽出します。そこからコールグラフやデータフロー解析を適用して、問題点が実際に影響範囲(例えばユーザ入力→暗号化処理→ネットワーク送信)に結びつくかを評価し、コンテキストを付与します。

続いてLLMに対しては、抽出したコード片とコールグラフの文脈、関連するコメントやリソースを入力し、脆弱性の可能性、誤検知の根拠、修正方法の自然言語説明を生成させます。リポジトリにあるPrompt-Explanation.mdはこのためのプロンプト設計を示しており、ツール側で使えるテンプレートと期待する出力形式を定義しています。こうした仕組みにより、単なるマッチングによるノイズを減らし、実務で有益な洞察(なぜ危険か、修正案、優先度)を返せるようにしています。

実装はPythonベースでモジュール化されており、解析パイプライン(逆コンパイル→SAST→コールグラフ→LLM評価→レポート生成)をネットワークやCIに組み込める形で設計可能です。プライバシーと安全性の観点から、外部API経由のLLM利用のリスク(コード漏洩やデータ保持)を考慮し、ローカルLLMやオンプレ実行のオプションを推奨する記述があり得ます。またLLMの「幻覚」や誤った推論を検知・抑制するために、複数の根拠(静的解析結果やコールグラフ)と突き合わせるハイブリッド検証が重要です。

制約としては、逆コンパイルの不完全さ、難読化やネイティブコードの扱い、LLMのトークン制限による大規模アプリの解析困難さ、LLM出力の検証コストなどが挙げられます。運用上はCIでの差分解析、検出結果のキャッシュ化、ヒットしたルールのチューニングやプロンプト改善サイクルを回すことで実用性を高めるのが現実的です。将来的にはプラグインアーキテクチャや複数LLMによるアンサンブル評価、動的解析との組合せで精度向上が見込めます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • Diagram.md: file(アーキテクチャや解析フローの図解)
  • LICENSE: file(ライセンス情報)
  • Prompt-Explanation.md: file(LLM用プロンプトと出力フォーマットの説明)
  • README.md: file(プロジェクト概要、インストール、使い方の案内)
  • banner.txt: file(ツール起動時のバナー等)

…他 7 ファイル

まとめ

静的解析とLLMを組合せ、実務で使える脆弱性検出を目指す先進的なプロジェクト。

リポジトリ情報:

READMEの抜粋:

Droid LLM Hunter

Droid LLM Hunter is an automated security analysis tool designed to detect vulnerabilities in Android applications with high precision. By combining traditional static analysis (SAST) with the contextual understanding of Large Language Models (LLMs), it bridges the gap between keyword-based scanning and human-like code review.

It supports Hybrid Decompilation (Smali/Java), Context-Aware Analysis (Call Graphs), and Intelligent Risk Filtering, ensuring that…