Проект представляет собой многоэтапную DevSecOps-систему для анализа утечек секретов в коде. Основная цель — снижение количества false-positive при работе со статическими анализаторами (например, gitleaks) за счёт комбинации:
- контекстных эвристик
- статистического анализа
- ML-модели
- LLM как финального арбитра
Система принимает SARIF-отчёты, анализирует найденные значения и формирует финальный вердикт для каждого finding.
Пайплайн построен по принципу поэтапной фильтрации:
SARIF → Heuristic → ML → LLM → Final Verdict
Этапы:
- Heuristic (Python, FastAPI)
- Контекстные правила (test / mock / example и т.д.)
- Анализ длины и энтропии значения
- Ранний отсев очевидных false-positive
- ML (Go client)
- Классификация секретов
- Применение confidence threshold
- Возможность раннего принятия решения
- LLM (Go client)
- Анализ пограничных и неоднозначных кейсов
- Финальный источник истины для сложных ситуаций
Каждый этап может остановить дальнейшую обработку, если решение принято однозначно.
Fail-fast для очевидных случаев
- Risk-based routing — LLM используется только там, где это действительно необходимо
- Прозрачность решений — фиксируется источник финального вердикта
- Детерминированность — одинаковые входные данные дают одинаковый результат
- server/ — основной backend-сервис (Go)
- оркестрация пайплайна
- работа с SARIF
- интеграция с ML и LLM
- heuristic/ — сервис эвристик (Python, FastAPI)
- контекстный анализ
- энтропийный анализ
- ml_client — клиент ML-модели
- llm_client — клиент LLM-сервиса
Система принимает SARIF-отчёты от статических анализаторов. Для каждого finding используется:
- путь к файлу
- найденное значение
- тип правила (ruleId)
- дополнительная мета-информация
Для каждого finding формируется:
- финальный вердикт (TP / FP)
- источник решения (heuristic / entropy / ml / llm)
- сохранённые метрики (энтропия, длина, confidence)
- статус обработки
Результаты сохраняются в базе данных для дальнейшего анализа.
Проект тестировался на SARIF-наборах с различными сценариями:
- production-секреты
- тестовые и mock-файлы
- низкоэнтропийные значения
- пограничные кейсы
Тестовые отчёты демонстрируют распределение нагрузки между эвристикой, ML и LLM.
- Снижение количества false-positive
- Оптимизация использования ML и LLM
- Повышение объяснимости решений
- Демонстрация архитектурного подхода к DevSecOps
- Go (FIBER)
- Python (FastAPI)
- SARIF
- ML / LLM
- Docker
- PostgreSQL
Проект реализован как прототип и предназначен для демонстрации архитектуры и подходов к интеллектуальной обработке результатов security-сканирования.