Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
AutoPiff — Windowsカーネルドライバパッチの脆弱性修正を検出するためのセマンティック解析エンジン — 58のYAMLルール、Ghidra逆コンパイル、到達可能性トレース、およびスコアリング | Kitploit
ツール/GitHubGitHub/splintersfury/autopiff
静的分析脆弱性分析エクスプロイトリバースエンジニアリングマルウェア分析バイナリ解析ファームウェア解析
GitHubsplintersfury/autopiff

AutoPiff

Windowsカーネルドライバパッチの脆弱性修正を検出するためのセマンティック解析エンジン — 58のYAMLルール、Ghidra逆コンパイル、到達可能性トレース、およびスコアリング

リポジトリを見る
6445ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

AutoPiff

自動パッチインテリジェンス&発見フレームワーク

Windows カーネルドライバパッチにおける脆弱性修正を検出するためのセマンティック解析エンジンです。AutoPiff は保守的な YAML ルールを使用し、高い精度と説明可能性でセキュリティ関連のコード変更を特定します。

概要

AutoPiff は脆弱なドライバとパッチ済みドライバの差分を分析し、以下を自動検出します:

  • Use-After-Free 修正(ExFreePool 後の NULL 代入)
  • 境界チェック追加(memcpy 前の長さ検証)
  • ユーザー/カーネル境界の強化(ProbeForRead/ProbeForWrite)
  • 整数オーバーフロー対策(安全な算術ヘルパー)
  • 状態の強化(インターロックド参照カウント)
  • IOCTL 入力検証、プール破壊ガード、権限チェックなど

主な機能

  • 高精度: 保守的なルールにより誤検知を最小化
  • 説明可能: すべての検出結果に根拠と証拠を付与
  • シンク認識: 危険な API への近接性を考慮
  • スコアリングモデル: 悪用可能性と到達可能性に基づいて結果をランク付け
  • Karton 統合: マルウェア解析パイプライン内で分散サービスとして実行

AutoPiff の必要性

干し草の山から針を探す

root@kitploit:~
ベンダーリリース: 年間 500 件のドライバ更新
├── 490 件は機能/パフォーマンス/外観の変更
├── 8 件は軽微なバグ修正
└── 2 件はサイレントセキュリティ修正(CVE 未割り当て)

自動化なし: 2 件を見つけるために 500 件を手動レビュー
AutoPiff 使用: 2 件を見つけるために上位 10 件をレビュー

セキュリティパッチはしばしば CVE が割り当てられずにリリースされます。すべてのドライバ更新を手動でリバースエンジニアリングしてセキュリティ関連の変更を見つけるのは現実的ではありません。AutoPiff は自動的に関係する変更を浮き彫りにすることでこの問題を解決します。

AutoPiff が自動化するもの

合計: ドライバペアあたり 4~12 時間 → 2~5 分

依然として人間の専門知識が必要な部分

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  AutoPiff が自動化                                              │
│  ├── 針を見つける: 「ExFreePool 付近で関数が変更された」         │
│  ├── 分類: 「Use-After-Free 修正のように見える」                │
│  └── ランク付け: 「スコア 5.5 - 調査価値あり」                   │
├─────────────────────────────────────────────────────────────────┤
│  依然として手動(あなたの専門知識)                              │
│  ├── 悪用可能性の確認: 「実際にトリガーできるか?」              │
│  ├── 根本原因分析: 「なぜ脆弱だったのか?」                      │
│  ├── エクスプロイト開発: 「このシンクにどう到達するか?」        │
│  └── 影響評価: 「現実世界のリスクは?」                          │
└─────────────────────────────────────────────────────────────────┘

AutoPiff はエクスプロイト研究を代替するものではありません。偵察フェーズを自動化することで、規模を問わず実行可能にします。

ユースケース

1. サイレントパッチ検出

  • CVE なしでリリースされるセキュリティ修正のためにドライバを監視
  • 高スコアのセマンティック差分が現れたときにアラート
  • 脆弱性が公開される前にキャッチ

2. 1-Day 脆弱性研究

  • CVE が発表されたら、正確なパッチを迅速に特定
  • パッチパターンと脆弱性クラスを関連付け
  • エクスプロイト開発のタイムラインを加速

3. ベンダーセキュリティ監査

  • ドライバファミリーの全バージョンを経時的に分析
  • 修正がいつ現れたかを示すタイムラインを生成
  • ベンダーが脆弱性にどう対処するかのパターンを特定

4. 過去の CVE コーパス構築

  • 既知の CVE ドライバペアを処理して訓練データを構築
  • 検出ルールを検証・改善
  • パッチシグネチャの知識ベースを作成

アーキテクチャ

AutoPiff は Karton パイプラインとして動作し、8 つの逐次ステージと並列の DriverAtlas トリアージブランチで構成されます。各ステージは独立したマイクロサービスで、Redis/RabbitMQ を介して通信します。

