Comprender el marco SSDF del NIST

Mitigar los riesgos de seguridad de la cadena de suministro de software a menudo implica implementar múltiples capas de seguridad y diferentes estrategias. Pero uno de los enfoques más eficientes para mantener seguro su software es abordar las posibles vulnerabilidades de seguridad durante la etapa de desarrollo de su aplicación de software. Esto suele ser un desafío, ya que sólo unos pocos modelos de ciclo de vida de desarrollo de software abordan explícitamente las cuestiones de seguridad del software. Para mantener su software seguro, deberá adoptar prácticas de desarrollo de software seguras para cualquier modelo de ciclo de vida de desarrollo de software que elija utilizar.

El Marco de desarrollo de software seguro (SSDF) describe algunas de las prácticas fundamentales que debe seguir para garantizar la seguridad del software que está creando. El SSDF se basa en prácticas de seguridad de desarrollo de software estándar establecidas por el Instituto Nacional de Estándares y Tecnología (NIST) y aborda explícitamente cuestiones de seguridad en el desarrollo de software. La versión 1.1 del SSDF se define en SP 800-218 del NIST publicación. El marco se publicó inicialmente en septiembre de 2021 como un borrador versión. El 22 de marzo de 2021, NIST lanzó la versión final del SSDF 1.1. Todas las prácticas y tareas de alto nivel siguieron siendo las mismas y muchas de las diferencias se centraron en los diversos ejemplos proporcionados. Al decidir qué prácticas implementar, el NIST recomienda equilibrar el riesgo con el costo, la viabilidad y la aplicabilidad. Automatizar tantas comprobaciones y procesos que promuevan la seguridad del software como sea posible es una característica clave a considerar.

Como organización que trabaja con un modelo de ciclo de vida de desarrollo de software, debe implementar las pautas del SSDF como parte de los esfuerzos generales para proteger su software de las vulnerabilidades de la cadena de suministro de software. Seguir este marco ayudará a detectar vulnerabilidades no resueltas antes de que se lance el software. Esto reduce el riesgo y los impactos de posibles explotaciones de seguridad debido a estas vulnerabilidades no detectadas. Este artículo es una guía completa que detalla qué es el marco SSDF y cómo contribuye a la seguridad de la cadena de suministro de software.

Las 4 prácticas del marco de desarrollo de software seguro

Las prácticas del SSDF se agrupan en cuatro categorías. En el marco del SSDF, cada práctica se identifica mediante un identificador único y una breve explicación de qué es, por qué es beneficiosa y las tareas que deben realizarse para implementarla. El marco también incluye ejemplos de herramientas, procesos y métodos para implementar las prácticas con referencias a documentos de prácticas de desarrollo seguro establecidos. Las siguientes son las prácticas de cuatro pilares de la versión 1.1 del Marco de desarrollo de software seguro (SSDF):

Preparar la organización (PO)

El desarrollo de software seguro depende en gran medida de las personas. Por lo tanto, el primer paso al implementar el SSDF es garantizar que todos en su organización estén suficientemente preparados para los cambios que requerirá el marco. Para comenzar, debe identificar los requisitos de seguridad específicos del software que está desarrollando en función de las herramientas que utilizarán para el desarrollo de software. De esta manera podrás empezar a preparar a las personas, los procesos y la tecnología que utilizan, tanto a nivel organizacional como individual.

La preparación de la organización generalmente consiste en obtener la aceptación de la alta dirección e implementar la capacitación necesaria para los empleados. Parte de sus esfuerzos de preparación también puede incluir la implementación de herramientas que ayuden a automatizar procesos y crear un entorno seguro para el desarrollo.

Proteger el software (PS)

Una imagen de paraguas protector.

El Marco de desarrollo de software seguro describe prácticas para proteger todos los componentes de su software contra acceso no autorizado y manipulación. Este es un paso importante para ayudar a prevenir cambios no autorizados en el código, tanto involuntarios como intencionales, y para proteger el código fuente y la configuración del software. Proteger su software puede implicar diferentes enfoques según la situación específica. Cuando el código no está destinado a ser accesible públicamente, esto puede evitar el robo del software y hacer que a los atacantes les resulte más difícil o más lento encontrar vulnerabilidades.

