Security Recipes
security-recipes.ai
Busca CVEs. Remedia vulnerabilidades con agentes de IA. Los hechos con fuentes se mantienen con fuentes, la remediación se mantiene acotada, y cada plan lleva verificación, rollback y condiciones de detención: el contrato del sitio en vivo y el de este repositorio.
security-recipes.ai es un sitio Eleventy para inteligencia de CVE con fuentes y remediación de vulnerabilidades con puerta de evidencia que los agentes de IA pueden consumir sin heredar autoridad de despliegue o producción.
El proyecto es intencionalmente acotado:
una base de datos CVE completa y continua de severidad Media/Alta/Crítica,
registros canónicos de remediación CVE calificados por evidencia,
recetas prácticas de remediación de seguridad,
ejemplos de prompts y archivos de reglas,
guías de configuración de agentes,
patrones de integración MCP,
un servidor MCP opcional de solo lectura para búsqueda de recetas y contexto MCP ascendente aprobado,
una GitHub Action reutilizable que convierte esta guía en comprobaciones de salud de CI activables.
No es un escáner, sistema de tickets, plataforma SOAR, herramienta de despliegue o kit de seguridad personalizado. Las herramientas de seguridad existentes deberían producir los hallazgos; este sitio ayuda a los agentes a usar el contexto de remediación correcto y detenerse en el momento adecuado.
Comienza con la Base de datos CVE en vivo para una vulnerabilidad exacta o con los Playbooks de remediación de vulnerabilidades con IA para el flujo de trabajo de evidencia a parche. Las guías específicas por agente cubren Codex, Claude Code, Cursor, GitHub Copilot, Devin, Shiba Studio, Hermes Desktop y OpenClaw. La Guía visual muestra el camino completo desde la calificación de fuentes y el descubrimiento de búsqueda hasta un plan acotado, prueba, rollback y revisión humana. Para el problema distinto de asegurar las identidades, herramientas, conectores, contexto, memoria, runtime y controles de recuperación de un sistema de agentes, usa Seguridad de agentes de IA.
Producto y flujo de trabajo actuales

Descubrimiento de búsqueda calificado