root@kitploit:~
graph LR
    sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Stage 0<br/>Monitor"]
    s0 --> s14["Stages 1-4<br/>Patch Differ"]
    s0 --> triage["DriverAtlas<br/>Triage"]:::triage
    s14 --> s5["Stage 5<br/>Reachability"]
    s5 --> s6["Stage 6<br/>Ranking"]
    s6 --> s7["Stage 7<br/>Report"]
    s6 --> s8["Stage 8<br/>Alerter"]
    triage --> alerts["MWDB Tags<br/>+ Alerts"]:::triage

    classDef src fill:#1a1a2e,stroke:#e94560,color:#eee
    classDef triage fill:#1a1a2e,stroke:#e9a345,color:#eee
    classDef default fill:#16213e,stroke:#0f3460,color:#eee

セマンティックルール

AutoPiff には 22 カテゴリにわたる 58 のルールが含まれています。完全な仕様については Docs/semantic_rules.md を、技術リファレンスについては Docs/SEMANTIC_RULES_REFERENCE.md を参照してください。

シンクグループ

ルールエンジンは 8 つのシンクグループにわたって 50 以上の危険な API シンボルを追跡します:

  • memory_copy: RtlCopyMemory, memcpy, memmove
  • pool_alloc: ExAllocatePool, ExAllocatePoolWithTag
  • pool_free: ExFreePool, ExFreePoolWithTag
  • user_probe: ProbeForRead, ProbeForWrite
  • io_sanitization: RtlULongAdd, RtlSizeTMult
  • exceptions: __try, __except
  • string_copy: strcpy, wcsncpy
  • refcounting: InterlockedIncrement/Decrement

スコアリングモデル

検出結果は設定可能なモデル(rules/scoring.yaml)を使用してスコアリングされます:

root@kitploit:~
final_score = semantic_score + reachability_bonus + sink_bonus - penalties

スコア構成要素:

  • セマンティックスコア: ルール重み × 信頼度 × カテゴリ乗数
  • 到達可能性ボーナス: IOCTL (+4.0), IRP (+2.5), PnP (+2.0), 内部 (+0.5)
  • シンクボーナス: memory_copy (+1.5), user_probe (+1.5), pool_alloc (+1.2)
  • ペナルティ: マッチング品質が低い、ノイズリスクが高い

ゲーティング:

  • 信頼度が 0.45 未満の検出結果は破棄
  • マッチング信頼度が 0.40 未満の場合、スコアは 3.0 に制限

インストール

Karton サービスとして(推奨)

root@kitploit:~
git clone https://github.com/splintersfury/AutoPiff.git
cd AutoPiff
docker compose up -d

MWDB、ダッシュボード、監視を含む本番スタック全体については、driver_analyzer を参照してください。

スタンドアロンライブラリ

root@kitploit:~
pip install pyyaml

from services.karton_patch_differ.rule_engine import SemanticRuleEngine

engine = SemanticRuleEngine('rules/semantic_rules.yaml', 'rules/sinks.yaml')
hits = engine.evaluate(func_name, old_code, new_code, diff_lines)

設定

環境変数

ルールカスタマイズ

rules/semantic_rules.yaml を編集してルールを追加または変更します:

root@kitploit:~
rules:
  - rule_id: my_custom_rule
    category: bounds_check
    confidence: 0.85
    required_signals:
      - sink_group: memory_copy
      - change_type: guard_added
      - guard_kind: length_check
    plain_english_summary: Added length validation before memory copy.

出力形式

AutoPiff は MWDB サンプルに添付される JSON レポートを生成します:

root@kitploit:~
{
  "pairing": {
    "driver_new": {"sha256": "...", "version": "2.0.9.0"},
    "driver_old": {"sha256": "...", "version": "2.0.8.0"},
    "decision": "accept",
    "confidence": 0.95
  },
  "semantic_deltas": {
    "deltas": [
      {
        "function": "HandleIoctl",
        "rule_id": "null_after_free_added",
        "category": "lifetime_fix",
        "confidence": 0.88,
        "sinks": ["pool_free"],
        "final_score": 5.5,
        "why_matters": "Pointer is now set to NULL after freeing memory."
      }
    ],
    "summary": {
      "total_deltas": 1,
      "top_score": 5.5,
      "match_rate": 100.0
    }
  }
}

ドキュメント

プロジェクト構造

root@kitploit:~
AutoPiff/
├── Docs/                          # 設計ドキュメントと仕様
├── ghidra/scripts/                # Ghidra ヘッドレススクリプト
│   └── autopiff_reachability.py   # 到達可能性 BFS + 逆コンパイルエクスポート
├── rules/
│   ├── semantic_rules.yaml        # 58 の検出ルール
│   ├── sinks.yaml                 # 50+ の危険な API シンボル
│   └── scoring.yaml               # スコアリングモデル設定
├── schemas/                       # 各ステージの JSON スキーマ
├── services/
│   ├── karton-patch-differ/       # ステージ 1-4: 差分 + セマンティック解析
│   ├── karton-reachability/       # ステージ 5: コールグラフ + 逆コンパイル
│   ├── karton-ranking/            # ステージ 6: スコアリング
│   ├── karton-report/             # ステージ 7: レポート生成
│   ├── karton-driver-triage/      # DriverAtlas 攻撃対象領域トリアージ
│   ├── autopiff-alerter/          # ステージ 8: Telegram アラート
│   ├── driver-monitor/            # ステージ 0: バージョンポーリング
│   └── dashboard/                 # Web UI
├── tests/unit/                    # 137 のユニットテスト
├── docker-compose.yml
└── README.md

