Descripción del modelado de amenazas

Completado

El modelado de amenazas es un elemento básico del ciclo de vida de desarrollo de seguridad (SDL) de Microsoft y una práctica de seguridad fundamental para crear aplicaciones seguras. Es una técnica de ingeniería que le ayuda a identificar sistemáticamente amenazas, ataques, vulnerabilidades y contramedidas que podrían afectar a la aplicación.

¿Qué es el modelado de amenazas?

Propósito: El modelado de amenazas proporciona un enfoque estructurado para comprender los riesgos de seguridad en la aplicación. En lugar de esperar que haya pensado en todos los posibles problemas de seguridad, el modelado de amenazas le guía a través de un proceso sistemático para identificar y abordar amenazas.

Beneficios: Puede usar el modelado de amenazas para:

  • Modelar el diseño de aplicaciones informáticas: Influye en las decisiones de arquitectura en función de las consideraciones de seguridad en lugar de añadir seguridad como algo secundario.
  • Cumplir los objetivos de seguridad: Asegúrese de que la aplicación cumple los objetivos de seguridad y los requisitos de cumplimiento de su organización.
  • Reducir el riesgo: Reduzca sistemáticamente los riesgos de seguridad mediante la identificación y el direccionamiento de amenazas durante el diseño en lugar de detectarlos en producción.
  • Priorizar el trabajo de seguridad: Centrar los esfuerzos de seguridad en las amenazas más importantes en lugar de tratar todo a la vez.
  • Comunicar problemas de seguridad: Proporcione un lenguaje común para que los desarrolladores, los equipos de seguridad y las partes interesadas analicen la seguridad.

Accesibilidad: El enfoque se ha diseñado pensando en expertos que no son de seguridad. El modelado de amenazas es accesible para todos los desarrolladores, no solo para los especialistas en seguridad, a través de instrucciones claras sobre cómo crear y analizar modelos de amenazas.

Proceso de modelado de amenazas de cinco fases

El modelado de amenazas sigue un proceso sistemático de cinco fases:

Diagrama que muestra las cinco fases de modelado de amenazas: definir requisitos de seguridad, Arquitectura de la aplicación de diagrama, Identificar amenazas, Mitigar amenazas y Validar mitigaciones.

1. Definir los requisitos de seguridad

Establecer objetivos de seguridad: Antes de analizar las amenazas, aclare qué significa seguridad para la aplicación:

Requisitos de confidencialidad:

  • ¿Qué datos deben permanecer confidenciales?
  • ¿Quién debe tener acceso a información confidencial?
  • ¿Cuánto tiempo deben permanecer confidenciales los datos?
  • ¿Cuáles son las consecuencias de las infracciones de confidencialidad?

Requisitos de integridad:

  • ¿Qué datos o operaciones deben protegerse frente a modificaciones no autorizadas?
  • ¿Cómo detecta si se han alterado los datos?
  • ¿Cuáles son las consecuencias de las infracciones de integridad?

Requisitos de disponibilidad:

  • ¿Qué garantías de disponibilidad se necesitan?
  • ¿Cuál es el tiempo de inactividad aceptable para distintos componentes?
  • ¿Cuál es el impacto empresarial de la falta de disponibilidad?

Requisitos de cumplimiento:

  • ¿Qué requisitos normativos se aplican (RGPD, HIPAA, PCI DSS, etc.)?
  • ¿Qué estándares del sector deben cumplirse (ISO 27001, SOC 2, etc.)?
  • ¿Qué obligaciones contractuales de seguridad existen con los clientes?

Requisitos de ejemplo: "La información de pago del cliente debe permanecer confidencial. Solo los sistemas de procesamiento de pagos autorizados pueden acceder a estos datos. Se debe registrar todo el acceso con fines de auditoría. Los datos deben cifrarse en tránsito y en reposo".

2. Creación de un diagrama de aplicación

Visualización de la arquitectura: Cree un diagrama que represente la arquitectura de la aplicación, que muestra:

Componentes del sistema:

  • Servidores web, servidores de aplicaciones, bases de datos, microservicios.
  • Los servicios externos y las API de los que depende tu aplicación.
  • Sistemas de autenticación y autorización.
  • Equilibradores de carga, capas de almacenamiento en caché, colas de mensajes.

