Ciclo de vida de desarrollo de seguridad de Microsoft (SDL)

La seguridad y la privacidad nunca deben ser un punto final al desarrollar software seguro, debe haber un proceso formal para asegurarse de que se consideran en todos los puntos del ciclo de vida del producto. El ciclo de vida de desarrollo de seguridad (SDL) de Microsoft inserta requisitos de seguridad completos, herramientas específicas de la tecnología y procesos obligatorios en el desarrollo y el funcionamiento de todos los productos de software. Todos los equipos de desarrollo de Microsoft deben cumplir los procesos y requisitos de SDL, lo que da como resultado software más seguro con menos vulnerabilidades y menos graves a un costo de desarrollo reducido.

Proceso de ciclo de vida de desarrollo de seguridad.

El SDL de Microsoft consta de siete componentes, incluidas cinco fases principales y dos actividades de seguridad auxiliares. Las cinco fases principales son los requisitos, el diseño, la implementación, la verificación y la versión. Cada una de estas fases contiene comprobaciones y aprobaciones obligatorias para garantizar que todos los requisitos de seguridad y privacidad y los procedimientos recomendados se aborden correctamente. Las dos actividades de seguridad auxiliares, entrenamiento y respuesta, se realizan antes y después de las fases principales respectivamente para asegurarse de que se implementan correctamente y el software permanece seguro después de la implementación.

Formación

Todos los empleados de Microsoft deben completar una formación general de reconocimiento de seguridad y una formación específica adecuada para su rol. La formación inicial de concienciación de seguridad se proporciona a los nuevos empleados tras la contratación y se requiere formación de actualización anual en todo su empleo en Microsoft.

Los desarrolladores e ingenieros también deben participar en un entrenamiento específico del rol para mantenerlos informados sobre los conceptos básicos de seguridad y las tendencias recientes en el desarrollo seguro. También se anima a todos los empleados a tiempo completo, a los internos, al personal contingente, a los subcontratistas y a los terceros a que tengan la oportunidad de buscar formación avanzada en seguridad y privacidad.

Requisitos

Cada producto, servicio y característica que Microsoft desarrolla comienza con requisitos de seguridad y privacidad claramente definidos; son la base de aplicaciones seguras e informan de su diseño. Los equipos de desarrollo definen estos requisitos en función de factores como el tipo de datos que controlará el producto, las amenazas conocidas, los procedimientos recomendados, las regulaciones y los requisitos del sector, y las lecciones aprendidas de incidentes anteriores. Una vez definidos, los requisitos se definen, documentan y realizan un seguimiento claramente.

El desarrollo de software es un proceso continuo, lo que significa que los requisitos de seguridad y privacidad asociados cambian a lo largo del ciclo de vida del producto para reflejar los cambios en la funcionalidad y el panorama de amenazas.

Diseño

Una vez definidos los requisitos de seguridad, privacidad y funcionalidad, puede comenzar el diseño del software. Como parte del proceso de diseño, se crean modelos de amenazas para ayudar a identificar, clasificar y evaluar posibles amenazas según el riesgo. Los modelos de amenazas deben mantenerse y actualizarse a lo largo del ciclo de vida de cada producto a medida que se realizan cambios en el software.

Diagrama de modelado de amenazas.

El proceso de modelado de amenazas comienza definiendo los distintos componentes de un producto y cómo interactúan entre sí en escenarios funcionales clave, como la autenticación. Data Flow diagramas (DFD) se crean para representar visualmente las interacciones clave del flujo de datos, los tipos de datos, los puertos y los protocolos usados. Los DFD se usan para identificar y priorizar las amenazas para la mitigación que se agregan a los requisitos de seguridad del producto.

Los desarrolladores deben usar la Threat Modeling Tool de Microsoft para todos los modelos de amenazas, lo que permite al equipo:

  • Comunicación sobre el diseño de seguridad de sus sistemas
  • Análisis de diseños de seguridad para posibles problemas de seguridad mediante una metodología probada
  • Sugerir y administrar la mitigación de problemas de seguridad