Al seguir las prácticas descritas en esta sección del SSDF, los consumidores de software se aseguran de que el software que adquieren sea legítimo y no haya sido manipulado. Además, ayuda a identificar, analizar y eliminar vulnerabilidades en el software después del lanzamiento al preservar las versiones del software.

Produzca software bien seguro (PW)

Para producir software bien protegido con vulnerabilidades de seguridad mínimas, existen pasos básicos a seguir durante todo el ciclo de vida del desarrollo del software. Éstas incluyen:

  • Elegir configuraciones de software seguras
  • Evaluar cualquier componente de terceros de su software para garantizar su integridad.
  • Garantizar que el código fuente de su software cumpla con las prácticas de codificación segura
  • Revisar, analizar y probar su código en busca de vulnerabilidades y abordar cualquier problema identificado antes de que se publique el código.
  • Prevención de vulnerabilidades utilizando funciones de herramientas de compilación como compiladores e intérpretes

Responder a las vulnerabilidades (RV)

Incluso después de que se lance su software, todavía existe la posibilidad de que descubra vulnerabilidades en él. Los evaluadores dentro de su organización, los investigadores de seguridad externos o incluso los clientes pueden descubrir estas vulnerabilidades. Una parte importante de la seguridad de su software es responder rápidamente a estas vulnerabilidades tan pronto como se descubren. Cuanto más tiempo se oculte una laguna de seguridad, mayor será el daño que puede causar. Cada organización necesita un programa de divulgación de vulnerabilidades, así como otras políticas, para analizar nuevas vulnerabilidades y decidir cómo abordarlas.

 

¿Cuáles son los puntos principales a considerar?

El objetivo principal del SSDF es ayudar a las organizaciones a alinear y priorizar la seguridad en sus actividades de desarrollo de software. El SSDF tiene en cuenta los requisitos comerciales, la tolerancia al riesgo y los recursos al implementar la seguridad en el ciclo de vida del desarrollo de software. Algunas de las consideraciones clave de este marco incluyen:

  • Integre la seguridad en el SDLC

El primer paso para crear software seguro es integrar la seguridad en los diferentes pasos y etapas del ciclo de vida de desarrollo de software. Básicamente, su equipo de desarrollo debe tener una cultura centrada en la seguridad y esto debe comenzar incluso en la fase más temprana del proceso de desarrollo.

En la mayoría de los casos, muchas de las prácticas de codificación estándar introducen numerosas vulnerabilidades que pueden ser explotadas por partes malintencionadas más adelante, cuando se lanza el software. Es por eso que los desarrolladores deben pensar en la seguridad desde el principio y deben estar bien informados sobre las estrategias que ayudan a reducir estas posibles rutas de ataque.

Además de pensar en los aspectos humanos de proteger su software, también debe considerar automatizar el proceso de prueba y monitoreo de su software para detectar posibles vulnerabilidades desde el principio.

Imagen de desarrollo de código seguro

  • Política de desarrollo de software seguro

Una política de desarrollo de software seguro es un conjunto formal de pautas que detallan las prácticas y procedimientos que sigue su organización para el desarrollo de software seguro. Este documento de política contiene instrucciones detalladas para las personas, la tecnología y los procesos que usted sigue en cada fase del ciclo de vida del desarrollo.

Una política de desarrollo de software seguro es más que una simple recomendación para aumentar la integridad de su software. Incluso es obligatorio en algunos casos. Por ejemplo, si su software debe cumplir con estándares de seguridad como ISO 27001 o SOC Tipo 2, necesitará documentación de política de desarrollo seguro. Afortunadamente, existen guías de plantillas que puede adoptar para este propósito. Su equipo de seguridad de software también puede crear la documentación de la política desde cero y adaptarla a sus necesidades específicas.

  • proveedores externos

No basta con escribir código seguro y seguir los requisitos de seguridad internamente. La mayoría del software todavía utiliza componentes de proveedores externos que pueden no seguir los mismos estándares de seguridad que usted. Estos componentes de código de terceros son vías comunes a través de las cuales ataques a la cadena de suministro de software se llevan a cabo.

