Security Recipes
security-recipes.ai
Ищите CVE. Устраняйте уязвимости с помощью AI-агентов. Проверенные факты остаются проверенными, устранение остаётся ограниченным, и каждый план содержит условия проверки, отката и остановки — это контракт живого сайта и этого репозитория.
security-recipes.ai — это сайт на Eleventy для проверенной информации о CVE и устранения уязвимостей с контролем доказательств, который AI-агенты могут использовать, не получая прав на развёртывание или производственную среду.
Проект намеренно узконаправлен:
полная постоянно обновляемая база CVE уровня Medium/High/Critical,
канонические записи по устранению CVE, подтверждённые доказательствами,
практические рецепты устранения уязвимостей,
примеры промптов и файлов правил,
руководства по настройке агентов,
паттерны интеграции MCP,
опциональный read-only MCP-сервер для поиска рецептов и одобренного вышестоящего MCP-контекста,
переиспользуемый GitHub Action, который превращает эти рекомендации в переключаемые проверки здоровья CI.
Это не сканер, не система тикетов, не SOAR-платформа, не инструмент развёртывания и не собственный набор средств безопасности. Существующие инструменты безопасности должны выдавать находки; этот сайт помогает агентам использовать правильный контекст устранения и остановиться в нужный момент.
Начните с живого CVE Database для точной уязвимости или с AI Vulnerability Remediation Playbooks для рабочего процесса от доказательств к патчу. Руководства для конкретных агентов охватывают Codex, Claude Code, Cursor, GitHub Copilot, Devin, Shiba Studio, Hermes Desktop и OpenClaw. Визуальное руководство показывает полный путь от квалификации источника и поискового обнаружения до ограниченного плана, доказательства, отката и проверки человеком. Для отдельной задачи защиты идентичностей, инструментов, коннекторов, контекста, памяти, среды выполнения и средств восстановления агентной системы используйте AI Agent Security.
Текущий продукт и рабочий процесс

Квалифицированное поисковое обнаружение