driver_analyzer との統合

AutoPiff は driver_analyzer と連携するように設計されています。driver_analyzer は完全な本番インフラ(MWDB、Karton、MinIO、ダッシュボード)を提供します。driver_analyzer の compose ファイルは AutoPiff サービスを直接ビルドします:

root@kitploit:~
# In driver_analyzer/docker-compose.yml
karton-driver-patch-differ:
  build:
    context: ../AutoPiff
    dockerfile: services/karton-patch-differ/Dockerfile
  volumes:
    - ../AutoPiff/rules:/app/rules:ro

セットアップ手順については driver_analyzer README を参照してください。

ライセンス

MIT ライセンス - 詳細は LICENSE を参照してください。

謝辞

  • Karton - 分散マルウェア処理フレームワーク
  • MWDB Core - マルウェアリポジトリ
  • Ghidra - NSA のソフトウェアリバースエンジニアリングフレームワーク
ツールをダウンロード
フェーズ手動の労力AutoPiff 使用時節約時間
バージョンペアリングドライバあたり 5~15 分自動約100%
逆コンパイルバイナリあたり 2~10 分一括並列処理約95%
関数マッチングペアあたり 30~60 分即時約100%
セキュリティ変更の特定ペアあたり 2~8 時間数秒約99%
初期トリアージとランキング1~2 時間即時約100%
レポート生成30~60 分即時約100%
ステージサービス説明
0driver-monitorWinBIndex と VirusTotal をポーリングして新しいドライババージョンを取得し、MWDB にアップロード
1-4karton-patch-differバージョンペアリング、Ghidra 逆コンパイル、関数マッチング、セマンティックルール評価
5karton-reachabilityGhidra コールグラフ BFS: IOCTL/IRP エントリポイントから変更された関数まで、完全な逆コンパイルエクスポート
6karton-ranking到達可能性、セマンティック重大度、攻撃対象領域を使用して検出結果をスコアリング
7karton-report構造化マークダウンレポートを生成し、MWDB にアップロード
8autopiff-alerterスコア 8.0 以上の検出結果に対して Telegram アラートを送信
—autopiff-driver-triageDriverAtlas 攻撃対象領域スコアリング(1-4 と並列)、MWDB サンプルにタグ付け、Telegram アラート
カテゴリ検出例
bounds_checkmemcpy 前に長さチェックが追加された
lifetime_fixExFreePool 後に NULL 代入
user_boundary_checkProbeForRead/ProbeForWrite が追加された
int_overflow安全な算術ヘルパーの使用
state_hardeningインターロックド参照カウント操作
ioctl_input_validationディスパッチハンドラ内で新しいサイズ/型チェック
pool_type_hardeningNonPagedPoolNx への移行
privilege_checkSeSinglePrivilegeCheck の追加
変数説明デフォルト
MWDB_API_URLMWDB Core API エンドポイントhttp://mwdb-core:8080/api/
MWDB_API_KEYアップロード用 MWDB API キー(必須)
KARTON_REDIS_HOSTKarton 用 Redis ホストkarton-redis
AUTOPIFF_GHIDRA_TIMEOUTGhidra 逆コンパイルのタイムアウト (秒)900
VT_API_KEYドライバ監視用 VirusTotal API キー(省略可)
TELEGRAM_BOT_TOKENアラート用 Telegram ボットトークン(省略可)
TELEGRAM_CHAT_IDアラート送信先 Telegram チャット(省略可)
AUTOPIFF_SCORE_THRESHOLDTelegram アラートの最小スコア8.0
DRIVERATLAS_SCORE_THRESHOLDトリアージアラートの最小攻撃対象領域スコア8.0
ドキュメント説明
Docs/semantic_rules.mdセマンティックルール仕様: ルールの構造と各カテゴリの検出内容
Docs/SEMANTIC_RULES_REFERENCE.mdルールエンジン、評価ロジック、スコアリングの技術リファレンス
Docs/reachability.md到達可能性タグ付け仕様: ディスパッチエントリポイントからのコールグラフ BFS
Docs/reporting.mdレポート出力の仕様と形式
Docs/decisions.md設計上の決定と根拠のログ
rules/semantic_rules.yaml58 すべての検出ルール (YAML)
rules/sinks.yaml50 以上の危険な API シンボル(カテゴリ別にグループ化)
rules/scoring.yamlスコアリングモデル設定
schemas/各パイプラインステージ出力用 JSON スキーマ