Como parte de los esfuerzos para garantizar el cumplimiento de la seguridad durante todo el ciclo de vida de desarrollo de software, debe monitorear todos los componentes de terceros que utiliza y asegurarse de que los proveedores conozcan plenamente sus requisitos de seguridad y cumplan plenamente con los mismos estándares de seguridad que usted.

  • Protección de la integridad del código

Su código de software y todos sus componentes son puntos potenciales de ataque que los actores malintencionados pueden aprovechar para inyectar vulnerabilidades en su software. Para evitar esto, todos los códigos deben guardarse en repositorios seguros cuando estén a salvo de cualquier forma de manipulación.

Parte de los esfuerzos para mantener la integridad del código incluye garantizar que solo los desarrolladores autorizados tengan acceso al código fuente. El repositorio de código que elija debe tener funciones que garanticen esto, así como funciones adicionales para proteger el proceso de inicio de sesión y monitorear cualquier cambio que se pueda realizar en su código. Puede mejorar aún más la integridad del código empleando la automatización para monitorear los datos de acceso y realizar análisis periódicos del código.

  • Malware preinstalado

Una vía común para los ataques a la cadena de suministro de software es ocultar las vulnerabilidades de seguridad en malware preinstalado. Podría tratarse de un virus, ransomware, troyano o software espía que puede causar estragos en su software. El malware puede estar preinstalado en dispositivos o software confiable que utilice en su proceso de creación de software o incluso en el sistema de un proveedor externo. Este malware puede permanecer oculto durante mucho tiempo hasta que un proceso legítimo firmado digitalmente le permita propagarse por su sistema. Proteger el desarrollo de su software implica estar atento a este malware preinstalado e implementar medidas para identificarlo y eliminarlo.

  • Pruebas de código, revisión y listas de verificación

El enfoque tradicional del desarrollo de software suele dejar las pruebas de código para el final del ciclo de vida del desarrollo de software. Sin embargo, este enfoque reactivo para detectar vulnerabilidades de software no es muy eficaz. Un enfoque más eficiente es configurar pruebas automatizadas para detectar continuamente fallas en el código a medida que se construye. Los desarrolladores también deben revisar y verificar su código manualmente para evitar frustraciones cuando se descubran fallas más adelante.

Dado que hay numerosas piezas y componentes que rastrear, tiene sentido hacer listas de verificación a medida que construye. Esto ayuda a su equipo de desarrollo y monitoreo de software a garantizar que se cumplan debidamente todas las acciones establecidas en las políticas del SSDF.

  • Mitigación de vulnerabilidades

A pesar del cumplimiento del SSDF y otros estándares de seguridad, las vulnerabilidades son prácticamente inevitables en el desarrollo de software. Lo más importante es estar preparado para mitigar estas vulnerabilidades cuando ocurran. Esto significaría contar con un equipo con planes y estrategias claramente establecidos para abordar los incidentes de seguridad tan pronto como ocurran.

La rapidez con la que su organización pueda responder a las vulnerabilidades de seguridad marcará una gran diferencia a la hora de reducir los impactos adversos de dichos ataques. Cuando las fallas de software se detectan y reparan rápidamente, los actores maliciosos tendrán una ventana más corta para explotarlas. Por lo tanto, la mitigación de vulnerabilidades es un aspecto importante del desarrollo de software seguro al que toda organización debe prestar atención.

  • Configuración predeterminada segura

Su nuevo software debe tener configuraciones de seguridad predeterminadas que ayuden a proteger a los usuarios de las vulnerabilidades del software incluso sin conocimientos avanzados. También puede implementar medidas que eduquen a los usuarios sobre estas configuraciones predeterminadas para mantenerlos protegidos incluso en las primeras etapas de adopción de su software.

Conclusión

El Marco de desarrollo de software seguro (SSDF) es un conjunto de prácticas avanzadas que deben integrarse en el ciclo de vida de desarrollo de software de cada organización. Si sigue las prácticas establecidas en este marco al principio del proceso de desarrollo, puede reducir las fallas de seguridad en la versión de su software que finalmente lance. El SSDF también le ayuda a detectar riesgos de seguridad y reduce el impacto potencial de vulnerabilidades no detectadas que llegan a la versión final. Este marco es clave para evitar que estos problemas de seguridad se repitan en el futuro.