La desconexión entre las decisiones de diseño de seguridad y su implementación en el código es un problema persistente en el desarrollo de software a gran escala. Históricamente, los modelos de amenazas y los requisitos de seguridad se documentan en sistemas separados del código, lo que dificulta que los ingenieros y revisores verifiquen la adherencia durante la revisión de código. Este problema se agrava por el tiempo transcurrido entre el diseño y la implementación, y la dependencia de la memoria humana o enlaces manuales.

Este artículo aborda la necesidad fundamental de asegurar la trazabilidad y la coherencia entre la intención de diseño y la ejecución. Propone una solución que automatiza la contextualización de las revisiones de código con los requisitos de seguridad relevantes, utilizando capacidades de búsqueda semántica y razonamiento de modelos de lenguaje, para cerrar esta brecha y reducir los riesgos de seguridad derivados de implementaciones inconsistentes.

Arquitectura del Sistema

El sistema se basa en tres componentes principales: la plataforma Dash, el Model Context Protocol (MCP) y modelos de lenguaje fundacionales. Dash actúa como un índice unificado de contenido organizacional, incluyendo modelos de amenazas y documentación de ingeniería, utilizando capacidades de búsqueda semántica para recuperar información relevante basada en el significado, no solo en palabras clave exactas.

Cuando se abre un pull request (PR) para revisión de código, un agente de seguridad invoca el servidor MCP de Dash. MCP permite al agente acceder y leer el contenido indexado por Dash, obteniendo los modelos de amenazas y otros documentos de soporte pertinentes al cambio de código. Posteriormente, un modelo de lenguaje fundacional examina conjuntamente los requisitos documentados en el modelo de amenazas y el código propuesto en el PR. Este modelo es capaz de razonar sobre la relación entre ambos, identificando, por ejemplo, si un requisito de autenticación en un endpoint especificado en el modelo de amenazas se cumple en el código. Los resultados se presentan directamente en el flujo de trabajo de revisión de código, integrándose con las herramientas existentes de los desarrolladores.

Flujo de Verificación de Seguridad en Revisión de Código

  1. 1 Ingeniero Abre un Pull Request (PR) con cambios de código.
  2. 2 Agente de Seguridad Detecta nuevo PR y activa el proceso de verificación.
  3. 3 Dash (Servidor MCP) Recibe consulta del agente, realiza búsqueda semántica de modelos de amenazas...
  4. 4 Dash (Índice de Contenido) Proporciona modelos de amenazas y documentación de soporte al agente.
  5. 5 Modelo Fundacional Compara requisitos del modelo de amenazas con el código del PR.
  6. 6 Modelo Fundacional Identifica posibles brechas o inconsistencias de seguridad.
  7. 7 Agente de Seguridad Publica hallazgos y recomendaciones en el PR.
  8. 8 Revisor Humano Evalúa hallazgos del modelo y toma decisión final sobre el PR.
CapaTecnologíaJustificación
data-processing Dash Plataforma de indexación y búsqueda semántica de contenido organizacional (modelos de amenazas, documentación).
messaging Model Context Protocol (MCP) Protocolo para que los agentes de IA accedan y recuperen contenido indexado por Dash.
compute Foundational Large Language Models Modelos de IA para razonar sobre la relación entre documentos (modelos de amenazas) y código (PRs), identificando inconsistencias.

Trade-offs

Ganancias
  • Trazabilidad de requisitos de seguridad
  • Detección temprana de brechas de seguridad
  • Reducción de la carga manual en revisores
  • Consistencia entre diseño y código
Costes
  • Potenciales falsos positivos del modelo de lenguaje
  • Dependencia de la calidad de los modelos de amenazas originales
  • Costos computacionales de los modelos de lenguaje fundacionales

Fundamentos Teóricos

Este problema de coherencia entre especificación y verificación tiene raíces profundas en la ingeniería de software y la verificación formal. Conceptos como la 'verificación de propiedades' y la 'trazabilidad de requisitos' han sido estudiados extensamente en la academia. El trabajo de Parnas sobre la separación de preocupaciones y la ocultación de información, aunque no directamente sobre seguridad, subraya la importancia de interfaces claras y la gestión de dependencias para la mantenibilidad y corrección del software. La aplicación de modelos de lenguaje para 'razonar' sobre la relación entre documentos y código puede verse como una evolución de los sistemas de verificación de requisitos, que tradicionalmente dependían de anotaciones formales o lenguajes de especificación, hacia un enfoque más flexible y semántico, aprovechando los avances en el procesamiento del lenguaje natural y la inteligencia artificial.