
42
Забудь про ручной серфинг по NVD в 3 часа ночи – связка «фиды CVE + EPSS/KEV + LLM-триаж» превращает поиск свежих уязвимостей в конвейер, который сам фильтрует шум и подсовывает тебе только то, что реально стреляет.
Почему ручной мониторинг сдох
Скорость эксплуатации сейчас измеряется часами: например, критическая уязвимость в PraisonAI-агентах ушла в массовую эксплуатацию через 3 часа 44 минуты после публикации, а окно реакции защитников сжалось с 14 дней до буквально нескольких часов. Атакующие уже гоняют LLM тысячами промптов, чтобы рекурсивно анализировать каждый новый CVE и валидировать PoC – APT45 делает это в промышленных масштабах. Если ты всё ещё читаешь бюллетени руками – ты уже проиграл гонку.
Архитектура пайплайна
Рабочая связка строится на трёх слоях: сбор данных, скоринг и авто-триаж через LLM-агента.
cvemap для CLI-поиска по CVE с фильтрами по EPSS/KEV/PoC, плюс официальный NVD API / cve.org для верификации данных CVSS и CWEЛогика фильтра простая – не пропускай CVE в очередь на ручной разбор, пока он не пройдёт 4 вопроса: критичен ли по CVSS, эксплуатируется ли активно (EPSS/KEV), торчит ли актив наружу, и есть ли патч. Именно блендинг CVSS + EPSS + KEV + exposure-контекст даёт автоматизированный триаж, который флагает только реально срочное.
Мини-пайплайн на n8n/Python
Собираешь по крону джобу: тянешь свежие CVE → прогоняешь через EPSS API → фильтруешь по порогу (например EPSS > 0.5 или CVE в KEV) → отправляешь оставшееся в LLM для авто-триажа с контекстом твоего стека.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import requests def fetch_new_cves(): r = requests.get("https://services.nvd.nist.gov/rest/json/cves/2.0", params={"pubStartDate": "2026-07-01T00:00:00.000", "pubEndDate": "2026-07-02T00:00:00.000"}) return r.json().get("vulnerabilities", []) def get_epss(cve_id): r = requests.get(f"https://api.first.org/data/v1/epss?cve={cve_id}") data = r.json().get("data", []) return float(data[0]["epss"]) if data else 0.0 def in_kev(cve_id, kev_list): return cve_id in kev_list def triage_candidate(cve, epss_score, is_kev): return epss_score > 0.5 or is_kev for item in fetch_new_cves(): cve_id = item["cve"]["id"] epss = get_epss(cve_id) if triage_candidate(cve_id, epss, is_kev=False): print(f"⚠️ {cve_id} — EPSS {epss:.2f} — на ручной разбор / LLM-триаж") |
Дальше этот отфильтрованный список кормишь в GPT-подобную модель с промптом: «вот описание CVE, вот наш стек технологий – оцени applicability, дай CVSS-контекст и предположи вектор эксплуатации». На практике LLM уже умеют не просто пересказывать описание, а сравнивать патч-коммит со старой версией, находить диффы уязвимого кода и даже генерировать PoC.
LLM как охотник за 0-day, а не только триажер
Это уже не гипотеза: Google DeepMind CodeMender – агент, который автоматически улучшает безопасность кода и демонстрирует способность находить новые 0-day в хорошо протестированном софте. Equixly показал похожий кейс – их агентный подход к security-тестингу API самостоятельно, без участия человека, нашёл критическую уязвимость CVE-2026-0773.
Ключевое отличие от классических сканеров: ИИ-системы рассуждают о коде семантически, понимают контекст и ловят ранее неизвестные классы багов через поведенческий анализ и предиктивное моделирование, а не через сигнатурный матчинг с базой известных CVE.
Готовые инструменты для триажа
Если не хочешь пилить всё с нуля – есть промышленные решения. Сравнение подходов:
| Инструмент | Что делает | Когда брать |
|---|---|---|
| VK Cloud Security Gate (VK Triage) | AI-ассистент даёт автоматическую оценку срабатывания уязвимости прямо в интерфейсе | Готовая enterprise-платформа, не хочешь свой пайплайн |
| Sber Platform V | Sandbox-триаж: эксперт запускает «Начать триаж», система возвращает CVE, описание и место обнаружения | Интеграция в существующий SOC-процесс |
| cvemap + EPSS/KEV API | CLI-связка для быстрой первичной сортировки CVE перед ручным анализом | DIY-подход, кастомизация под свой стек |
| Standoff Bug Bounty triage team | Ручная верификация багбаунти-репортов за несколько дней | Работа с внешними отчётами, а не фидами CVE |
Что важно не проебать
Автоматизация – это ускоритель, а не панацея: скорость патчинга у уязвимых n8n-инстансов (CVE-2026-33696, RCE через prototype pollution в XML/GSuiteAdmin нодах) показывает, что даже с готовым патчем разрыв в две минорные версии – это уже красный флаг для немедленного апдейта. Держи чеклист простым: проверяй версию по каждому фреймворку, сравнивай с патченной на GitHub, и если разрыв больше двух минорных версий – обновляй сегодня, а не «на следующем спринте».