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 (присвоение NULL после ExFreePool)
  • Добавление проверок границ (валидация длины перед memcpy)
  • Ужесточение границ пользователь/ядро (ProbeForRead/ProbeForWrite)
  • Защита от целочисленного переполнения (безопасные математические хелперы)
  • Укрепление состояния (interlocked refcounting)
  • Валидация входных данных IOCTL, защита от повреждения пула, проверки привилегий и многое другое.

Ключевые особенности

  • Высокая точность: консервативные правила минимизируют ложные срабатывания
  • Объяснимость: каждое обнаружение включает обоснование и доказательства
  • Осведомлённость о приёмниках (sink-aware): правила учитывают близость к опасным API
  • Модель оценки: ранжирование результатов по эксплуатируемости и достижимости
  • Интеграция с Karton: работает как распределённый сервис в конвейерах анализа вредоносного ПО

Зачем нужен AutoPiff?

Иголка в стоге сена

root@kitploit:~
Вендор выпускает 500 обновлений драйверов в год
├── 490 — функциональные/производительные/косметические изменения
├── 8 — незначительные исправления ошибок
└── 2 — молчаливые исправления безопасности (без CVE)

Без автоматизации: просмотреть 500 вручную, чтобы найти 2
С AutoPiff:      просмотреть 10 с наивысшим рейтингом, чтобы найти 2

Патчи безопасности часто выпускаются без назначения CVE. Ручное реверс-инжиниринг каждого обновления драйвера для поиска изменений, связанных с безопасностью, невозможно. AutoPiff решает эту проблему, автоматически выявляя важные изменения.

Что автоматизирует AutoPiff

Итого: с 4–12 часов на пару драйверов до 2–5 минут

Что по-прежнему требует участия человека

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  АВТОМАТИЗИРОВАНО AutoPiff                                      │
│  ├── Найти иголку: "Эта функция изменилась рядом с ExFreePool"  │
│  ├── Классифицировать: "Похоже на исправление Use-After-Free"   │
│  └── Оценить: "Оценка 5.5 — стоит исследовать"                 │
├─────────────────────────────────────────────────────────────────┤
│  ПО-ПРЕЖНЕМУ ВРУЧНУЮ (Ваша экспертиза)                         │
│  ├── Подтвердить эксплуатируемость: "Могу ли я реально это     │
│      вызвать?"                                                   │
│  ├── Анализ первопричины: "Почему это было уязвимо?"            │
│  ├── Разработка эксплойта: "Как мне достичь этого приёмника?"   │
│  └── Оценка воздействия: "Каков реальный риск?"                │
└─────────────────────────────────────────────────────────────────┘

AutoPiff не заменяет исследования по эксплуатации. Он делает их возможными в масштабе, автоматизируя фазу разведки.

Варианты использования

1. Обнаружение молчаливых исправлений

  • Мониторинг драйверов на предмет исправлений безопасности, выпущенных без CVE
  • Получать оповещения при появлении семантических дельт с высоким рейтингом
  • Выявлять уязвимости до их публичного раскрытия

2. Исследование уязвимостей 1-го дня

  • При объявлении 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 включает 58 правил в 22 категориях. Полные спецификации см. в Docs/semantic_rules.md и техническом справочнике Docs/SEMANTIC_RULES_REFERENCE.md.

Группы приёмников (sink groups)

Движок правил отслеживает более 50 опасных API-символов в 8 группах приёмников:

  • 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), Internal (+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 создаёт JSON-отчёты, прикрепляемые к образцам в MWDB:

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: diff + семантический анализ
│   ├── karton-reachability/       # Этап 5: граф вызовов + декомпиляция
│   ├── karton-ranking/            # Этап 6: оценка
│   ├── karton-report/             # Этап 7: генерация отчёта
│   ├── karton-driver-triage/      # Триаж поверхности атаки DriverAtlas
│   ├── autopiff-alerter/          # Этап 8: оповещения Telegram
│   ├── driver-monitor/            # Этап 0: опрос версий
│   └── dashboard/                 # Веб-интерфейс
├── tests/unit/                    # 137 модульных тестов
├── docker-compose.yml
└── README.md

Интеграция с driver_analyzer

AutoPiff разработан для работы с driver_analyzer, который предоставляет полную производственную инфраструктуру (MWDB, Karton, MinIO, дашборды). Файл сборки driver_analyzer напрямую использует сервисы AutoPiff:

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

См. README driver_analyzer для инструкций по настройке.

Лицензия

Лицензия MIT — подробнее см. в LICENSE.

Благодарности

  • Karton — распределённый фреймворк обработки вредоносного ПО
  • MWDB Core — репозиторий вредоносного ПО
  • Ghidra — фреймворк обратной разработки от АНБ
Скачать инструмент
ЭтапРучная работаС AutoPiffСэкономленное время
Сопоставление версий5–15 мин/драйверАвтоматически~100%
Декомпиляция2–10 мин/бинарникПакетно, параллельно~95%
Сопоставление функций30–60 мин/параМгновенно~100%
Выявление изменений безопасности2–8 ч/параСекунды~99%
Первичная триаж и ранжирование1–2 чМгновенно~100%
Генерация отчёта30–60 минМгновенно~100%
ЭтапСервисЧто делает
0driver-monitorОпрашивает WinBIndex и VirusTotal на предмет новых версий драйверов, загружает в MWDB
1–4karton-patch-differСопоставление версий, декомпиляция в Ghidra, сопоставление функций, оценка семантических правил
5karton-reachabilityBFS графа вызовов Ghidra от точек входа IOCTL/IRP до изменённых функций, экспорт полной декомпиляции
6karton-rankingОценивает результаты с учётом достижимости, семантической серьёзности и поверхности атаки
7karton-reportГенерирует структурированные отчёты в Markdown, загружает в MWDB
8autopiff-alerterОтправляет оповещения в Telegram для результатов с оценкой >= 8.0
—autopiff-driver-triageОценка поверхности атаки DriverAtlas (параллельно этапам 1–4), тегирует образцы в MWDB, оповещения в Telegram
КатегорияПример обнаружения
bounds_checkДобавлена проверка длины перед memcpy
lifetime_fixПрисвоение NULL после ExFreePool
user_boundary_checkДобавлен ProbeForRead/ProbeForWrite
int_overflowИспользование безопасных математических хелперов
state_hardeningОперации interlocked refcount
ioctl_input_validationНовые проверки размера/типа в обработчиках диспетчеризации
pool_type_hardeningМиграция на NonPagedPoolNx
privilege_checkДобавлен SeSinglePrivilegeCheck
ПеременнаяОписаниеПо умолчанию
MWDB_API_URLAPI-эндпоинт MWDB Corehttp://mwdb-core:8080/api/
MWDB_API_KEYAPI-ключ MWDB для загрузок(обязательно)
KARTON_REDIS_HOSTХост Redis для Kartonkarton-redis
AUTOPIFF_GHIDRA_TIMEOUTТайм-аут декомпиляции Ghidra (сек)900
VT_API_KEYAPI-ключ VirusTotal для мониторинга драйверов(опционально)
TELEGRAM_BOT_TOKENТокен бота Telegram для оповещений(опционально)
TELEGRAM_CHAT_IDЧат Telegram для оповещений(опционально)
AUTOPIFF_SCORE_THRESHOLDМинимальная оценка для оповещений в Telegram8.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.yamlВсе 58 правил обнаружения (YAML)
rules/sinks.yaml50+ опасных API-символов, сгруппированных по категориям
rules/scoring.yamlКонфигурация модели оценки
schemas/JSON-схемы для вывода каждого этапа конвейера