Проекты
ML-инструмент для аннотации патчей CVE: CVE Patch Annotator
Тип участника:
Физическое лицо
Полное наименование организации/физического лица/авторского или творческого коллектива:
Тихомирова Злата Вячеславна
Идея и краткое описание ИТ-проекта:
CVE Patch Annotator — это открытый мультиагентный инструмент на базе больших языковых моделей, автоматизирующий полный цикл аннотирования патчей безопасности. Система принимает на вход Git-коммит с исправлением уязвимости, самостоятельно анализирует исходный код, извлекает его семантику, классифицирует дефект по каталогам CWE и CAPEC, рассчитывает вектор критичности CVSS v3.1 и формирует структурированную запись CVE Record v5.1, совместимую с международным стандартом MITRE и эталонным редактором Vulnogram. Эксперт сохраняет полный контроль через подсистему Human-in-the-Loop: он может скорректировать любой результат, после чего система автоматически пересчитает все зависимые метрики.
Перечень решаемых задач:
- Автоматическое извлечение метаданных и диффов из Git-коммитов (поддержка GitHub, GitLab, локальных репозиториев).
- Статический анализ кода: парсинг унифицированного diff, построение абстрактного синтаксического дерева (AST) для 13 языков программирования, рекурсивный поиск внешних зависимостей.
- Семантический анализ изменённых функций с преобразованием кода в псевдокод в нотации SOURCE–SINK и расстановкой taint-маркеров (SOURCE, SINK, SANITIZER, PROPAGATOR).
- Классификация уязвимости по иерархическому каталогу CWE v4.20 (944 записи) с использованием гибридного retrieval: косинусное сходство эмбеддингов (pgvector) + полнотекстовый BM25 (tsvector) + коэффициент Жаккара.
- Выбор паттерна атаки по каталогу CAPEC v3.9 (615 записей) на основе маппинга CWE–CAPEC с генерацией значения CAPEC-GENERIC при невозможности подбора релевантного паттерна.
- Двухфазный расчёт вектора CVSS v3.1: LLM-гипотеза метрик + детерминированное математическое ядро FIRST с округлением до 0.1.
- Автоматическое определение уязвимых и исправленных версий продукта на основе Git-тегов, а при их отсутствии — путём разбора конфигурационных файлов проекта (package.json, pyproject.toml, Cargo.toml и других).
- Кросс-валидация всей цепочки CWE–CAPEC–CVSS агентом Security Critic с формированием вердикта, списка замечаний и оценки риска регрессии.
- Генерация выходных документов: CVE Record v5.1 (JSON) и аналитический отчёт (Markdown).
Описание функциональных возможностей и элементов проекта:
Архитектура пайплайна. Мультиагентный конвейер из 12 агентов: шесть детерминированных выполняют статический анализ кода (Git Provider, Diff Parser, AST Parser, Context Expander, Version Tracer, Report Builder), шесть LLM-агентов — семантический анализ и классификацию (Unit Analyzer, Architecture Mapper, CWE Classifier, CAPEC Classifier, CVSS Calculator, Security Critic). Агенты работают последовательно под управлением оркестратора, реализующего паттерн Template Method. Состояние сохраняется после каждого агента (атомарные чекпоинты), при сбое сервера выполнение продолжается с места остановки.
Каскадная инвалидация. Формализованная карта зависимостей DOWNSTREAM_MAP обеспечивает автоматический пересчёт downstream-агентов при изменении upstream-результатов. Например, корректировка CWE вызывает пересчёт CAPEC, CVSS, critic и report без перезапуска всего пайплайна.
Human-in-the-Loop. Два режима корректировки: override (принудительная перезапись поля, агент не перезапускается) и retry (перезапуск агента с передачей текстовой обратной связи от аналитика). Ведётся полный аудит решений: снапшоты result_before и result_after, журнал feedback_log с историей всех вмешательств.
Гибридный информационный поиск CWE. Три метрики в одной СУБД: косинусное сходство (pgvector), полнотекстовый BM25 (tsvector с GIN-индексом), коэффициент Жаккара. Итоговая confidence-оценка вычисляется по формуле 0.3 * cosine + 0.3 * BM25 + 0.4 * Jaccard с уровнями HIGH, MEDIUM, LOW, UNRELIABLE. При низкой уверенности результат направляется на HITL-проверку.
Мониторинг и интерфейс. Веб-интерфейс отображает статус каждого из 12 агентов в реальном времени через Server-Sent Events. Прогресс-бар Unit Analyzer показывает число обработанных функций. Цветовое кодирование статусов позволяет мгновенно оценить состояние пайплайна. Все операции корректировки выполняются на месте, без перезагрузки страницы.
Совместимость с Vulnogram. Сгенерированный CVE Record v5.1 успешно загружается в эталонный редактор MITRE. Подтверждена корректность всех обязательных контейнеров JSON-записи.
Каскадная инвалидация. Формализованная карта зависимостей DOWNSTREAM_MAP обеспечивает автоматический пересчёт downstream-агентов при изменении upstream-результатов. Например, корректировка CWE вызывает пересчёт CAPEC, CVSS, critic и report без перезапуска всего пайплайна.
Human-in-the-Loop. Два режима корректировки: override (принудительная перезапись поля, агент не перезапускается) и retry (перезапуск агента с передачей текстовой обратной связи от аналитика). Ведётся полный аудит решений: снапшоты result_before и result_after, журнал feedback_log с историей всех вмешательств.
Гибридный информационный поиск CWE. Три метрики в одной СУБД: косинусное сходство (pgvector), полнотекстовый BM25 (tsvector с GIN-индексом), коэффициент Жаккара. Итоговая confidence-оценка вычисляется по формуле 0.3 * cosine + 0.3 * BM25 + 0.4 * Jaccard с уровнями HIGH, MEDIUM, LOW, UNRELIABLE. При низкой уверенности результат направляется на HITL-проверку.
Мониторинг и интерфейс. Веб-интерфейс отображает статус каждого из 12 агентов в реальном времени через Server-Sent Events. Прогресс-бар Unit Analyzer показывает число обработанных функций. Цветовое кодирование статусов позволяет мгновенно оценить состояние пайплайна. Все операции корректировки выполняются на месте, без перезагрузки страницы.
Совместимость с Vulnogram. Сгенерированный CVE Record v5.1 успешно загружается в эталонный редактор MITRE. Подтверждена корректность всех обязательных контейнеров JSON-записи.
Дата внедрения (в случае, если предполагается запуск проекта в эксплуатацию):
-
Используемые платформы, средства разработки:
Язык и backend: Python 3.13.5, FastAPI (асинхронное выполнение, фоновые задачи asyncio, graceful shutdown с таймаутом 60 секунд).
LLM-интеграция: LangChain (PydanticOutputParser, tool calling), LiteLLM (OpenAI-совместимый прокси к OpenRouter, OpenAI, Anthropic), LangFuse (трассировка и микротелеметрия вызовов).
База данных: PostgreSQL 16 + pgvector (векторное сходство) + tsvector (полнотекстовый BM25 с GIN-индексом) в одной СУБД. Миграции — Alembic. ORM — SQLAlchemy.
Статический анализ: tree-sitter (13 языков, работа с байтовыми смещениями), unidiff (парсинг unified diff).
Веб-интерфейс: HTMX + Alpine.js + Jinja2 (серверный рендеринг, суммарный JS-бандл менее 30 КБ) + PicoCSS (семантическая вёрстка без классов).
Инфраструктура: Docker, Docker Compose (три сервиса: app, postgres, litellm), опциональный LangFuse.
Тестирование: pytest (173 модульных теста), TestClient для API-эндпоинтов.
LLM-интеграция: LangChain (PydanticOutputParser, tool calling), LiteLLM (OpenAI-совместимый прокси к OpenRouter, OpenAI, Anthropic), LangFuse (трассировка и микротелеметрия вызовов).
База данных: PostgreSQL 16 + pgvector (векторное сходство) + tsvector (полнотекстовый BM25 с GIN-индексом) в одной СУБД. Миграции — Alembic. ORM — SQLAlchemy.
Статический анализ: tree-sitter (13 языков, работа с байтовыми смещениями), unidiff (парсинг unified diff).
Веб-интерфейс: HTMX + Alpine.js + Jinja2 (серверный рендеринг, суммарный JS-бандл менее 30 КБ) + PicoCSS (семантическая вёрстка без классов).
Инфраструктура: Docker, Docker Compose (три сервиса: app, postgres, litellm), опциональный LangFuse.
Тестирование: pytest (173 модульных теста), TestClient для API-эндпоинтов.
Стоимость разработки системы:
450 000 (Расчёт выполнен исходя из рыночной стоимости ФОТ одного инженера уровня MLOps/LLM-разработчика за период проектирования архитектуры, реализации 12 агентов, развёртывания гибридной БД, написания 173 модульных тестов и затрат на API-вызовы коммерческих LLM-моделей на этапе R&D.)
Средний размер ежегодных затрат на эксплуатацию:
60 000 (аренда облачного сервера (VPS) - 24 000 руб./год + баланс для ИИ-агентов - 36 000 руб./год)
Перспективы развития:
Проект развивается по модели Open Source. План модернизации на 2026–2027 годы:
- Интеграция с CVE Services API. Прямое сетевое взаимодействие с экосистемой CVE Program для автоматической отправки сгенерированных JSON-записей в международный реестр уязвимостей.
- Ролевая модель (RBAC). Многопользовательская авторизация для разделения зон ответственности: младший аналитик загружает коммит, пайплайн готовит черновик, старший аналитик верифицирует данные.
- Изоляция кода в Docker-песочнице. Запуск Git-операций и анализа кода в изолированных контейнерах для безопасной обработки потенциально вредоносных патчей.
- Масштабирование очереди задач. Внедрение Celery + Redis для распределённого выполнения конвейеров на нескольких процессах-воркерах.
- Расширение поддержки языков. Добавление Java, Go, Rust, JavaScript в Context Expander (A3) для полноценного контекстного анализа в проектах на этих языках.
- Оптимизация архитектуры и повышение детерминированности. Тестирование различных стратегий классификации CWE (гибридный retrieval, чисто векторный поиск, чисто LLM-выбор без retrieval) для выбора оптимальной конфигурации под конкретные классы уязвимостей. Перенос части решений с LLM-агентов на детерминированные алгоритмы там, где это возможно без потери точности.
- Калибровка моделей. Настройка RAG-промптов для исправления систематических отклонений LLM в метриках CVSS (Attack Vector и Privileges Required), выявленных в ходе бенчмарк-тестирования.
- Расширенное бенчмарк-тестирование. Проведение тестов на стратифицированной выборке для получения статистически значимых метрик точности по каждому классу CWE отдельно.
- Исследование альтернативных embedding-моделей. Поиск и оценка моделей, оптимизированных для домена информационной безопасности, включая дообученные на корпусе описаний CWE и CVE.
Достижение поставленных целей:
Проект завершён в статусе стабильного функционального прототипа (MVP). Основной мультиагентный конвейер полностью реализован, контейнеризирован и работоспособен. Все 12 агентов успешно выполняются в рамках конвейера — от приёма Git-коммита до формирования CVE Record v5.1. Сгенерированная JSON-запись проходит валидацию и успешно загружается в Vulnogram. Системное тестирование полного цикла подтвердило корректность взаимодействия всех компонентов.
Надёжность кодовой базы подтверждена 173 модульными тестами (pytest) с общим покрытием 51%. Детерминированные компоненты (Pydantic-схемы, SQLAlchemy-модели) покрыты до 100%, парсеры — до 82%. Для LLM-агентов реализованы тесты отказоустойчивости.
Бенчмарк-тестирование на 30 реальных уязвимостях из GitHub Advisory Database показало: точность классификации CWE — 60% (точное совпадение) и 63% (с учётом близких категорий), CAPEC — 63%, среднеквадратичная ошибка CVSS (RMSE) — 1,46. Полный цикл анализа занимает порядка одного часа, что существенно быстрее ручного аннотирования (от нескольких часов до нескольких дней).
Система формирует CVE Record v5.1, совместимый с Vulnogram, сохраняет контроль эксперта через подсистему Human-in-the-Loop с аудитом решений и каскадной инвалидацией downstream-агентов, допускает независимую доработку агентов благодаря модульной архитектуре и развёртывается одной командой Docker Compose.
Надёжность кодовой базы подтверждена 173 модульными тестами (pytest) с общим покрытием 51%. Детерминированные компоненты (Pydantic-схемы, SQLAlchemy-модели) покрыты до 100%, парсеры — до 82%. Для LLM-агентов реализованы тесты отказоустойчивости.
Бенчмарк-тестирование на 30 реальных уязвимостях из GitHub Advisory Database показало: точность классификации CWE — 60% (точное совпадение) и 63% (с учётом близких категорий), CAPEC — 63%, среднеквадратичная ошибка CVSS (RMSE) — 1,46. Полный цикл анализа занимает порядка одного часа, что существенно быстрее ручного аннотирования (от нескольких часов до нескольких дней).
Система формирует CVE Record v5.1, совместимый с Vulnogram, сохраняет контроль эксперта через подсистему Human-in-the-Loop с аудитом решений и каскадной инвалидацией downstream-агентов, допускает независимую доработку агентов благодаря модульной архитектуре и развёртывается одной командой Docker Compose.
Актуальность, экономическая или социальная полезность:
Актуальность. На июнь 2026 года в NVD содержится более 360 тысяч записей CVE, ежегодно добавляется более 34 тысяч новых. Ручной анализ сложного патча занимает от нескольких часов до нескольких дней, становясь главным узким местом в процессе управления уязвимостями.
Экономическая полезность. Инструмент сокращает время первичного анализа коммита с часов до десятков минут. При стоимости часа работы ИБ-аналитика от 2000 рублей и сокращении времени анализа с 8 часов до 30 минут, экономия на одном сложном патче составляет порядка 15 000 рублей. При обработке 200 патчей в год потенциальный экономический эффект измеряется миллионами рублей.
Социальная полезность. Автоматизация рутины снижает нагрузку на дефицитных специалистов и уменьшает риск пропуска критических уязвимостей в программном обеспечении, от которого зависят миллионы пользователей.
Экономическая полезность. Инструмент сокращает время первичного анализа коммита с часов до десятков минут. При стоимости часа работы ИБ-аналитика от 2000 рублей и сокращении времени анализа с 8 часов до 30 минут, экономия на одном сложном патче составляет порядка 15 000 рублей. При обработке 200 патчей в год потенциальный экономический эффект измеряется миллионами рублей.
Социальная полезность. Автоматизация рутины снижает нагрузку на дефицитных специалистов и уменьшает риск пропуска критических уязвимостей в программном обеспечении, от которого зависят миллионы пользователей.
Адаптивность, стилистическое единство всех функциональных блоков:
Интерфейс адаптивен: корректно отображается на настольных компьютерах и планшетах. Поддерживается бесшовное переключение между тёмной и светлой темами через атрибут data-theme фреймворка PicoCSS, выбор сохраняется в localStorage. Все функциональные блоки — таблицы, формы, кнопки, модальные окна — стилистически единообразны благодаря семантической вёрстке без классов. Ни один элемент интерфейса не требует для работы дополнительных JavaScript-зависимостей, кроме HTMX и Alpine.js.
Масштабируемость, способность к взаимодействию с другими системами, мобильность:
Масштабируемость. Архитектура оркестратора построена на паттерне Chain of Responsibility. Добавление нового агента требует реализации функции шага и регистрации в STEP_ORDER и DOWNSTREAM_MAP без изменения ядра системы. В текущей версии поддерживается одновременное выполнение нескольких конвейеров без взаимных блокировок. Переход к распределённой очереди задач (Celery + Redis) запланирован как направление развития.
Взаимодействие. Система работает с любыми Git-репозиториями (GitHub, GitLab, локальные серверы). Выходной формат JSON v5.1 полностью совместим с Vulnogram — эталонным клиентом MITRE для создания и редактирования CVE-записей.
Мобильность. Полная контейнеризация в Docker Compose: развёртывание одной командой в изолированном контуре на любой серверной ОС.
Взаимодействие. Система работает с любыми Git-репозиториями (GitHub, GitLab, локальные серверы). Выходной формат JSON v5.1 полностью совместим с Vulnogram — эталонным клиентом MITRE для создания и редактирования CVE-записей.
Мобильность. Полная контейнеризация в Docker Compose: развёртывание одной командой в изолированном контуре на любой серверной ОС.
Обоснованность применяемых проектных решений:
FastAPI + asyncio. Обеспечивает асинхронную обработку длительных LLM-вызовов без блокировки интерфейса. Автоматическая OpenAPI-документация. Валидация запросов и ответов через Pydantic — та же библиотека, что используется для схем агентов.
PostgreSQL + pgvector + tsvector. Три функции в одной СУБД: реляционные данные, векторный поиск и полнотекстовый поиск. Отказ от внешних сервисов (Elasticsearch, Pinecone) снижает задержки, упрощает развёртывание и обеспечивает транзакционную целостность.
HTMX + Alpine.js вместо React/Vue. Серверный рендеринг исключает дублирование логики. Суммарный JS-бандл менее 30 КБ. Для задачи мониторинга пайплайна и редактирования результатов полноценный SPA-фреймворк избыточен.
Самописный оркестратор вместо LangGraph. Конвейер линеен — агенты всегда выполняются в одном порядке. LangGraph, ориентированный на произвольные графы с условными переходами, избыточен. Самописный оркестратор не добавляет внешних зависимостей и полностью контролируется кодом.
PostgreSQL + pgvector + tsvector. Три функции в одной СУБД: реляционные данные, векторный поиск и полнотекстовый поиск. Отказ от внешних сервисов (Elasticsearch, Pinecone) снижает задержки, упрощает развёртывание и обеспечивает транзакционную целостность.
HTMX + Alpine.js вместо React/Vue. Серверный рендеринг исключает дублирование логики. Суммарный JS-бандл менее 30 КБ. Для задачи мониторинга пайплайна и редактирования результатов полноценный SPA-фреймворк избыточен.
Самописный оркестратор вместо LangGraph. Конвейер линеен — агенты всегда выполняются в одном порядке. LangGraph, ориентированный на произвольные графы с условными переходами, избыточен. Самописный оркестратор не добавляет внешних зависимостей и полностью контролируется кодом.
Оригинальность, новизна, отличие от аналогов либо отсутствие аналогов:
Проведённый анализ восьми аналогов (PatchWatch, mono, CVE-LMTune, CVSS-BERT, CVE AI Agent, NVIDIA NIM Agent Blueprint, Threat Intelligence Pipeline, Vulnogram) показал: ни одно решение не реализует полный цикл от Git-коммита до CVE Record v5.1. Инструменты анализа кода не генерируют CVE-записи. Модели классификации работают с текстовыми описаниями, но не анализируют исходный код. Редакторы требуют ручного заполнения всех полей.
Новизна проекта:
Новизна проекта:
- Сквозной цикл. Впервые реализована автоматизация полного процесса: от Git-коммита через 12 агентов до CVE Record v5.1, совместимого с Vulnogram.
- Семантическое абстрагирование кода. Детерминированные агенты преобразуют синтаксис кода в псевдокод SOURCE–SINK с taint-маркерами, после чего LLM-агенты работают с семантикой, а не с сырым кодом. Это снижает синтаксический шум и повышает точность классификации.
- Гибридный retrieval CWE. Три метрики (косинусное сходство, BM25 и коэффициент Жаккара) в одном SQL-запросе в одной СУБД. Трёхфакторная confidence-оценка позволяет отличить надёжные предсказания от требующих проверки экспертом.
- Каскадная инвалидация с HITL. Формализованная карта зависимостей DOWNSTREAM_MAP. Изменение одного результата автоматически пересчитывает downstream-агенты. Полный аудит решений со снапшотами до и после каждого вмешательства.
Соответствие дизайн-решения целевой аудитории:
Целевая аудитория — инженеры и аналитики информационной безопасности. Интерфейс использует строгий CSS-фреймворк PicoCSS, исключающий визуальный шум. Цветовое кодирование статусов (зелёный — done, оранжевый — running, красный — error, жёлтый — awaiting_review) позволяет мгновенно оценить состояние пайплайна без чтения текста. Mermaid-диаграмма архитектурного графа встроена непосредственно в интерфейс. Фокус пользователя — на данных и метриках, а не на элементах управления.
Юзабилити и полезность:
Интерфейс включает четыре основных экрана: домашнюю страницу, список анализов с фильтрацией и пагинацией, форму нового анализа с серверной валидацией в реальном времени, страницу анализа с тремя вкладками (Status, Results, Export). Все операции корректировки результатов выполняются на месте через выпадающие формы, без перезагрузки страницы. Статус каждого из 12 агентов обновляется в реальном времени через Server-Sent Events. Прогресс-бар Unit Analyzer показывает число обработанных функций. Toast-уведомления подтверждают успешность операций. Дополнительно реализован CLI-скрипт для демонстрации HITL-взаимодействия в терминале.
Гарантирую достоверность предоставленной в заявке информации. Подтверждаю, что организация не находится в состоянии ликвидации, банкротства, реорганизации (Только для организаций):
Да
Презентация проекта pdf:
Загрузить