Flujos de datos:

  • Cómo se mueven los datos entre componentes.
  • Qué datos transmite cada conexión.
  • Dirección del flujo de datos.
  • Puntos de transformación de datos.

Límites de seguridad:

  • Límites de confianza en los que cambian los niveles de privilegios.
  • Límites de red entre diferentes zonas de seguridad.
  • Límites de proceso entre distintos contextos de ejecución.
  • Límites físicos entre diferentes ubicaciones o nubes.

Elementos de ejemplo:

  • Usuarios que se conectan a través de Internet.
  • Firewall de aplicaciones web en el borde de la red.
  • Servidores web en una red perimetral.
  • Servidores de aplicaciones en una red protegida.
  • Servidores de bases de datos en una red altamente restringida.
  • Puerta de enlace de pago externa para procesar transacciones.

3. Identificación de amenazas

Identificación sistemática de amenazas: Use enfoques estructurados para identificar posibles amenazas:

Metodología de STRIDE: STRIDE es un marco de categorización de amenazas:

  • Suplantación de identidad: amenazas que implican la impersonación.
  • Tampering: amenazas que suponen la modificación no autorizada de los datos.
  • Repudiation: amenazas en las que los usuarios deniegan la realización de acciones.
  • Divulgación de Información: amenazas que implican acceso a información no autorizada.
  • Denial of Service: amenazas que impiden que los usuarios legítimos accedan a los sistemas.
  • Elevación de privilegios: Amenazas en las que los usuarios obtienen permisos no autorizados.

Aplicar STRIDE a los flujos de datos: Examine cada flujo de datos del diagrama y tenga en cuenta cómo se puede aplicar cada categoría STRIDE:

  • ¿Un atacante puede suplantar el origen de estos datos?
  • ¿Se pueden manipular estos datos durante la transmisión o el almacenamiento?
  • ¿Se pueden rechazar acciones legítimas en este flujo de datos?
  • ¿Se podría revelar información confidencial a través de este flujo?
  • ¿Podría usarse este flujo para provocar la denegación de servicio?
  • ¿Podría aprovecharse este flujo para obtener privilegios elevados?

Ejemplos comunes de amenazas:

  • Inyección de código SQL: El atacante manipula las consultas de base de datos a través de entradas de usuario no autorizadas (manipulación, divulgación de información, elevación de privilegios).
  • Secuestro de sesión: El atacante roba tokens de sesión para suplantar a los usuarios (suplantación, elevación de privilegios).
  • Man-in-the-middle: El atacante intercepta las comunicaciones entre los componentes (divulgación de información, manipulación).
  • Ataque DDoS: El atacante sobrecarga los sistemas con el tráfico (denegación de servicio).

4. Mitigación de amenazas

Desarrollar contramedidas: Para cada amenaza identificada, desarrolle mitigaciones adecuadas:

Estrategias de mitigación:

  • Eliminar: Quite completamente el componente o la característica vulnerables si no es esencial.
  • Impedir: Implemente controles que hagan que la amenaza sea imposible (por ejemplo, la validación de entrada impide ataques por inyección).
  • Detectar: Implemente la supervisión y las alertas para detectar intentos de explotación de amenazas.
  • Responder: Desarrolle procedimientos de respuesta a incidentes para cuando se aprovechen las amenazas.

Mitigaciones de ejemplo:

  • Amenaza de inyección de CÓDIGO SQL: Use consultas con parámetros y validación de entrada para evitar ataques por inyección.
  • Amenaza de secuestro de sesión: Implemente la administración segura de sesiones con HTTPS, cookies seguras y tiempos de espera de sesión cortos.
  • Amenaza intermediario: Utilice TLS para todas las comunicaciones e implemente la fijación de certificados.
  • Amenaza de DDoS: Use los servicios de protección contra DDoS basados en la nube e implemente la limitación de velocidad.

Decisiones de documento: Registre las decisiones de mitigación, entre las que se incluyen:

  • Qué amenazas se abordan.
  • Qué enfoque de mitigación se eligió.
  • Por qué este enfoque es adecuado.
  • Quién es responsable de la implementación.
  • Cualquier riesgo residual que permanezca.