Antes de que se publique cualquier producto, se revisan todos los modelos de amenazas para ver si son precisos y completos, incluida la mitigación de riesgos inaceptables.

Implementación

La implementación comienza con los desarrolladores que escriben código según el plan que crearon en las dos fases anteriores. Microsoft proporciona a los desarrolladores un conjunto de herramientas de desarrollo seguras para implementar de forma eficaz todos los requisitos de seguridad, privacidad y función del software que diseñan. Estas herramientas incluyen compiladores, entornos de desarrollo seguros y comprobaciones de seguridad integradas.

Verificación

Antes de que se pueda publicar cualquier código escrito, se requieren varias comprobaciones y aprobaciones para comprobar que el código se ajusta a SDL, cumple los requisitos de diseño y está libre de errores de codificación. SDL requiere que las revisiones manuales las realice un revisor independiente del personal que desarrolló el código. La separación de tareas es un control importante en este paso para asegurarse de que la misma persona no puede escribir y liberar código que conduce a posibles daños accidentales o malintencionados.

También se requieren varias comprobaciones automatizadas y se integran en la canalización de confirmación para analizar el código durante la protección y cuando se compilan las compilaciones. Las comprobaciones de seguridad usadas en Microsoft se dividen en las siguientes categorías:

  • Análisis de código estático: analiza el código fuente en busca de posibles errores de seguridad, incluida la presencia de credenciales en el código.
  • Análisis binario: evalúa las vulnerabilidades en el nivel de código binario para confirmar que el código está listo para producción.
  • Escáner de credenciales y secretos: identifique las posibles instancias de exposición de credenciales y secretos en el código fuente y los archivos de configuración.
  • Examen de cifrado: valida los procedimientos recomendados de cifrado en el código fuente y la ejecución de código.
  • Pruebas aproximadas: use datos incorrectos e inesperados para ejercer api y analizadores para comprobar si hay vulnerabilidades y validar el control de errores.
  • Validación de configuración: analiza la configuración de los sistemas de producción en función de los estándares de seguridad y los procedimientos recomendados.
  • Gobernanza de componentes (CG): detección y comprobación de software de código abierto de la versión, vulnerabilidad y obligaciones legales.

Si el revisor manual o las herramientas automatizadas encuentran algún problema en el código, se notificará al remitente y se les pedirá que realicen los cambios necesarios antes de volver a enviarlo para su revisión.

Además, los proveedores internos y externos realizan periódicamente pruebas de penetración en Microsoft servicios en línea. Las pruebas de penetración proporcionan otro medio para detectar errores de seguridad no detectados por otros métodos. Para más información sobre las pruebas de penetración en Microsoft, consulte Simulación de ataques en Microsoft 365.

Release

Después de pasar todas las pruebas y revisiones de seguridad necesarias, las compilaciones no se publican inmediatamente para todos los clientes. Las compilaciones se publican sistemática y gradualmente en grupos más grandes y grandes, lo que se conoce como anillos, en lo que se denomina proceso de implementación segura (SDP). Los anillos SDP se definen de la siguiente manera:

  • Anillo 0: El equipo de desarrollo responsable del servicio
  • Anillo 1: Todos los empleados de Microsoft
  • Anillo 2: Usuarios fuera de Microsoft que han configurado su organización o usuarios específicos para que estén en el canal de versión de destino
  • Anillo 3: Versión estándar mundial en subfásicas

Las compilaciones permanecen en cada uno de estos anillos durante un número adecuado de días con períodos de carga elevados, excepto en el anillo 3, ya que la compilación se ha probado adecuadamente para la estabilidad en los anillos anteriores.

Respuesta

Todos los servicios de Microsoft se registran y supervisan extensamente después de su lanzamiento, identificando posibles incidentes de seguridad mediante un sistema de supervisión centralizado propietario casi en tiempo real. Para más información sobre la supervisión de seguridad y la administración de incidentes de seguridad en Microsoft, consulte Introducción a la supervisión de seguridad y Administración de incidentes de seguridad de Microsoft.