Полный каталог остаётся доступным для поиска, а публичные канонические страницы CVE ограничены проверенными или подтверждёнными доказательствами записями. Эти страницы содержат уникальные поисковые метаданные, серверно отрендеренные основные факты и доказательства затронутых версий, один авторитет по устранению (сначала стабильные проверенные рекомендации, в противном случае полное обогащение AI со ссылками на источники), короткий промпт для AI-реализации с одобрением, канонические URL, хлебные крошки и структурированные данные Article/TechArticle. База данных CVE описывает каталог как Dataset; столп устранения уязвимостей представляет свой видимый семиэтапный рабочий процесс как HowTo. Разбитые по годам карты сайта CVE содержат только индексируемые канонические маршруты, и сборка завершается ошибкой, если паритет карты сайта, владение каноническими URL, доступность для краулера, лимиты метаданных или ссылки на тот же источник отклоняются.
Индексируемость также не предоставляется массово шаблонизированным дочерним рецептам. 72 рецепта по гигиене кода для разработки и 39 сгенерированных рецептов для фреймворков соответствия остаются доступными для просмотра со своих канонических хабов с noindex,follow, пока они используют общий метод. Ограниченный шлюз схожести отрендеренного тела не позволяет дочернему рецепту снова попасть в карты сайта, пока его доказательства, примеры и тесты не станут существенно отличными. Хабы остаются индексируемыми и несут общий контекст обнаружения.
После релиза, влияющего на SEO, публичная ревизия должна совпадать с merge-коммитом перед отправкой карты сайта или проверкой URL. Руководство по развёртыванию Caddy документирует передачу в Search Console с проверкой DNS, приоритетные проверки живых URL, отправку карты сайта, запросы на индексацию и мониторинг запросов. Отправка — это подсказка для обнаружения; она не гарантирует индексацию или конкретный рейтинг.
Столп устранения уязвимостей также содержит пример публичного репозитория для CVE-2026-13149 в brace-expansion. Он связывает изменение только зависимостей с проверенным pull request, тестами, доказательствами из advisory и путём восстановления, явно отделяя несвязанную работу Fail2Ban из того же PR.
Поиск CVE до канонической записи | Доказательства CVE до ограниченного плана агента |
|
|
Доказательство и проверка человеком | Read-only MCP-контекст |
|
|
Related MCP server: CVE Intelligence MCP Server
Для чего этот проект
AI-агенты для написания кода могут помочь закрыть находки безопасности, когда их работа ограничена: одна находка, один рецепт, один проверенный результат.
security-recipes.ai помогает командам ответить:
Какой рецепт соответствует этой находке?
Какой промпт должен использовать агент?
Куда поместить инструкции для Copilot, Claude, Cursor, Codex или Devin?
Какие MCP-серверы должен читать агент для контекста advisory, сканера, репозитория или runbook?
Что должно быть включено в PR или заметку триажа, прежде чем рецензент доверится ей?
Что входит в поставку
Документационный сайт на Eleventy (быстрая статическая сборка, без Go toolchain).
Домашняя страница обсерватории с приоритетом CVE и база данных CVE с приоритетом данных.
Хабы рецептов для устранения уязвимостей зависимостей, SAST, чувствительных данных, базовых образов, CVE и усиления безопасности по умолчанию.
Политика приёма информации о CVE, промпт, фикстуры и оценщик для маршрутизации сигналов advisory до того, как агент применит патч.
Полный постоянно обновляемый десятилетний каталог CVE уровня Medium/High/Critical, составленный из проверенных на целостность фидов NVD JSON 2.0, метаданных CISA KEV и всех применимых проверенных архетипов устранения. Только проверенные страницы Markdown
stableпереопределяют этот консервативный базовый уровень.Список разрешений для поиска с хешированием целостности, который публикует канонические страницы CVE только для проверенного стабильного Markdown или обогащения AI, прошедшего детерминированный контракт доказательств, готовых к рецепту. Полная база данных остаётся доступной для поиска, даже если запись не подходит для индексации.
Версионированный семиэтапный контракт изменений для каждого CVE в каталоге: обнаружение, оценка, смягчение, устранение, проверка, откат и триаж. Каждое действие объявляет вероятные целевые файлы, границы изменений и одобрений, требуемые доказательства, выходные данные и поведение при сбое, не угадывая патч или исправленную версию.
Структурированная библиотека соответствия, охватывающая 39 фреймворков безопасности, конфиденциальности, гарантий, устойчивости и цепочки поставок ПО, без воспроизведения лицензированного текста контролей. Её хаб фреймворков является поверхностью поиска; шаблонизированные дочерние оценки остаются
noindex,follow, пока не будут дифференцированы.Библиотека из 72 рецептов по гигиене кода, охватывающая кроссязыковые и специфичные для экосистем рабочие процессы аудита, устранения, проверки и условий остановки. Её дочерние страницы для разработки остаются
noindex,follow, пока их тела используют сгенерированный шаблон.Рецепты с сохранёнными существующими коллекциями промптов.
Руководства по настройке агентов для GitHub Copilot, Claude, Cursor, Codex и Devin.
Рекомендации по интеграции MCP для публичных и одобренных организацией источников данных безопасности.
Опциональный read-only FastMCP-сервер в
mcp_server.pyдля поиска рецептов, получения и опционального вышестоящего MCP-контекста.Конфигурация Docker и Docker Compose для локального хостинга или droplet.
Вспомогательные скрипты для обслуживания сайта, валидации, импорта и развёртывания.
Карта репозитория
Путь | Назначение |
| Рецепты, документация, руководства по устранению уязвимостей и страницы настройки агентов. |
| Конфигурация сборки сайта (постоянные ссылки, ленты, страницы тегов). |
| Макеты страниц: оболочка документации и отдельная домашняя страница. |
| Модули сборки: порты шорткодов, генераторы JSON-лент, SEO-заголовки. |
| CSS и JavaScript сайта для браузера рецептов, навигации и вспомогательных инструментов. |
| Изображения, логотипы, схемы и статические ресурсы. |
| Полный сегментированный каталог CVE, индексированная по годам машинная выдача, сжатый индекс поиска для браузера, манифест происхождения и архетипы. |
| Проверенные человеком архетипы устранения уязвимостей, детерминированный кэш AI-обогащения и реестр владения сгенерированными рецептами. |
| Структурированный каталог фреймворков соответствия и реестр источников. |
| Структурированный каталог гигиены кода, реестр источников и тестовые маршрутизирующие данные. |
| Документация репозитория и устаревшие скриншоты; актуальный README и изображения визуального руководства находятся в |
| Опциональный MCP-сервер только для чтения для поиска рецептов и одобренного вышестоящего MCP-контекста. |
| Шаблон конфигурации MCP-сервера. |
| Образ сайта. |
| Опциональный образ MCP-сервера. |
| Локальный стек в производственном стиле. |
| Вспомогательные скрипты для обслуживания и развертывания. |
Основные разделы контента
База данных CVE: данные CVE из проверенных источников, сведения о затронутых версиях и канонические записи об устранении уязвимостей.
Устранение уязвимостей с помощью ИИ: плейбуки, основанные на доказательствах, — от одного результата проверки до проверенного патча или заметки о триаже.
Безопасность ИИ-агентов: моделирование угроз, производственные базовые конфигурации, границы источников, маршрутизация контроля, доказательства и готовность к инцидентам для самой системы ИИ-агента.
Быстрый старт: от одного результата проверки до одного проверенного PR или заметки о триаже.
Сравнение ИИ-агентов: проверенные режимы работы, встроенные инструкции, ожидаемые артефакты, предварительные требования и этапы проверки для Copilot, Claude Code, Cursor, Codex и Devin.
Рецепты: переиспользуемые промпты, инструкции, правила, навыки и контрольные списки проверки.
Интеграция MCP: как безопасно подключать контекст безопасности.
Визуальное руководство: квалифицированный поиск-обнаружение, путь от CVE к плану, доказательства, откат, проверка и MCP только для чтения в пяти диаграммах.
Документация: использование сайта, паттерны потребления агентами и рекомендации по внесению вклада.
Инструменты устранения уязвимостей на Python
Набор Python-инструментов — это опциональный исполнительный компаньон к документации. Он может проверить ограниченное рабочее пространство, выбрать любой из 75 плейбуков устранения уязвимостей, создать долговечный пакет запуска, записать доказательства с хэш-контролем целостности и проверить пакет перед передачей агенту или рецензенту. Он остается локальным и консервативным: он не объединяет код, не развертывает изменения и не вызывает внешние системы самостоятельно.
python scripts/security_recipes_remediation_suite.py playbook list
python scripts/security_recipes_remediation_suite.py playbook inspect \
--playbook vulnerable-dependencies --workspace .
python scripts/security_recipes_remediation_suite.py playbook start \
--playbook vulnerable-dependencies --workspace . \
--finding finding.json --run-dir .security-recipes/runs/dependency-fix
python scripts/security_recipes_remediation_suite.py playbook verify \
--run-dir .security-recipes/runs/dependency-fixРепозиторий также включает генераторы и оценщики для конкретных доменов, предназначенные для плейбуков, которым нужны более насыщенные пакеты доказательств или решения по политикам времени выполнения. Сайт и JSON-реестр остаются полезными и без Python; инструменты делают те же контракты рабочих процессов напрямую исполняемыми CI-системами, оркестраторами и одобренными агентами кодирования.
Полезные помощники развертывания:
scripts/setup_digitalocean_droplet.sh: начальная настройка Ubuntu-дроплета с Docker, усилением защиты хоста и опциональным HTTPS под управлением Caddy.scripts/configure_nginx_letsencrypt.sh: настройка обратного прокси nginx на хосте для команд, которые хотят использовать Let's Encrypt на nginx вместо Caddy.README.nginx-letsencrypt.md: пошаговое руководство для операторов по пути развертывания через nginx.
Рекомендуемая модель работы:
Пусть существующие системы SCA, SAST, секретов, CI, облачные и тикет-системы генерируют результаты проверок.
Прикрепите соответствующий рецепт security-recipes.ai и промпт.
Пусть агент читает только те файлы и MCP-контекст, которые необходимы для данного результата проверки.
Требуйте тесты и проверку человеком перед слиянием.
Держите широкую автоматизацию, права на запись и развертывание за пределами первого цикла.
Руководство и инструменты выполнения
Сайт — это руководство по работе по устранению уязвимостей: рецепты, промпты, настройка агентов, заметки по интеграции MCP/API и паттерны проверки. Автоматизация времени выполнения принадлежит одобренному хост-агенту пользователя, CI-системе, тикет-процессу или платформе сканера, а не чат-боту, размещенному на сайте.
Python-инструменты в scripts/, tools/ и mcp_server.py поддерживают сопровождающих
и самохостинг-пользователей с помощью пакетов выполнения плейбуков, проверки доказательств,
оценки и генерации для конкретных доменов, валидации, импорта рекомендаций,
поиска рецептов и опционального MCP-доступа только для чтения.
Опциональный MCP-сервер
MCP-сервер по умолчанию работает только на чтение. Его базовая роль — позволить MCP-совместимым агентам искать и получать рецепты. Самохостинг-развертывания могут также настроить его как контекстный хаб для одобренных вышестоящих MCP-серверов, не передавая эти учетные данные на публичный сайт.
Полученный контекст никогда не предоставляет полномочий на изменение. Любой коннектор, который может изменять репозитории, тикеты, секреты, развертывания или производственные системы, должен быть настроен и одобрен отдельно вызывающим хостом.
Распространенные инструменты:
recipes_searchrecipes_listrecipes_getrecipes_cve_catalog_inforecipes_cve_searchrecipes_cve_getrecipes_match_findingrecipes_playbooks_listrecipes_playbook_getrecipes_playbook_planrecipes_mcp_upstream_serversrecipes_mcp_upstream_toolsrecipes_mcp_upstream_callrecipes_mcp_upstream_context
MCP-сервер принимает оба сгенерированных фида рецептов:
/api/recipes.json— предпочтительный фид для агентов с категорией, серьезностью, CVE/GHSA, экосистемой и метаданными передачи./recipes-index.jsonпо-прежнему поддерживается для устаревших потребителей./recipes-browser.json— компактный фид интерактивной библиотеки. Страница/recipes/серверно рендерит 18 индексируемых карточек рецептов и точно соответствующий seed для гидратации, затем запрашивает полный фид только когда посетитель фокусируется на поиске, фильтрует, сортирует, переходит по отфильтрованному URL или загружает больше.
Полный каталог CVE также доступен без MCP:
/api/cve-catalog/manifest.jsonобъявляет точную политику даты/серьезности, хэши источников, количество покрытия и инвентаризацию сегментов./api/cve-catalog/runtime-summary.json— небольшой загрузочный файл для браузера с итогами покрытия и версиями кэша, производными от контента, для каждого ресурса времени выполнения./api/cve-catalog/index.json— небольшой манифест для полных разделов по годам публикации в/api/cve-catalog/indexes/. Офлайн- потребители могут загружать только нужные им годы; ни загрузка страницы браузера, ни точный MCP-запрос не разбирают эти разделы./api/cve-catalog/search— ограниченная конечная точка широкого поиска в том же домене. Она привязана к ревизии набора сегментов, объявленнойruntime-summary.json, ограничена по частоте на nginx и возвращает не более 100 предпросмотров. Производственный MCP- образ обслуживает ее из базы данных SQLite FTS только для чтения, построенной и проверенной по целому файлу на соответствие тому же манифесту. Только фокус и неполный идентификаторCVE-YYYY-NNNNне вызывают поисковый запрос./api/cve-catalog/records/{cve}— ограниченная конечная точка точной записи в том же домене. Каждый запрос привязывает ревизию набора сегментов, а MCP-сервис проверяет и открывает только тот детерминированный сегмент, который содержит этот CVE. Текущие браузеры используют эту конечную точку вместо изучения пространства имен сегментов./api/cve-catalog/browser-index.json.gzостается для одного окна совместимости, когда старая сводка времени выполнения не объявляет API поиска и записей. Текущие браузеры не загружают его, когда API объявлены, поэтому посетители больше не платят за передачу полного корпуса или затраты памяти.Канонические страницы CVE серверно рендерят обзор, сведения о затронутых версиях, выбранный авторитет по устранению уязвимостей, передачу реализации и проверки ИИ, источники, происхождение, цитирование и схему. Они не встраивают и не гидратируют приложение каталога. Компактная ссылка на точный gzip-сегмент JSON Lines остается доступной для машиночитаемого происхождения без дополнительного запроса браузера.
/api/cve-catalog/search-indexable.json— компактный список разрешенных канонических страниц CVE с контролем целостности, ссылок на связанные CVE и обнаружения поиска. Его политика принимает только проверенный стабильный Markdown или полное AI-обогащение, проходящее детерминированный контракт доказательств готовности рецепта. Каждый результат браузера ссылается на локальную запись/cve/<ID>/. Разрешенные записи материализуются как индексируемые статические страницы; все остальные записи используют ограниченный рендерер времени выполнения сnoindex,followи сохраняют официальный источник CVE.org в записи./api/cve-catalog/archetypes.jsonсодержит проверенные контракты устранения уязвимостей, используемые для составления консервативного рецепта для каждой записи каталога. Он также содержит версионированную схему действий агента и подсказки по целевым файлам для конкретных экосистем, общие для браузера и MCP-сервера.Каждый раздел сопоставляет каждый CVE в области действия с его сжатым JSONL-сегментом с контролем целостности. Записи сегментов содержат CVSS, CWE, ограниченный CPE, ссылки и происхождение KEV для точного получения CVE.
Чтобы записи оставались ограниченными, сегмент хранит не более 12 строк уязвимых CPE/версий вместе с общим количеством совпадений в источнике и явным флагом усечения; потребители должны следовать доказательствам NVD/вендора, когда этот флаг установлен.
Канонические страницы CVE используют один основной набор ссылок для видимого списка источников и структурированных цитат. Сырые сгенерированные записи допускают NVD, CVE.org, ограниченные записи CISA KEV и привязанные к источникам уведомления вендоров, патчи, примечания к выпускам или меры по смягчению; битые ссылки, ссылки только на сторонние ресурсы, ссылки только на эксплойты и ссылки на общие базы уязвимостей не продвигаются автоматически. Стабильный проверенный Markdown может намеренно цитировать дополнительные HTTPS-доказательства в разделе References. Когда устранение охватывает несколько поддерживаемых веток или семейств продуктов, отображаемое действие сохраняет все доверенные утверждения о исправленных выпусках вместо того, чтобы сводить инструкции к одному неполному обновлению.
Разработочный и принадлежащий каталогу стабильный CVE Markdown не создает отдельной страницы в
чистой статической сборке и исключается из Eleventy и общих каналов рецептов/поиска,
страниц тегов, RSS и карты сайта. Три до-каталожных исторических стабильных
рецепта остаются обычным отображаемым контентом.
Продакшн может сохранить устаревший URL рецепта как редирект на канонический маршрут CVE
через nginx и сервис приземления на базе MCP. Используйте выделенный каталог
или инструменты MCP recipes_cve_* для полного обнаружения.
Путь точного ID в браузере и поисковый API с привязкой к ревизии покрывают каждую запись
уровня Medium, High и Critical, объявленную манифестом. Сервер MCP
предоставляет то же покрытие на базе SQLite через recipes_cve_search; успешный
recipes_cve_get возвращает нормализованную исходную запись, идентификаторы и
ссылки источника, применимые архетипы, составленный контракт по устранению и
самодостаточный agentic_change_plan. План разворачивает каждую инструкцию по смягчению и
устранению в упорядоченные операции с кодом/файлами с требованиями проверки,
отката, доказательств, утверждения и триажа. Он также сохраняет
явные метаданные усечения CPE, когда набор совпадений источника превышает ограниченную
запись.
Ежедневная синхронизация CVE и необязательное обогащение с помощью ИИ
.github/workflows/cve-catalog-sync.yml запускается каждый день в 09:23 UTC и также
может быть запущен вручную. Он проверяет и объединяет годовые
каналы NVD JSON 2.0 и каталог CISA KEV, перегенерирует каждый индекс/шард каталога, проверяет
результат, обновляет детерминированные доказательства, производные от рецептов, в порядке зависимостей,
запускает тесты каталога и открывает или обновляет
automation/cve-catalog-sync как pull request в ветку по умолчанию.
В Settings > Actions > General > Workflow permissions репозитория должно быть разрешено
GitHub Actions создавать pull request для публикации PR при первом запуске.
Установите CVE_AUTO_MERGE_ENABLED=true, чтобы доставить одобренный по безопасности PR каталога после
того, как его точная головная ревизия пройдет выделенный workflow проверки. Когда
CVE_AUTOMATION_APP_CLIENT_ID и секрет CVE_AUTOMATION_APP_PRIVATE_KEY
настроены, workflow предпочитает эту учетную запись GitHub App, чтобы обычные запуски
Build для PR и главной ветки запускались естественным образом. Без учетных данных App
workflow остается автоматическим: после защищенного слияния через GITHUB_TOKEN он проверяет,
что возвращенный SHA слияния все еще является текущим main, затем запускает настоящий
workflow build.yml с этим точным SHA. Шлюз развертывания в продакшне распознает
только эти квалифицированные по CVE запуски Build, поэтому запланированные мониторы и несвязанные
ручные workflow не могут заблокировать или удовлетворить выпуск.
Синхронизация источников не требует секрета. Обзор leftover-gold, обновление
контента, обслуживание ИИ, обслуживание задач ИИ и действие по проверке
безопасности этого репозитория также используют Grok. Добавьте один секрет Actions с именем
XAI_API_KEY (официальная переменная окружения xAI; не используйте
GROK_API_KEY):
gh secret set XAI_API_KEY --repo stevologic/security-recipes.aiWorkflow по умолчанию использует модель Responses API grok-4.6 от xAI и не более 20
новых или измененных по источнику записей за запуск. Запланированная очередь
формируется из отслеживаемого каталога NVD/CISA: кандидат должен иметь действительный тегированный
URL уведомления вендора, патча, примечаний к выпуску или мер по смягчению. Записи с полным источником
остаются подходящими, поскольку им все еще нужен синтез устранения с указанием источников; в пределах
каждой полосы KEV и серьезности они ранжируются выше записей с детерминированными пробелами
в источниках, за которыми следуют доказательства затронутых продуктов/версий и недавность. Это использует
существующий ежедневный бюджет запросов и не требует дополнительного ручного запуска.
И модель, и лимит могут быть изменены с помощью необязательных переменных Actions;
лимит обогащения жестко ограничен от 0 до 50:
gh variable set XAI_MODEL --body "grok-4.6" --repo stevologic/security-recipes.ai
gh variable set XAI_ENRICHMENT_LIMIT --body "20" --repo stevologic/security-recipes.aiВывод ИИ является дополнительным и явно помеченным. Он использует строгий структурированный
вывод, цитирует только URL, фактически возвращенные в провенансе веб-поиска Responses API,
и воспроизводимо хранится в data/cve/ai-enrichments.json. Полное
обогащение становится черновиком Markdown для конкретного CVE только тогда, когда отдельный
шлюз находит доказательства на уровне утверждений по затронутым продуктам, экспозиции, устранению и
проверке, привязанные к точному URL тегированной доверенной ссылки на уведомление вендора.
Каждое требуемое утверждение должно независимо соответствовать этому правилу, и каждый
сгенерированный рецепт требует цитируемого конкретного утверждения о исправленной версии.
Кэшированное обогащение переоценивается, а не становится постоянным: записи, готовые к рецептам, становятся кандидатами на обновление через 30 дней, записи KEV — через 60 дней, а другие полные/неспецифичные записи или записи с недостаточными доказательствами — через 180 дней. Вручную приоритизированный CVE принудительно обновляется в рамках существующего лимита запросов. Последний допустимый кэшированный результат остается прикрепленным, если это обновление не удается; недействительный отпечаток источника остается в режиме fail-closed. Отчет о синхронизации и сводка по здоровью автоматизации показывают количество записей, требующих обновления, и вручную приоритизированных.
Подходящие черновики записываются как файлы maturity: development с именами
content/recipes/cve/ai-enrichment-cve-*.md. Они остаются вне общего обнаружения рецептов
и никогда не переопределяют стабильный проверенный рецепт. Человек-рецензент может
установить ai_enrichment_review_status: human-reviewed-development-draft, чтобы удержать
иначе готовое по доказательствам обогащение от публичного авторитета по устранению, или
ai_enrichment_review_status: approved-for-ai-authority, чтобы одобрить такое использование.
Неаннотированные черновики, принадлежащие генератору, сохраняют автоматический шлюз доказательств, в то время как
стабильный Markdown всегда побеждает. Реестр владения
в data/cve/ai-generated-recipes.json записывает хэш каждого сгенерированного файла;
автоматизация может обновлять или удалять только нетронутый черновик с совпадающим хэшем. Человеческое
редактирование или любой существующий человеческий разработочный/стабильный рецепт для того же CVE делает
этот Markdown принадлежащим человеку и блокирует автоматическую замену. Генерация ИИ никогда
не изменяет исходные факты CVSS/KEV, данные затронутых версий, выбор архетипов или
проверенный стабильный Markdown. Отсутствующий
ключ, отказ API, таймаут или ограничение скорости не блокируют обновление NVD/CISA;
вызовы прекращаются после трех последовательных сбоев или бюджета в 15 минут,
и допустимые кэшированные обогащения остаются прикрепленными. Ручной запуск может приоритизировать именованные
CVE, но эти ID занимают слоты в рамках существующего лимита этого запуска и никогда
не обходят шлюз доказательств готовности к рецепту:
gh workflow run cve-catalog-sync.yml --ref main \
-f ai_enrichment_limit=20 \
-f priority_cve_ids="CVE-2026-58644,CVE-2026-56164"Ручной запуск — это дополнительный запуск workflow и поэтому может делать дополнительные запросы; он не нужен для ежедневной детерминированной очереди. Ручной запуск в ветке, отличной от ветки по умолчанию, загружает свой кэш обогащения, реестр владения и сгенерированные черновики как кратковременный артефакт workflow для проверки.
.github/workflows/leftover-review.yml запускается каждый день в 13:17 UTC и
в реальном времени проверяет остатки CVE leftover-gold против GitHub Advisories и NVD.
Критические и высокие leftover-gold обрабатываются в первую очередь. После их закрытия каждый запуск
проверяет до 100 страниц leftover-gold уровня medium и low, записывает завершенные ID
в data/cve/leftover-review-state.json и открывает помеченный PR с автослиянием.
Задача leftover-review использует Grok Build CLI с XAI_API_KEY и
ничего не делает, когда этот секрет отсутствует или очередь leftover-gold пуста.
Пути выполнения намеренно ограничены для трафика масштаба каталога:
хаб загружается из компактной сводки выполнения, точные поиски вызывают API записей с привязкой к ревизии на том же origin, а поиск по названию/продукту/вендору/фильтру вызывает API поиска только после явного намерения поиска;
широкий поиск возвращает не более 100 предпросмотров из неизменяемой read-only SQLite, имеет трехсекундную границу HTTP и никогда не декодирует полный каталог в процессе посетителя или в главном потоке браузера;
сервис точных записей проверяет и открывает один шард на запрос; точное извлечение MCP использует тот же путь только с шардами, в то время как неточный текстовый поиск использует базу данных SQLite, привязанную к манифесту, за выделенным исполнителем, ограниченной очередью приема, дедлайнами запросов и ограничением скорости nginx;
неизменяемые ключи кэша браузера формируются из объявленного контракта записи/поиска, хэша архетипа и ревизии набора шардов, а не из временной метки вышестоящего источника.
Реализованная граница сборки, модель доставки точных шардов, политика SEO с проверкой доказательств, среда выполнения поиска SQLite и оставшаяся миграция публикации артефактов описаны в CVE scale architecture.
Продакшн-образ собирает артефакт SQLite один раз в кэшированном слое образа,
записывает его независимый sidecar SHA-256 и проверяет схему, ревизию каталога,
количество записей, дайджест манифеста, дайджест файла и репрезентативные пост-индексы FTS при
запуске. RECIPES_MCP_EAGER_CVE_SEARCH теперь применяется только к устаревшему локальному
запасному варианту, когда не настроен путь SQLite. Для устойчивого поискового трафика запускайте
несколько парных экземпляров MCP; точные чтения шардов остаются изолированными от
ограниченного исполнителя текстового поиска и очереди.
Запустите npm run icons после изменения знака сайта. Он перегенерирует непрозрачную
иконку Apple Touch и ресурсы установленного приложения 192/512/maskable, проверяемые
шлюзом производительности продакшна.
Продакшн-сборки предварительно сжимают большие каналы JSON/XML для nginx gzip_static,
проверяют границы обнаружения стабильных/черновых материалов и обеспечивают соблюдение бюджетов
полезной нагрузки/количества файлов с помощью npm run check:performance.
Запустите его с Docker:
docker build -f Dockerfile.mcp-server -t security-recipes-mcp .
docker run --rm -p 8123:80 security-recipes-mcpПодключите MCP-клиент к:
http://localhost:8123/mcpЗапустите его локально с Python:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-mcp-server.txt
python mcp_server.pyАктивация Windows PowerShell:
.\.venv\Scripts\Activate.ps1
python mcp_server.pyЗапуск сайта локально
Предварительные требования:
Node.js
>= 20Python
>= 3.10с установленнымrequirements-mcp-server.txtдля шага предварительного рендеринга CVE в продакшн-сборкеnpm run buildGit
python -m pip install -r requirements-mcp-server.txt
npm install
npm run serveОткройте:
http://localhost:8080npm run serve отслеживает изменения и пересобирает инкрементально. Разовая
продакшн-сборка — это npm run build (вывод попадает в public/). Сборка
выполняет предварительную проверку Python/зависимостей перед удалением существующего вывода, а затем
использует тот же рендерер CVE, что и среда выполнения MCP. Eleventy намеренно
не копирует сквозным образом static/api/cve-catalog/: после материализации страниц
ограниченный пост-сборочный шаг отклоняет ссылки, файлы-сироты, небезопасные пути и
несоответствия байтов/хэшей манифеста перед установкой этого поддерева каталога. Статические
ресурсы вне каталога, включая корневые dot-файлы, сохраняют обычное сквозное
поведение.
Для изолированной сборки каталога установите
SECURITY_RECIPES_CVE_CATALOG_ROOT в его абсолютный каталог публикации.
Данные Eleventy, материализация квалифицированных страниц и проверенная копия каталога
используют этот же корень. npm run serve не перезапускает материализатор или
копию каталога, поэтому сначала один раз запустите npm run build, когда вам нужны канонические
страницы /cve/<ID>/ и дерево API каталога в сервере разработки; последующие
инкрементальные пересборки сохраняют эти пост-сборочные выводы.
Docker Compose
Создайте файл окружения:
cp .env.example .envЗапустите стек:
docker compose up -d --buildИспользуйте плагин Docker Compose v2 (docker compose). Устаревший пакет Python
docker-compose v1 не поддерживается для этого стека; он может аварийно завершиться с
KeyError: 'id' при отслеживании журналов или KeyError: 'ContainerConfig' при
пересоздании контейнеров на новых версиях Docker Engine.
На хостах Ubuntu/Debian установите Compose v2 и совместимый shim с помощью:
sudo bash scripts/install_docker_compose_v2.shМаршруты по умолчанию:
site: http://127.0.0.1:8080/
agent recipe feed: /api/recipes.json
MCP endpoint: /mcpСтек Compose держит публичный сайт и его динамический рендерер CVE/MCP в согласованных парах blue/green:
security-recipes/mcp-server-blue: синий сайт и рендерер.security-recipes-green/mcp-server-green: зелёный сайт и рендерер.mcp-server: переходный синглтон, сохраняемый для первого парного развёртывания и обратно совместимых ручных Compose-процессов. Он читает локально собранную ленту сайта по адресуhttp://security-recipes/api/recipes.json, поэтому форк или droplet обслуживает собственные рецепты, а не зависит от публичного производственного индекса.
deploy.sh запускает и проверяет ревизию MCP-контейнера выводимого слота
перед его контейнером сайта, напрямую проверяет канонический CVE и только затем
допускает пару к Caddy. Ручной запуск Compose сохраняет синглтон по умолчанию,
чтобы первое развёртывание оставалось совместимым с ранее установленным скриптом.
Для обратного прокси nginx или Caddy с Let's Encrypt держите Docker привязанным к
loopback и позвольте прокси владеть публичными портами 80 и 443:
SECURITY_RECIPES_HTTP_PORT=127.0.0.1:8080Затем проксируйте на:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}Если вам нужна готовая настройка хоста nginx + Let's Encrypt, выполните:
sudo bash scripts/configure_nginx_letsencrypt.sh \
--domain security-recipes.ai \
--email admin@security-recipes.aiПолное руководство оператора находится в README.nginx-letsencrypt.md.
DigitalOcean droplet
Для свежего Ubuntu droplet используйте вспомогательный скрипт:
sudo bash scripts/setup_digitalocean_droplet.sh \
--domain security-recipes.ai \
--email admin@security-recipes.aiСкрипт устанавливает Docker/Compose, настраивает заблокированного пользователя приложения, включает базовое
усиление хоста, запускает стек Compose и может разместить Caddy перед ним для
HTTPS. Он также включает jail Fail2Ban с поддержкой Caddy: пять финальных HTTP 404
ответов на пути с высокой вероятностью эксплойт-проб (например, .env, Git,
WordPress, phpMyAdmin или PHPUnit-пробы) от одного клиента в течение пяти секунд
блокируют этот адрес на TCP и HTTP/3 портах сайта на один час, после
чего доступ восстанавливается автоматически. Обычные отсутствующие страницы, промахи в форме CVE
и промахи пагинации архива не расходуют бюджет бана.
Укажите оба DNS-записи apex и www на Droplet перед настройкой. Управляемый
Caddy получает сертификаты для обоих имён и навсегда перенаправляет www на
канонический хост apex; перенаправление только на HTTP оставило бы HTTPS-краулеры
неспособными завершить рукопожатие TLS.
Существующим Droplet нужна эта одноразовая, идемпотентная активация после развёртывания коммита, содержащего jail:
sudo bash scripts/configure_caddy_404_ban.sh
sudo fail2ban-client status security-recipes-caddy-404Если Droplet всё ещё запускает встроенный Caddy со старым именованным томом журнала, сначала
установите SECURITY_RECIPES_TRAFFIC_LOGS_SOURCE=/var/log/caddy в .env, затем
пересоздайте только Caddy один раз в окно обслуживания:
docker compose --profile caddy up -d \
--no-deps --force-recreate --pull never caddy
sudo bash scripts/configure_caddy_404_ban.shФильтр использует структурированный client_ip Caddy, а не подделываемые заголовки
пересылки или значения User-Agent. Если источник позже будет размещён за CDN или
балансировщиком нагрузки, переместите действие бана в WAF/API этого провайдера; межсетевой экран
источника не может напрямую блокировать конечного клиента, чьи пакеты приходят от
доверенного прокси.
Jail не доверяет строкам User-Agent Googlebot. Перед подсчётом публичного
клиента он выполняет обратный, а затем прямой DNS-проверку Google: PTR-имя хоста
должно быть под googlebot.com, и разрешение этого имени должно возвращать тот же
IP. Результаты кэшируются по IP на один час; ошибки поиска и пятисекундный
дедлайн резолвера закрываются с ошибкой, поэтому непроверенный клиент остаётся под
бюджетом 404 для путей сканера.
Для полностью управляемого Compose развёртывания Caddy Fail2Ban может вместо этого работать в
стеке. Установите DEPLOY_COMPOSE_FAIL2BAN=true в .env и держите источник журнала Caddy
на томе по умолчанию caddy_logs (или привязке хоста). При следующем запуске
deploy.sh извлекает, запускает, проверяет работоспособность и затем обновляет контейнер Fail2Ban.
Он также инициализирует файл журнала доступа Caddy перед запуском jail,
потому что Fail2Ban требует, чтобы настроенный файл существовал. Чтобы запустить его вручную
не дожидаясь развёртывания, используйте:
docker compose up -d caddy fail2ban
docker compose exec fail2ban fail2ban-client status security-recipes-caddy-404Контейнер разделяет сетевое пространство имён хоста и имеет только
возможности NET_ADMIN/NET_RAW, необходимые для применения правил nftables jail
к веб-трафику хоста и Docker-пересылке. Не включайте jail Compose, пока
активен jail хоста security-recipes-caddy-404; выберите одного владельца для правил
межсетевого экрана. Это смягчает повторяющееся сканирование 404 на уровне приложения, но
не заменяет вышестоящую защиту от объёмных DDoS или ограничение скорости запросов.
Когда опция false, deploy.sh не требует пакета fail2ban на хосте;
установки, управляемые хостом, остаются ответственностью настройки droplet
и процессов scripts/configure_caddy_404_ban.sh.
Если вы предпочитаете nginx вместо Caddy на droplet, загрузите хост без прокси, а затем запустите вспомогательный скрипт nginx:
sudo bash scripts/setup_digitalocean_droplet.sh --no-caddy
sudo bash scripts/configure_nginx_letsencrypt.sh \
--domain security-recipes.ai \
--email admin@security-recipes.aiДля локального или предварительно проксированного droplet:
sudo bash scripts/setup_digitalocean_droplet.sh --no-caddy --no-firewall --no-upgrade
docker compose up -d --buildЕсли предыдущий запуск docker-compose v1 завершился с KeyError: 'ContainerConfig', обновите Compose и удалите устаревшие контейнеры проекта
перед пересозданием стека:
sudo bash scripts/repair_docker_compose_containerconfig.sh
hash -r
command -v docker-compose
docker-compose versionПроизводственные развёртывания извлекают образы сайта и MCP, адресованные коммитом, опубликованные
обязательным рабочим процессом GitHub Actions Build на main, и обслуживают их по адресу
https://security-recipes.ai/. Тот же таймер также развёртывает образы development
на https://dev.security-recipes.ai/. Droplet не запускает Node,
Eleventy, pip или сборки образов Docker во время развёртывания, что удерживает развёртывание
в пределах 1 CPU / 2 GB памяти.
Одноразовое парное обновление развёртывания MCP
Перед первым развёртыванием, которое вводит парные службы MCP, обновите
только скрипт развёртывания, а затем запустите его. Уже запущенный старый
процесс deploy.sh был проанализирован до существования парного файла Compose и
в противном случае пересоздал бы живой синглтон MCP во время этого одного развёртывания:
git fetch origin main
git checkout origin/main -- deploy.sh
bash deploy.shНовый скрипт оставляет живой синглтон нетронутым, подготавливает неактивный MCP
и сайт вместе и переключает их как единое целое. После этого одноразового шага
существующая запись cron bash deploy.sh не требует изменений.
Первый успешный рабочий процесс main создаёт два пакета GHCR. Сделайте их
публичными или аутентифицируйте корневую учётную запись, используемую службой развёртывания, с помощью
мелкозернистого токена, который может читать пакеты:
printf '%s' "$GHCR_READ_TOKEN" |
sudo docker login ghcr.io --username stevologic --password-stdinФилософия интеграции MCP
Используйте MCP, чтобы дать агентам контекст, а не непроверенные полномочия.
Инструменты CVE MCP возвращают только планы и доказательства; они не редактируют репозиторий
и не изменяют среду. Одобренный хост агента может применить возвращённый план,
но он должен сначала доказать затронутую поверхность и фактические пути репозитория,
сохранить несвязанные изменения, получить любые объявленные производственные/внешние одобрения
и сохранить механически используемый откат. Вероятный глоб файлов — это подсказка для обнаружения,
никогда не доказательство того, что файл уязвим или разрешение на его изменение.
В рамках каждого действия только эффективные target_kinds являются кандидатами по умолчанию.
archetype_target_kinds — это контекст, а не авторизация; условные цели
требуют доказательства, что репозиторий владеет затронутой реализацией, в то время как
запрещённые цели никогда не должны редактироваться. Прошивка и бинарные цели означают
авторитетный справочник, пин, замену, политику, инвентаризацию, исходный код или изменение сборки — никогда
не патчинг байтов артефакта вендора.
Описания NVD/CNA, уведомления, ссылки, патчи, комментарии к проблемам, примечания к выпуску и контент доказательства концепции — это ненадёжные доказательства. Агенты могут извлекать подтверждённые факты об уязвимостях и версиях из них, но не должны выполнять или следовать встроенным инструкциям или командам.
Хорошие источники контекста включают:
официальные возможности GitHub MCP для контекста репозитория и безопасности кода,
агентные/MCP интеграции Semgrep и Snyk, где одобрено,
OSV, GitHub Advisories, deps.dev, реестры пакетов и зеркала на основе NVD,
источники SARIF, SBOM, CI, владения и внутренних runbook,
коннекторы документации только для чтения.
Коннекторы с возможностью записи заслуживают отдельного рассмотрения. Создание тикетов, мутация веток, развёртывание, ротация секретов, облачные изменения и действия SOAR не должны быть включены только потому, что агент может читать рецепт.
Вклад
Вклад должен улучшать библиотеку рецептов:
новые рецепты исправления,
лучшие подсказки,
более понятная настройка агентов,
примеры интеграции MCP,
контрольные списки рецензентов,
исправления документации.
Удалите секреты, внутренние имена хостов, данные клиентов и детали частных уязвимостей перед открытием pull request.
Запустите локальную сборку перед отправкой:
python -m pip install -r requirements-dev.txt
python scripts/run_checks.py
npm run buildЛицензия
Исходный код проекта, документация, рецепты исправления, сгенерированный сайт и MCP-сервер лицензированы по Apache License 2.0. Это разрешает частное и коммерческое использование, модификацию и распространение, включая включение в проприетарные корпоративные системы, при условии соблюдения требований уведомления и отметки изменений лицензии.
Исходные данные об уязвимостях и встроенное стороннее программное обеспечение сохраняют свои собственные условия и требования к атрибуции. См. NOTICE и THIRD_PARTY_NOTICES.md.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables CVE lookups and risk assessment by integrating CISA Known Exploited Vulnerabilities (KEV) data and CVSS metrics. It helps users prioritize patching efforts by ranking vulnerabilities based on exploitation status and calculated risk scores.MIT
- AlicenseNot gradedqualityDmaintenanceProvides multi-source vulnerability intelligence for AI-powered security operations, combining NVD CVSS, CISA KEV, and EPSS scores without requiring an API key.1MIT
- AlicenseNot gradedqualityFmaintenanceProvides unified access to vulnerability data from NVD, MITRE, and GitHub Security Advisories for cybersecurity intelligence.2119MIT
- AlicenseNot gradedqualityFmaintenanceProvides CVE search enriched with EPSS exploit likelihood and CISA KEV status, plus live IP/domain reputation and a real-time threat feed for AI agents.MIT
Related MCP Connectors
CVE search, vulnerability database, EPSS exploit prediction, KEV, IP reputation & threat feed.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stevologic/security-recipes.ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server