El catálogo completo sigue siendo buscable, mientras que las páginas CVE canónicas públicas se limitan a registros revisados o calificados por evidencia. Esas páginas incluyen metadatos de búsqueda únicos, hechos centrales renderizados en el servidor y evidencia de versiones afectadas, una autoridad de remediación (primero guía revisada estable, de lo contrario enriquecimiento de IA completo con enlaces a fuentes), un prompt de implementación de IA corto con puerta de aprobación, URLs canónicas, migas de pan y datos estructurados Article/TechArticle. La base de datos CVE describe el catálogo como un Dataset; el pilar de remediación expone su flujo de trabajo visible de siete pasos como un HowTo. Los sitemaps CVE particionados por año contienen solo rutas canónicas indexables, y la compilación falla cuando la paridad del sitemap, la propiedad canónica, la alcanzabilidad de rastreo, los límites de metadatos o los enlaces de mismo origen se desvían.
La indexabilidad también se retiene de los hijos de recetas generados en masa. Las 72 recetas de higiene de código de desarrollo y las 39 recetas de marcos de cumplimiento generadas permanecen navegables desde sus centros canónicos con noindex,follow mientras comparten un método común. Una puerta de similitud de cuerpo renderizado acotada evita que un hijo vuelva a entrar en los sitemaps hasta que su evidencia, ejemplos y pruebas sean materialmente distintos. Los centros permanecen indexables y llevan el contexto de descubrimiento compartido.
Después de un lanzamiento con impacto en SEO, la revisión pública debe coincidir con el commit de fusión antes del envío del sitemap o la inspección de URL. La guía de despliegue de Caddy documenta la transferencia de Search Console verificada por DNS, las comprobaciones prioritarias de URL en vivo, el envío del sitemap, las solicitudes de indexación y el monitoreo de consultas. El envío es una pista de descubrimiento; no garantiza la indexación ni un ranking particular.
El pilar de remediación también registra un ejemplo de repositorio público para CVE-2026-13149 en brace-expansion. Vincula el cambio solo de dependencia con la solicitud de extracción revisada, las pruebas, la evidencia de aviso y la ruta de recuperación, separando explícitamente el trabajo no relacionado de Fail2Ban del mismo PR.
Búsqueda de CVE a registro canónico | Evidencia de CVE a plan de agente acotado |
|
|
Prueba y revisión humana | Contexto MCP de solo lectura |
|
|
Related MCP server: CVE Intelligence MCP Server
Para qué sirve este proyecto
Los agentes de codificación con IA pueden ayudar a cerrar hallazgos de seguridad cuando su trabajo está acotado: un hallazgo, una receta, una salida revisada.
security-recipes.ai ayuda a los equipos a responder:
¿Qué receta coincide con este hallazgo?
¿Qué prompt debería usar el agente?
¿Dónde pongo las instrucciones para Copilot, Claude, Cursor, Codex o Devin?
¿Qué servidores MCP debería leer el agente para contexto de avisos, escáner, repositorio o runbook?
¿Qué debería incluir la nota de PR o triaje antes de que un revisor la confíe?
Qué incluye
Sitio de documentación Eleventy (compilaciones estáticas rápidas, sin cadena de herramientas Go).
Página de inicio de observatorio centrada en CVE y base de datos CVE centrada en datos.
Centros de recetas para remediación de dependencias, SAST, datos sensibles, imagen base, CVE y endurecimiento predeterminado.
Política de ingesta de inteligencia CVE, prompt, fixtures y evaluador para enrutar señales de avisos antes de que un agente parchee.
Un catálogo CVE completo y continuo de diez años de severidad Media/Alta/Crítica compuesto por feeds NVD JSON 2.0 verificados por integridad, metadatos CISA KEV y cada arquetipo de remediación examinado aplicable. Solo las páginas Markdown
stablerevisadas anulan esa línea base conservadora.Una lista de permitidos de búsqueda con hash de integridad que publica páginas CVE canónicas solo para Markdown estable revisado o enriquecimiento de IA que pase el contrato de evidencia determinista listo para recetas. La base de datos completa sigue siendo buscable incluso cuando un registro no es elegible para indexación de búsqueda.
Un contrato de cambio agéntico versionado de siete fases para cada CVE del catálogo: descubrir, evaluar, mitigar, remediar, verificar, revertir y triar. Cada acción declara objetivos de archivo probables, límites de mutación y aprobación, evidencia requerida, salidas y comportamiento ante fallos sin adivinar un parche o una versión fija.
Una biblioteca de cumplimiento estructurada que abarca 39 marcos de seguridad, privacidad, aseguramiento, resiliencia y cadena de suministro de software sin reproducir texto de control con licencia. Su centro de marcos es la superficie de búsqueda; las evaluaciones hijas con plantilla permanecen
noindex,followhasta que se diferencien.Una biblioteca de higiene de código de 72 recetas que cubre flujos de trabajo de auditoría, remediación, verificación y condiciones de detención específicos de ecosistemas y entre lenguajes. Sus hijos de desarrollo permanecen
noindex,followmientras sus cuerpos comparten una plantilla generada.Recetas con colecciones de prompts existentes preservadas.
Guías de configuración de agentes para GitHub Copilot, Claude, Cursor, Codex y Devin.
Guía de integración MCP para fuentes de datos de seguridad públicas y aprobadas por la organización.
Servidor FastMCP opcional de solo lectura en
mcp_server.pypara búsqueda de recetas, recuperación y contexto MCP ascendente opcional.Configuración de Docker y Docker Compose para alojamiento local o en droplet.
Scripts auxiliares para mantenimiento del sitio, validación, importaciones y despliegue.
Mapa del repositorio
Ruta | Propósito |
| Recetas, documentación, guías de remediación y páginas de configuración de agentes. |
| Configuración de compilación del sitio (permalinks, feeds, páginas de etiquetas). |
| Diseños de página: marco de documentación y la página de inicio independiente. |
| Módulos de compilación: puertos de shortcode, generadores de feeds JSON, cabecera SEO. |
| CSS y JavaScript del sitio para el navegador de recetas, la navegación y las herramientas auxiliares. |
| Imágenes, logotipos, esquemas y recursos estáticos. |
| Catálogo CVE completo fragmentado, índice de máquina particionado por año, índice de búsqueda del navegador comprimido, manifiesto de procedencia y arquetipos. |
| Arquetipos de remediación revisados por humanos, caché determinista de enriquecimiento con IA y registro de propiedad de recetas generadas. |
| Catálogo estructurado de marcos de cumplimiento y registro de fuentes. |
| Catálogo estructurado de higiene de código, registro de fuentes y accesorios de enrutamiento. |
| Documentación del repositorio y recursos de capturas de pantalla heredados; el README actual y las imágenes de la guía visual se encuentran en |
| Servidor MCP opcional de solo lectura para búsqueda de recetas y contexto MCP ascendente aprobado. |
| Plantilla de configuración del servidor MCP. |
| Imagen del sitio. |
| Imagen opcional del servidor MCP. |
| Pila local de estilo producción. |
| Scripts auxiliares para mantenimiento y despliegue. |
Áreas de contenido principales
CVE Database: inteligencia CVE con fuentes, evidencia de versiones afectadas y registros canónicos de remediación.
AI Vulnerability Remediation: guías de ejecución (playbooks) con control de evidencia, desde un hallazgo hasta un parche revisado o una nota de triaje.
AI Agent Security: modelado de amenazas, líneas base de producción, límites de fuentes, enrutamiento de controles, evidencia y preparación para incidentes del propio sistema de agentes de IA.
Quick Start: de un hallazgo a una PR revisada o una nota de triaje.
AI Agent Comparison: modos de funcionamiento verificados, instrucciones nativas, artefactos esperados, requisitos previos y puertas de revisión para Copilot, Claude Code, Cursor, Codex y Devin.
Recipes: indicaciones (prompts) reutilizables, instrucciones, reglas, habilidades y listas de verificación de revisión.
MCP Integration: cómo conectar el contexto de seguridad de forma segura.
Visual Guide: el flujo cualificado de descubrimiento por búsqueda, de CVE a plan, prueba, reversión, revisión y MCP de solo lectura en cinco diagramas.
Docs: uso del sitio, patrones de consumo de agentes y guía de contribución.
Herramientas de remediación en Python
La suite de Python es un compañero de ejecución opcional para la documentación. Puede inspeccionar un espacio de trabajo acotado, seleccionar cualquiera de los 75 playbooks de remediación, crear un paquete de ejecución duradero, registrar evidencia con hash de integridad y verificar el paquete antes de la entrega al agente o al revisor. Sigue siendo local y conservadora: no fusiona código, no despliega cambios ni llama a sistemas externos por sí sola.
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-fixEl repositorio también incluye generadores y evaluadores específicos de dominio para playbooks que necesitan paquetes de evidencia más completos o decisiones de política en tiempo de ejecución. El sitio y el registro JSON siguen siendo útiles sin Python; las herramientas hacen que los mismos contratos de flujo de trabajo sean directamente ejecutables por CI, orquestadores y agentes de codificación aprobados.
Ayudantes de despliegue que conviene conocer:
scripts/setup_digitalocean_droplet.sh: arranque de droplet Ubuntu con Docker, endurecimiento del host y HTTPS opcional gestionado por Caddy.scripts/configure_nginx_letsencrypt.sh: configuración del proxy inverso nginx del host para equipos que prefieren Let's Encrypt en nginx en lugar de Caddy.README.nginx-letsencrypt.md: guía paso a paso centrada en el operador para la ruta de despliegue con nginx.
Modelo operativo recomendado:
Deje que los sistemas existentes de SCA, SAST, secretos, CI, nube y ticketing generen hallazgos.
Adjunte una receta de security-recipes.ai y una indicación (prompt) coincidentes.
Deje que el agente lea únicamente los archivos y el contexto MCP necesarios para el hallazgo.
Exija pruebas y revisión humana antes de la fusión.
Mantenga la automatización amplia, el acceso de escritura y el despliegue fuera del primer bucle.
Guía y herramientas de ejecución
El sitio es una guía para el trabajo de remediación: recetas, indicaciones (prompts), configuración de agentes, notas de integración MCP/API y patrones de revisión. La automatización en tiempo de ejecución pertenece al host de agentes aprobado por el usuario, al sistema de CI, al flujo de trabajo de ticketing o a la plataforma de escáner, y no a un chatbot alojado en el sitio.
Las herramientas de Python en scripts/, tools/ y mcp_server.py ayudan a los
mantenedores y a quienes autoalojan el servicio con paquetes de ejecución de playbooks,
verificación de evidencia, evaluación y generación específicas de dominio, validación, importación
de avisos, búsqueda de recetas y acceso MCP opcional de solo lectura.
Servidor MCP opcional
El servidor MCP es de solo lectura por defecto. Su función básica es permitir que los agentes compatibles con MCP busquen y recuperen recetas. Los despliegues autoalojados también pueden configurarlo como un centro de contexto para servidores MCP ascendentes aprobados, sin exponer esas credenciales en el sitio público.
El contexto recuperado nunca otorga autoridad de mutación. Cualquier conector que pueda modificar repositorios, tickets, secretos, despliegues o sistemas de producción debe configurarse y aprobarse por separado en el host que lo invoca.
Herramientas comunes:
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
El servidor MCP acepta ambos feeds de recetas generados:
/api/recipes.jsones el feed preferido para agentes, con metadatos de categoría, severidad, CVE/GHSA, ecosistema y entrega./recipes-index.jsonsigue siendo compatible para consumidores heredados./recipes-browser.jsones el feed compacto de biblioteca interactiva. La página/recipes/renderiza en el servidor 18 tarjetas de recetas rastreables y una semilla de hidratación exactamente coincidente, y solicita el feed completo solo cuando un visitante enfoca la búsqueda, filtra, ordena, sigue una URL filtrada o carga más contenido.
El catálogo CVE completo también está disponible sin MCP:
/api/cve-catalog/manifest.jsondeclara la política exacta de fecha/severidad, los hashes de las fuentes, los recuentos de cobertura y el inventario de fragmentos./api/cve-catalog/runtime-summary.jsones el pequeño arranque del navegador con totales de cobertura y versiones de caché derivadas del contenido para cada recurso en tiempo de ejecución./api/cve-catalog/index.jsones un manifiesto pequeño para las particiones completas por año de publicación en/api/cve-catalog/indexes/. Los consumidores sin conexión pueden obtener solo los años que necesitan; ni la carga de una página del navegador ni una consulta MCP exacta analizan esas particiones./api/cve-catalog/searches el endpoint acotado de búsqueda amplia de mismo origen. Está fijado a la revisión del conjunto de fragmentos declarada porruntime-summary.json, con límite de velocidad en nginx, y devuelve como máximo 100 vistas previas. La imagen MCP de producción lo sirve desde una base de datos SQLite FTS de solo lectura, construida y verificada archivo por archivo contra el mismo manifiesto. El simple enfoque y un identificadorCVE-YYYY-NNNNincompleto no generan ninguna solicitud de búsqueda./api/cve-catalog/records/{cve}es el endpoint acotado de mismo origen para registros exactos. Cada solicitud fija la revisión del conjunto de fragmentos, y el servicio MCP verifica y abre únicamente el fragmento determinista que contiene ese CVE. Los navegadores actuales usan este endpoint en lugar de conocer el espacio de nombres de fragmentos./api/cve-catalog/browser-index.json.gzpermanece durante una ventana de compatibilidad cuando un resumen de tiempo de ejecución más antiguo no declara las API de búsqueda y registro. Los navegadores actuales no lo descargan cuando las API están declaradas, por lo que los visitantes ya no asumen el coste de transferencia o memoria del corpus completo.Las páginas CVE canónicas renderizan en el servidor su resumen, la evidencia de versiones afectadas, la autoridad de remediación seleccionada, la entrega de implementación y verificación con IA, las fuentes, la procedencia, la cita y el esquema. No incrustan ni hidratan la aplicación del catálogo. Un enlace compacto al fragmento JSON Lines gzip exacto sigue disponible para la procedencia legible por máquina sin añadir una descarga al navegador.
/api/cve-catalog/search-indexable.jsones la lista de permitidos compacta y con hash de integridad para páginas CVE canónicas, enlaces de CVE relacionados y descubrimiento por búsqueda. Su política solo acepta Markdown estable revisado o enriquecimiento completo con IA que supere el contrato determinista de evidencia lista para receta. Cada resultado del navegador enlaza a su registro local/cve/<ID>/. Los registros de la lista de permitidos se materializan como páginas estáticas indexables; todos los demás registros usan el renderizador acotado en tiempo de ejecución connoindex,followy conservan su fuente oficial de CVE.org en el registro./api/cve-catalog/archetypes.jsoncontiene los contratos de remediación revisados que se usan para componer una receta conservadora para cada registro del catálogo. También contiene el esquema versionado de acciones de agentes y las pistas de archivos objetivo específicas de ecosistema compartidas por el navegador y el servidor MCP.Cada partición asigna cada CVE dentro del alcance a su fragmento JSONL comprimido con hash de integridad. Los registros de los fragmentos contienen CVSS, CWE, CPE acotado, referencia y procedencia KEV para la recuperación exacta de CVE.
Para mantener los registros acotados, un fragmento almacena como máximo 12 filas de CPE/versión vulnerables junto con el total de coincidencias de la fuente y una marca explícita de truncamiento; los consumidores deben seguir la evidencia de NVD/proveedor cuando esa marca esté activada.
Las páginas canónicas de CVE usan un conjunto de referencias primarias para la lista de fuentes visible y las citas de datos estructurados. Los registros generados en bruto admiten NVD, CVE.org, registros CISA KEV con alcance, y avisos de proveedor, parches, notas de versión o mitigaciones vinculados a la fuente; los enlaces rotos, de solo terceros, solo de exploits y de bases de datos de vulnerabilidades genéricas no se promocionan automáticamente. El Markdown estable revisado puede citar deliberadamente evidencia HTTPS adicional en su sección de Referencias. Cuando la remediación abarca varias ramas compatibles o familias de productos, la acción mostrada conserva cada afirmación de versión corregida de confianza en lugar de reducir la guía a una única actualización incompleta.
El Markdown de CVE estable de desarrollo y propiedad del catálogo no genera ninguna página independiente en la compilación estática pura y queda excluido de Eleventy y de los feeds genéricos de recetas/búsqueda, páginas de etiquetas, RSS y el mapa del sitio. Las tres recetas estables históricas previas al catálogo siguen siendo contenido renderizado ordinario.
La producción puede conservar una URL de receta heredada como redirección a la ruta canónica de CVE mediante nginx y el servicio de aterrizaje respaldado por MCP. Use el catálogo dedicado o las herramientas MCP recipes_cve_* para un descubrimiento completo.
La ruta de ID exacto del navegador y la API de búsqueda fijada por revisión cubren todos los registros Medium, High y Critical dentro del alcance declarados por el manifiesto. El servidor MCP expone la misma cobertura respaldada por SQLite a través de recipes_cve_search; una llamada exitosa a recipes_cve_get devuelve el registro fuente normalizado, los identificadores y referencias de la fuente, los arquetipos aplicables, el contrato de remediación compuesto y un agentic_change_plan autocontenido. El plan expande cada instrucción de mitigación y remediación en operaciones ordenadas de código/archivo con requisitos de verificación, reversión, evidencia, aprobación y triaje. También conserva los metadatos explícitos de truncamiento de CPE cuando el conjunto de coincidencias de la fuente supera el registro acotado.
Sincronización diaria de CVE y enriquecimiento opcional con IA
.github/workflows/cve-catalog-sync.yml se ejecuta todos los días a las 09:23 UTC y también puede ejecutarse manualmente. Verifica y combina los feeds anuales NVD JSON 2.0 y el catálogo CISA KEV, regenera cada índice/fragmento del catálogo, valida el resultado, actualiza la evidencia determinista derivada de recetas en orden de dependencias, ejecuta las pruebas del catálogo y abre o actualiza automation/cve-catalog-sync como solicitud de extracción a la rama predeterminada.
Los Settings > Actions > General > Workflow permissions del repositorio deben permitir que GitHub Actions cree solicitudes de extracción para la publicación del PR en la primera ejecución.
Establezca CVE_AUTO_MERGE_ENABLED=true para entregar un PR de catálogo aprobado por seguridad después de que su revisión exacta pase el flujo de validación dedicado. Cuando se configuran CVE_AUTOMATION_APP_CLIENT_ID y el secreto CVE_AUTOMATION_APP_PRIVATE_KEY, el flujo prefiere esa identidad de GitHub App para que las ejecuciones ordinarias de Build de PR y rama principal se disparen de forma natural. Sin credenciales de App, el flujo sigue siendo automático: después de la fusión protegida con GITHUB_TOKEN, verifica que el SHA de fusión devuelto sigue siendo el main actual y luego despacha el flujo real build.yml con ese SHA exacto. La puerta de despliegue de producción solo reconoce esos despachos de Build cualificados para CVE, por lo que los monitores programados y los flujos manuales no relacionados no pueden bloquear ni satisfacer una versión.
La sincronización de fuentes no requiere un secreto. La revisión de sobras de oro, la actualización de contenido, el mantenimiento de IA, el mantenimiento de incidencias de IA y la acción de salud de seguridad de este repositorio también usan Grok. Añada un secreto de Actions llamado XAI_API_KEY (la variable de entorno oficial de xAI; no use GROK_API_KEY):
gh secret set XAI_API_KEY --repo stevologic/security-recipes.aiEl flujo usa por defecto el modelo de API Responses grok-4.6 de xAI y como máximo 20 registros nuevos o con cambios de fuente por ejecución. La cola programada se deriva del catálogo NVD/CISA rastreado: un candidato debe tener un aviso de proveedor, parche, nota de versión o URL de mitigación etiquetado y válido. Los registros completos de fuente siguen siendo elegibles porque aún necesitan una síntesis de remediación con fuente; dentro de cada banda KEV y de gravedad se clasifican por delante de los registros con brechas de fuente deterministas, seguidos de la evidencia de producto/versión afectados y la actualidad. Esto usa el presupuesto diario de solicitudes existente y no requiere una ejecución manual adicional. Tanto el modelo como el límite se pueden cambiar con variables opcionales de Actions; el límite de enriquecimiento está acotado estrictamente de 0 a 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.aiLa salida de IA es complementaria y está etiquetada explícitamente. Usa salida estructurada estricta, solo cita URL realmente devueltas en la procedencia de búsqueda web de la API Responses y se almacena de forma reproducible en data/cve/ai-enrichments.json. Un enriquecimiento completo se convierte en un borrador de Markdown específico de CVE solo cuando una puerta separada encuentra evidencia a nivel de afirmación de producto afectado, exposición, remediación y verificación vinculada a la URL exacta de una referencia de aviso de confianza etiquetada. Cada afirmación requerida debe cumplir esa regla de forma independiente, y cada receta generada requiere una afirmación de versión corregida concreta y citada.
El enriquecimiento en caché se reevalúa en lugar de volverse permanente: las entradas listas para receta se convierten en candidatas de actualización después de 30 días, las entradas KEV después de 60 días y otras entradas completas/no específicas o con evidencia insuficiente después de 180 días. Un CVE priorizado manualmente fuerza una actualización dentro del límite de solicitudes existente. El último resultado válido en caché permanece adjunto si esa actualización falla; una huella de fuente no válida permanece en modo de fallo cerrado. El informe de sincronización y el resumen de salud de automatización exponen los recuentos de actualización pendiente y priorización manual.
Los borradores elegibles se escriben como archivos maturity: development llamados content/recipes/cve/ai-enrichment-cve-*.md. Quedan fuera del descubrimiento genérico de recetas y nunca anulan una receta estable revisada. Un revisor humano puede establecer ai_enrichment_review_status: human-reviewed-development-draft para retener un enriquecimiento listo para evidencia de la autoridad pública de remediación, o ai_enrichment_review_status: approved-for-ai-authority para aprobar ese uso. Los borradores sin anotación propiedad del generador conservan la puerta de evidencia automatizada, mientras que el Markdown estable siempre gana. El libro de contabilidad de propiedad en data/cve/ai-generated-recipes.json registra el hash de cada archivo generado; la automatización solo puede actualizar o eliminar un borrador sin modificar que coincida con el hash. Una edición humana, o cualquier receta humana de desarrollo/estable existente para el mismo CVE, hace que ese Markdown sea de propiedad humana y bloquea el reemplazo automatizado. La generación de IA nunca cambia los hechos CVSS/KEV de la fuente, los datos de versiones afectadas, la selección de arquetipos ni el Markdown estable revisado. Una clave faltante, una negativa de API, un tiempo de espera o un límite de velocidad no bloquean la actualización de NVD/CISA; las llamadas se detienen después de tres fallos consecutivos o un presupuesto de 15 minutos, y los enriquecimientos válidos en caché permanecen adjuntos. Una ejecución manual puede priorizar CVEs nombrados, pero esos IDs consumen espacios dentro del límite existente de esa ejecución y nunca omiten la puerta de evidencia lista para receta:
gh workflow run cve-catalog-sync.yml --ref main \
-f ai_enrichment_limit=20 \
-f priority_cve_ids="CVE-2026-58644,CVE-2026-56164"Un despacho manual es una ejecución de flujo adicional y, por lo tanto, puede hacer solicitudes adicionales; no es necesario para la cola determinista diaria. Una ejecución manual en una rama no predeterminada sube su caché de enriquecimiento, libro de contabilidad de propiedad y borradores generados como un artefacto de flujo de corta duración para revisión.
.github/workflows/leftover-review.yml se ejecuta todos los días a las 13:17 UTC y verifica en vivo las sobras de oro de CVE restantes contra GitHub Advisories y NVD. Los críticos y altos de sobras de oro se drenan primero. Después de que esos se cierran, cada ejecución revisa hasta 100 páginas de sobras de oro medias y bajas, registra los IDs completados en data/cve/leftover-review-state.json y abre un PR de auto-fusión etiquetado. El trabajo de revisión de sobras usa el CLI de Grok Build con XAI_API_KEY y no hace nada cuando ese secreto falta o la cola de sobras de oro está vacía.
Las rutas de ejecución están deliberadamente acotadas para tráfico a escala de catálogo:
el hub arranca desde el resumen de ejecución compacto, las búsquedas exactas llaman a la API de registros de mismo origen fijada por revisión, y la búsqueda de título/producto/proveedor/filtro llama a la API de búsqueda solo después de una intención de búsqueda explícita;
la búsqueda amplia devuelve como máximo 100 vistas previas desde SQLite de solo lectura inmutable, tiene un límite HTTP de tres segundos y nunca decodifica el catálogo completo en un proceso de visitante ni en el hilo principal del navegador;
el servicio de registros exactos verifica y abre un fragmento por solicitud; la recuperación exacta de MCP usa la misma ruta de solo fragmentos, mientras que la búsqueda de texto no exacta usa la base de datos SQLite fijada por manifiesto detrás de un ejecutor dedicado, cola de admisión acotada, plazos de consulta y límite de velocidad de nginx;
las claves de caché de navegador inmutables provienen del contrato de registro/búsqueda declarado, el hash de arquetipo y la revisión del conjunto de fragmentos en lugar de una marca de tiempo ascendente.
El límite de compilación implementado, el modelo de entrega de fragmentos exactos, la política de SEO con puerta de evidencia, el tiempo de ejecución de búsqueda SQLite y la migración restante de publicación de artefactos están documentados en Arquitectura de escala de CVE.
La imagen de producción compila el artefacto SQLite una vez en su capa de imagen en caché, registra su sidecar SHA-256 independiente y valida el esquema, la revisión del catálogo, el recuento de registros, el resumen del manifiesto, el resumen del archivo y las publicaciones FTS representativas al inicio. RECIPES_MCP_EAGER_CVE_SEARCH ahora se aplica solo al respaldo local heredado cuando no hay una ruta SQLite configurada. Para tráfico de búsqueda sostenido, ejecute múltiples instancias MCP emparejadas; las lecturas de fragmentos exactos permanecen aisladas del ejecutor de búsqueda de texto acotado y su cola.
Ejecute npm run icons después de cambiar la marca del sitio. Regenera el icono de toque de Apple opaco y los activos de aplicación instalada 192/512/maskable verificados por la puerta de rendimiento de producción.
Las compilaciones de producción precomprimen los feeds JSON/XML grandes para gzip_static de nginx, validan los límites de descubrimiento estable/borrador y aplican presupuestos de carga útil/recuento de archivos con npm run check:performance.
Ejecútelo con Docker:
docker build -f Dockerfile.mcp-server -t security-recipes-mcp .
docker run --rm -p 8123:80 security-recipes-mcpConecte un cliente MCP a:
http://localhost:8123/mcpEjecútelo localmente con Python:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-mcp-server.txt
python mcp_server.pyActivación de Windows PowerShell:
.\.venv\Scripts\Activate.ps1
python mcp_server.pyEjecutar el sitio localmente
Requisitos previos:
Node.js
>= 20Python
>= 3.10conrequirements-mcp-server.txtinstalado para el paso de prerenderizado de CVE denpm run buildde producciónGit
python -m pip install -r requirements-mcp-server.txt
npm install
npm run serveAbra:
http://localhost:8080npm run serve observa los cambios y recompila de forma incremental. Una compilación de producción única es npm run build (la salida se coloca en public/). La compilación realiza una verificación previa de Python/dependencias antes de eliminar una salida existente y luego usa el mismo renderizador de CVE que el tiempo de ejecución de MCP. Eleventy deliberadamente no copia por paso static/api/cve-catalog/: después de la materialización de la página, un paso posterior a la compilación acotado rechaza enlaces, archivos huérfanos, rutas inseguras y discrepancias de bytes/hash del manifiesto antes de instalar ese subárbol del catálogo. Los activos estáticos fuera del catálogo, incluidos los archivos de puntos raíz, conservan el comportamiento normal de paso.
Para una compilación de catálogo aislada, establezca SECURITY_RECIPES_CVE_CATALOG_ROOT en su directorio de publicación absoluto. Los datos de Eleventy, la materialización de páginas cualificadas y la copia validada del catálogo usan esa misma raíz. npm run serve no vuelve a ejecutar el materializador ni la copia del catálogo, así que ejecute npm run build una vez primero cuando necesite páginas canónicas /cve/<ID>/ y el árbol de API del catálogo en el servidor de desarrollo; las recompilaciones incrementales posteriores conservan esas salidas posteriores a la compilación.
Docker Compose
Cree un archivo de entorno:
cp .env.example .envInicie la pila:
docker compose up -d --buildUse el plugin Docker Compose v2 (docker compose). El paquete Python heredado docker-compose v1 no es compatible con esta pila; puede fallar con KeyError: 'id' al seguir los registros o KeyError: 'ContainerConfig' al recrear contenedores en versiones más nuevas de Docker Engine.
En hosts Ubuntu/Debian, instale Compose v2 y un shim de compatibilidad con:
sudo bash scripts/install_docker_compose_v2.shRutas predeterminadas:
site: http://127.0.0.1:8080/
agent recipe feed: /api/recipes.json
MCP endpoint: /mcpLa pila de Compose mantiene el sitio público y su renderizador dinámico de CVE/MCP en pares azul/verde coincidentes:
security-recipes/mcp-server-blue: sitio azul y renderizador.security-recipes-green/mcp-server-green: sitio verde y renderizador.mcp-server: singleton transitorio conservado para el primer despliegue por pares y para flujos de trabajo Compose manuales compatibles con versiones anteriores. Lee el feed del sitio compilado localmente enhttp://security-recipes/api/recipes.json, de modo que un fork o droplet sirve sus propias recetas en lugar de depender del índice público de producción.
deploy.sh inicia y verifica la revisión del contenedor MCP del slot retirado
antes que su contenedor de sitio, valida directamente un CVE canónico y solo
entonces admite el par en Caddy. El arranque manual con Compose conserva el
singleton predeterminado para que el primer despliegue siga siendo compatible
con el script instalado anteriormente.
Para un proxy inverso nginx o Caddy con Let's Encrypt, mantén Docker vinculado
a loopback y deja que el proxy sea el propietario de los puertos públicos 80
y 443:
SECURITY_RECIPES_HTTP_PORT=127.0.0.1:8080Luego haz proxy hacia:
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;
}Si quieres una configuración llave en mano de nginx + Let's Encrypt en el host, ejecuta:
sudo bash scripts/configure_nginx_letsencrypt.sh \
--domain security-recipes.ai \
--email admin@security-recipes.aiLa guía completa del operador está en README.nginx-letsencrypt.md.
Droplet de DigitalOcean
Para un droplet Ubuntu nuevo, usa el script auxiliar:
sudo bash scripts/setup_digitalocean_droplet.sh \
--domain security-recipes.ai \
--email admin@security-recipes.aiEl script instala Docker/Compose, configura un usuario de aplicación
bloqueado, habilita un endurecimiento básico del host, inicia el stack Compose
y puede colocar Caddy delante para HTTPS. También habilita una jaula Fail2Ban
compatible con Caddy: cinco respuestas HTTP 404 finales para rutas de sondeo de
exploits de alta confianza (por ejemplo, sondeos de .env, Git, WordPress,
phpMyAdmin o PHPUnit) desde un mismo cliente en cinco segundos bloquean esa
dirección en los puertos TCP y HTTP/3 del sitio durante una hora, tras lo cual
el acceso se restaura automáticamente. Las páginas inexistentes ordinarias, los
fallos con forma de CVE y los fallos de paginación del archivo no consumen el
presupuesto de bloqueo.
Apunta tanto el registro DNS del apex como el de www al Droplet antes de la
configuración. El Caddy gestionado obtiene certificados para ambos nombres y
redirige permanentemente www al host canónico del apex; redirigir solo en
HTTP dejaría a los rastreadores HTTPS sin poder completar el handshake TLS.
Los Droplets existentes necesitan esta activación única e idempotente después de desplegar el commit que contiene la jaula:
sudo bash scripts/configure_caddy_404_ban.sh
sudo fail2ban-client status security-recipes-caddy-404Si el Droplet sigue ejecutando el Caddy incluido con el antiguo volumen de
registros con nombre, primero establece
SECURITY_RECIPES_TRAFFIC_LOGS_SOURCE=/var/log/caddy en .env y luego recrea
solo Caddy una vez durante una ventana de mantenimiento:
docker compose --profile caddy up -d \
--no-deps --force-recreate --pull never caddy
sudo bash scripts/configure_caddy_404_ban.shEl filtro usa el client_ip estructurado de Caddy, no cabeceras de reenvío
falseables ni valores de User-Agent. Si el origen se coloca más tarde detrás de
una CDN o un balanceador de carga, mueve la acción de bloqueo al WAF/API de ese
proveedor; un firewall de origen no puede bloquear directamente a un cliente
final cuyos paquetes llegan desde un proxy de confianza.
La jaula no confía en las cadenas de User-Agent de Googlebot. Antes de contar a
un cliente público, realiza la comprobación DNS inversa y luego directa de
Google: el nombre de host PTR debe estar bajo googlebot.com, y resolver ese
nombre de host debe devolver la misma IP. Los resultados se cachean por IP
durante una hora; los errores de búsqueda y el plazo de cinco segundos del
resolvedor fallan en modo cerrado, por lo que un cliente no verificado sigue
sujeto al presupuesto de 404 para rutas de escáner.
Para un despliegue Caddy totalmente gestionado por Compose, Fail2Ban puede
ejecutarse en su lugar dentro del stack. Establece DEPLOY_COMPOSE_FAIL2BAN=true
en .env y mantén la fuente de registros de Caddy en el volumen
caddy_logs predeterminado (o un bind al host). En su siguiente ejecución,
deploy.sh extrae, inicia, comprueba el estado y posteriormente actualiza el
contenedor Fail2Ban. También inicializa el archivo de registro de acceso de
Caddy antes de iniciar la jaula porque Fail2Ban requiere que el archivo
configurado exista. Para iniciarlo manualmente sin esperar a un despliegue,
usa:
docker compose up -d caddy fail2ban
docker compose exec fail2ban fail2ban-client status security-recipes-caddy-404El contenedor comparte el namespace de red del host y solo tiene las
capacidades NET_ADMIN/NET_RAW necesarias para aplicar las reglas nftables
de la jaula al tráfico web del host y al reenviado por Docker. No habilites la
jaula Compose mientras la jaula security-recipes-caddy-404 del host esté
activa; elige un único propietario para las reglas del firewall. Esto mitiga el
escaneo repetido de 404 a nivel de aplicación, pero no sustituye a la
protección volumétrica contra DDoS ni a la limitación de velocidad de
solicitudes aguas arriba. Cuando la opción es false, deploy.sh no requiere
el paquete fail2ban del host; las instalaciones gestionadas por el host
siguen siendo responsabilidad de la configuración del droplet y de los flujos
de trabajo de scripts/configure_caddy_404_ban.sh.
Si prefieres nginx en lugar de Caddy en el droplet, arranca el host sin el proxy y luego ejecuta el auxiliar de 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.aiPara un droplet solo local o con proxy previo:
sudo bash scripts/setup_digitalocean_droplet.sh --no-caddy --no-firewall --no-upgrade
docker compose up -d --buildSi una ejecución anterior de docker-compose v1 falló con KeyError: 'ContainerConfig', actualiza Compose y elimina los contenedores obsoletos del
proyecto antes de recrear el stack:
sudo bash scripts/repair_docker_compose_containerconfig.sh
hash -r
command -v docker-compose
docker-compose versionLos despliegues de producción extraen las imágenes de sitio y MCP direccionadas
por commit publicadas por el flujo de trabajo Build de GitHub Actions
requerido en main y las sirven en https://security-recipes.ai/. El mismo
temporizador también despliega las imágenes de development en
https://dev.security-recipes.ai/. El Droplet no ejecuta Node, Eleventy, pip
ni compilaciones de imágenes Docker durante un despliegue, lo que mantiene el
despliegue dentro de un límite de 1 CPU / 2 GB de memoria.
Actualización única del despliegue MCP por pares
Antes del primer despliegue que introduzca los servicios MCP por pares,
actualiza solo el script de despliegue y luego ejecútalo. Un proceso
deploy.sh anterior ya en ejecución se analizó antes de que existiera el
archivo Compose por pares y, de otro modo, recrearía el singleton MCP activo
durante ese despliegue:
git fetch origin main
git checkout origin/main -- deploy.sh
bash deploy.shEl nuevo script deja intacto el singleton activo, prepara juntos el MCP y el
sitio inactivos y los cambia como una sola unidad. Tras este paso único, la
entrada de cron bash deploy.sh existente no necesita cambios.
El primer flujo de trabajo main exitoso crea dos paquetes GHCR. Hazlos
públicos o autentica la cuenta raíz utilizada por el servicio de despliegue con
un token de grano fino que pueda leer paquetes:
printf '%s' "$GHCR_READ_TOKEN" |
sudo docker login ghcr.io --username stevologic --password-stdinFilosofía de integración MCP
Usa MCP para dar contexto a los agentes, no autoridad sin control.
Las herramientas MCP de CVE solo devuelven planes y evidencia; no editan un
repositorio ni cambian un entorno. Un host de agente aprobado puede aplicar el
plan devuelto, pero primero debe demostrar la superficie afectada y las rutas
reales del repositorio, preservar los cambios no relacionados, obtener cualquier
aprobación declarada de producción/externo y conservar un rollback utilizable
mecánicamente. Un glob de archivos probable es una pista de descubrimiento,
nunca una prueba de que un archivo sea vulnerable ni un permiso para
modificarlo. Dentro de cada acción, solo los target_kinds efectivos son
candidatos predeterminados. Los archetype_target_kinds son contexto, no
autorización; los objetivos condicionales requieren prueba de que el
repositorio posee la implementación afectada, mientras que los objetivos
prohibidos nunca deben editarse. Los objetivos de firmware y binarios implican
una referencia autoritativa, un pin, un reemplazo, una política, un inventario,
una fuente o un cambio de compilación, nunca parchear bytes de artefactos del
proveedor.
Las descripciones de NVD/CNA, avisos, enlaces, parches, comentarios de incidencias, notas de versión y contenido de prueba de concepto son evidencia no confiable. Los agentes pueden extraer de ellos hechos corroborados de vulnerabilidad y versión, pero no deben ejecutar ni seguir instrucciones o comandos incrustados.
Las buenas fuentes de contexto incluyen:
capacidades MCP oficiales de GitHub para contexto de repositorio y seguridad de código,
integraciones agénticas/MCP de Semgrep y Snyk donde estén aprobadas,
OSV, GitHub Advisories, deps.dev, registros de paquetes y espejos basados en NVD,
fuentes SARIF, SBOM, CI, propiedad y runbooks internos,
conectores de documentación de solo lectura.
Los conectores con capacidad de escritura merecen una revisión aparte. La creación de incidencias, la mutación de ramas, el despliegue, la rotación de secretos, los cambios en la nube y las acciones SOAR no deberían habilitarse solo porque un agente pueda leer una receta.
Contribuciones
Las contribuciones deberían mejorar la biblioteca de recetas:
nuevas recetas de remediación,
mejores prompts,
una configuración de agentes más clara,
ejemplos de integración MCP,
listas de verificación para revisores,
correcciones de documentación.
Depura secretos, nombres de host internos, datos de clientes y detalles de vulnerabilidades privadas antes de abrir una pull request.
Ejecuta una compilación local antes de enviar:
python -m pip install -r requirements-dev.txt
python scripts/run_checks.py
npm run buildLicencia
El código original del proyecto, la documentación, las recetas de remediación, el sitio generado y el servidor MCP están licenciados bajo la Apache License 2.0. Esto permite el uso privado y comercial, la modificación y la redistribución, incluida la incorporación en sistemas propietarios de empresas, sujeto a los requisitos de aviso y marcado de cambios de la licencia.
Los datos de vulnerabilidad de fuentes y el software de terceros incluido conservan sus propios términos y requisitos de atribución. Consulta NOTICE y 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