5. Validar mitigaciones

Comprobar la eficacia: Después de implementar mitigaciones, valide que abordan eficazmente las amenazas identificadas:

Pruebas de seguridad:

  • Las pruebas de penetración para comprobar las amenazas no se pueden aprovechar.
  • Revisiones de código de seguridad para confirmar que las mitigaciones se implementan correctamente.
  • Examen de seguridad automatizado para detectar vulnerabilidades perdidas.
  • Ejercicios de equipo rojo para probar defensas contra escenarios de ataque realistas.

Validación continua: Las amenazas y mitigaciones evolucionan:

  • Las nuevas amenazas surgen a medida que cambian las tecnologías.
  • Las mitigaciones existentes pueden ser ineficaces.
  • Los cambios de aplicación pueden introducir nuevas vulnerabilidades.

Modelado de amenazas en el ciclo de vida de desarrollo

Proceso en curso: El modelado de amenazas no debe ser una actividad única. Debe formar parte del ciclo de vida de desarrollo típico:

Diseño inicial: Realice un modelado completo de amenazas durante el diseño inicial de la aplicación para influir en las decisiones arquitectónicas.

Desarrollo de características: Realice el modelado de amenazas al agregar características nuevas significativas que cambien los límites de seguridad o introduzcan nuevos flujos de datos.

Actualizaciones periódicas: Revise y actualice periódicamente los modelos de amenazas incluso sin cambios importantes, a medida que evoluciona el panorama de amenazas.

Respuesta a incidentes: Actualice los modelos de amenazas después de los incidentes de seguridad para incorporar lecciones aprendidas.

Reducción progresiva del riesgo: Este enfoque iterativo le permite refinar el modelo de amenazas y reducir progresivamente el riesgo a lo largo del tiempo en lugar de intentar abordar todos los riesgos a la vez.

Herramienta de modelado de amenazas de Microsoft

Microsoft proporciona una herramienta gratuita que hace que el modelado de amenazas sea más accesible y estructurado:

Propósito: Microsoft Threat Modeling Tool facilita el modelado de amenazas para todos los desarrolladores a través de una notación estándar para visualizar los componentes del sistema, los flujos de datos y los límites de seguridad.

Identificación automatizada de amenazas: La herramienta ayuda a los modeladores de amenazas a identificar las clases de amenazas que deben tener en cuenta en función de la estructura de su diseño de software. Al crear el diagrama de la aplicación, la herramienta sugiere automáticamente posibles amenazas en función de los componentes y flujos de datos que haya definido.

Funcionalidades clave: Threat Modeling Tool permite a cualquier desarrollador o arquitecto de software:

Comunicar el diseño de seguridad:

  • Crear representaciones visuales de la arquitectura del sistema.
  • Use una notación coherente que comprendan los equipos de seguridad y los desarrolladores.
  • Documente las decisiones de arquitectura pertinentes para la seguridad.
  • Comparta modelos de amenazas con las partes interesadas para su revisión y comentarios.

Analizar diseños:

  • Identifique posibles problemas de seguridad mediante metodologías probadas (STRIDE).
  • Genere automáticamente listas de amenazas basadas en la estructura de la aplicación.
  • Priorice las amenazas en función de la gravedad y la probabilidad.
  • Compare diferentes alternativas de diseño desde una perspectiva de seguridad.

Administrar mitigaciones:

  • Sugerir mitigaciones para amenazas identificadas.
  • Seguimiento del estado de implementación de mitigación.
  • Documente las decisiones de seguridad y la justificación.
  • Generar informes para revisiones de seguridad y cumplimiento.

Empezar:

  • La herramienta es gratuita y está disponible para su descarga desde Microsoft.
  • Incluye plantillas para tipos de aplicación comunes.
  • Las instrucciones integradas ayudan a los nuevos usuarios a aprender conceptos de modelado de amenazas.
  • La integración con Azure DevOps permite vincular amenazas a elementos de trabajo.

Recursos adicionales

Para obtener más información sobre el modelado de amenazas, consulte: