¿Qué es la seguridad de la cadena de suministro de software?

La cadena de suministro de software abarca todo lo que influye o desempeña un papel en un producto o aplicación durante todo su ciclo de vida de desarrollo de software (SDLC).

En los últimos años, los ataques a la cadena de suministro de software se están volviendo más frecuentes y más sofisticados. En su informe de 2022, Gartner establece lo siguiente: "Anticipar la expansión continua de la superficie de ataque empresarial y aumentar la inversión en procesos y herramientas para la detección y remediación de amenazas de identidad y la integridad de la cadena de suministro digital".

Es más importante que nunca proteger todos los componentes, actividades y prácticas de SDLC involucradas en la creación e implementación de software. Los equipos de desarrollo y los proveedores de software deben asegurarse de utilizar únicamente componentes de código libres de vulnerabilidades conocidas y encontrar formas de validar la integridad de su compilación, comprobando si hay manipulaciones no autorizadas.

Definición de seguridad de la cadena de suministro de software

La cadena de suministro de software se refiere a todo lo involucrado en el desarrollo de una aplicación a lo largo de todo el ciclo de vida de desarrollo de software (SDLC). La creación e implementación de software requiere asegurar las actividades, procesos y componentes de su cadena de suministro. Hay muchos factores a considerar en este sentido, incluido el código personalizado (componentes internos), las dependencias y bibliotecas de código abierto (componentes de terceros), las herramientas e infraestructura de DevOps que conforman el proceso de CI/CD y, finalmente, los desarrolladores y DevOps. equipos.

Es responsabilidad de las organizaciones realizar estas actividades de seguridad y proporcionar pruebas de sus esfuerzos de seguridad a los consumidores.

 

 

Ataques a las cadenas de suministro de software: ¿por qué son tan comunes?

Los canales de software modernos son entornos automatizados que dependen de una variedad de herramientas para la integración y entrega continuas. Un proyecto de software puede acabar incluyendo miles de dependencias de código abierto.

Los actores maliciosos pueden hacer pasar bibliotecas fraudulentas como legítimas explotando "defectos lógicos" en los administradores de paquetes de código abierto. Por ejemplo, los paquetes con malware pueden atribuirse a mantenedores confiables sin su conocimiento. Esta confianza fuera de lugar puede introducir vulnerabilidades ocultas y problemáticas en su código. Estas vulnerabilidades pueden proporcionar a los atacantes acceso a datos confidenciales o permitirles instalar malware y sistemas de control en toda la cadena de suministro.

El entorno de desarrollo moderno tiene sus propias vulnerabilidades, y una variedad de ataques a la cadena de suministro de software se dirigieron al proceso de CI/CD para insertar código malicioso en algún punto del proceso de desarrollo. También en este caso, una suposición de confianza cero es el enfoque adecuado para ganar confianza en el producto de software final: comprobar, verificar y validar cada paso de la cadena de desarrollo interno.
Los procesos de CI/CD actuales carecen de visibilidad y controles para proteger adecuadamente el proceso de desarrollo de software. También tienen dificultades para detectar la manipulación del código, lo que hace que este vector de ataque sea aún más atractivo.

El SSDF (NIST 800-218) se ha finalizado y está en vigor

El marco SSDF (NIST 800-218) requiere que los proveedores implementen prácticas de seguridad que cubran el ciclo de vida de desarrollo de software (SDLC). Promueve la transparencia y medidas resistentes a la manipulación en un esfuerzo por reducir las vulnerabilidades de seguridad y la interferencia maliciosa.

Específicamente, contiene pautas para un enfoque basado en evidencia para proteger el software en sí contra manipulaciones.

El SSDF tiene cuatro partes principales:

01 /
Preparar la Organización (PO):

Asegúrese de que las personas estén preparadas y que los procesos y la tecnología estén implementados para realizar un desarrollo de software seguro a nivel de organización y, en algunos casos, para grupos o proyectos de desarrollo individuales.

02 /
Proteger el software (PD):

Proteja todos los componentes del software de cualquier acceso no autorizado o manipulación.

03 /
Produzca software bien protegido (PW):

Produzca software bien protegido con vulnerabilidades de seguridad mínimas en sus versiones.

04 /
Responder a las vulnerabilidades (RV):

Identifique vulnerabilidades residuales en versiones de software, responda adecuadamente para abordar esas vulnerabilidades y evite que se produzcan vulnerabilidades similares en el futuro.

No debe referirse al SSDF como una lista de verificación, sino más bien como una guía para planificar e implementar un enfoque basado en riesgos y evidencia para desarrollar software seguro.
Las empresas deben tomar medidas para mejorar su postura de seguridad a fin de facilitar el cumplimiento de los cambios regulatorios emergentes.

SLSA es un marco que debes cumplir

Un marco originado en Google, llamado SLSA (Niveles de cadena de suministro para artefactos de software), proporciona pautas sobre cómo alcanzar cuatro niveles de protección de la cadena de suministro de software. El marco se centra en la integridad de la construcción de los artefactos con la intención de evitar la manipulación y asegurar los artefactos.

SLSA funciona de esta manera: implementa listas de verificación de controles de seguridad que debe implementar en su canalización, y estos controles están en subdominios como sistemas de control de fuente, sistemas de compilación y dependencias que incorpora a sus proyectos de software.

SLSA establece cuatro niveles de cumplimiento con el objetivo de llegar al nivel 4, que tendría el valor de seguridad más alto, pero tendría una lista de requisitos más larga.

El marco SLSA se basa en el concepto de procedencia. Un documento que representa una “cadena de evidencia” que denota el origen de los artefactos y el proceso de construcción. A medida que aumentan los niveles de SLSA, es necesario proteger mejor la evidencia en sí.

Debe considerar SLSA como un estándar de la industria, un nivel de protección y cumplimiento reconocible y acordado que debe cumplir.

¿Cómo asegurar su cadena de suministro de software?

Los diferentes marcos que mencionamos definen los principios para proteger la cadena de suministro de software y requieren su atención.

Sin embargo, nos gustaría subrayar tres clases principales de controles de seguridad:

1. Asegure la configuración del ciclo de vida de su desarrollo de software

Las credenciales comprometidas, el control insuficiente de los permisos y los sistemas de compilación vulnerables crean superficies de ataque que afectan al productor de software. Los atacantes que explotan estas vulnerabilidades pueden robar secretos no seguros o alterar artefactos de software. Una variedad de soluciones comerciales y de código abierto de esta clase pueden proporcionar controles para mapear brechas en la postura de seguridad y remediarlas.

2. Evite depender de dependencias vulnerables o maliciosas

Invariablemente, se seguirán descubriendo nuevas vulnerabilidades en el software comercial y de código abierto. Los productores de software deben mitigar este riesgo actualizando los componentes vulnerables de código abierto, buscando vulnerabilidades autoinfligidas en su código propietario e informando a los consumidores de software sobre la lista de materiales del software (SBOM) y sus implicaciones asociadas. Estos consumidores, a su vez, pueden actuar en consecuencia.

Las cuentas de proyectos de código abierto secuestradas y los paquetes maliciosos que se hacen pasar por legítimos plantean riesgos adicionales, que afectan principalmente al robo de secretos de los oleoductos. La comunidad de código abierto y algunos proveedores comerciales están trabajando para solucionar este problema mediante una mejor reputación y la detección de comportamientos maliciosos.

3. Validar la integridad y la construcción segura de los artefactos de software.

La ciberseguridad requiere una defensa en profundidad. Los ataques pueden pasar desapercibidos cuando se utiliza el enfoque de protección tradicional de reducción de la superficie de ataque, detección y reputación. Más aún, hoy en día los consumidores de software intermedios tienen poca influencia sobre estos controles. Como máximo, pueden confiar en auditorías de seguridad puntuales, como el escaneo de códigos que proporciona una instantánea de la vulnerabilidad, de proveedores que no crean una confianza real en que el artefacto de software esté bien protegido y protegido durante el ciclo de vida de desarrollo.

Ahora está disponible una nueva clase emergente de controles que certifica continuamente la integridad de cada artefacto de software y el proceso de desarrollo seguro. Estas certificaciones no tienen buena reputación y pueden compartirse entre productores y consumidores intermedios que buscan validación. El no repudio se logra mediante métodos criptográficos y, por lo tanto, eleva significativamente el precio para cualquier atacante que se infiltre en la cadena de suministro.

Los expertos en el campo de la seguridad de la cadena de suministro de software consideran esencial este enfoque. Sin embargo, si bien existen algunos componentes básicos de código abierto para admitir esta clase de controles, sólo unos pocos proveedores pueden proporcionar una solución integrada.

Una solución completa de la cadena de suministro de software debe incluir:

La recopilación de pruebas y su firma como certificaciones de los procesos de desarrollo y construcción de software. Normalmente, esta evidencia son hashes de archivos con metadatos que se comparan entre pasos relevantes del proceso, eventos sobre pasos relacionados con la seguridad, como identidades de autores de código, revisiones de código, pruebas de seguridad automáticas, etc. También es necesario proporcionar una certificación sobre la situación de seguridad del proceso de construcción del productor de software en el momento en que se creó el artefacto de software.

Un almacén de atestación seguro que permite visibilidad y admite análisis como la validación de la integridad del código.

Un motor de políticas que mide estas certificaciones con respecto a una política definida por la organización o una política basada en estándares para la validación y demostración del cumplimiento.

Un centro para compartir información relacionada con la confianza entre productores o consumidores de software; esto podría ser inter o intraempresa).

Validar la integridad del software es un desafío

En teoría, comprobar la integridad del código debería ser fácil. Simplemente compare archivos, ¿verdad? En realidad, hay mucho que considerar. Para empezar, cada idioma compila archivos de manera diferente. Además, los archivos se utilizan de forma muy diferente según su finalidad. Algunos están destinados a cambiar, mientras que otros se eliminan y otros se crean durante el proceso de compilación.

A esto se suma el hecho de que las empresas no quieren ceder su código propietario entre sí.

Garantía de código en todo el SDLC

Scribe se propone proteger todo su SDLC continuamente. Con evidencia recopilada de varias partes del proceso de desarrollo y construcción, Scribe utiliza la firma digital para crear certificaciones infalsables.

Una vez firmada, cada pieza de evidencia se puede verificar posteriormente para garantizar que todos los procesos se llevaron a cabo según lo planeado y que no se produjeron alteraciones no planificadas.

Siguiendo las mejores prácticas establecidas en el SSDF, Scribe le permite emplear políticas de sentido común para aumentar su confianza durante todo el proceso de desarrollo. Políticas como exigir confirmaciones firmadas, 2FA para desarrolladores, revisión de código por dos personas, etc., ayudan a generar confianza en que cada pieza de software se produjo siguiendo la postura de seguridad correcta.

Recopilar toda esta evidencia en una sola ubicación, junto con un informe de integridad del código y un resumen de todas las políticas y certificaciones permite una mayor visibilidad y confianza en el proceso de desarrollo y los artefactos de software producidos al final y está alineado con las pautas SSDF vigentes. en la base de la nueva regulación cibernética.

Permitir que suscriptores selectos vean el cumplimiento del producto con los requisitos de políticas y los resultados de integridad ofrece a los usuarios una mayor visibilidad y confianza en sus procesos de desarrollo y el producto de software final.

El resultado final no es sólo detectar la manipulación del código o de la canalización, sino también la capacidad de dar fe de las pruebas y procedimientos de seguridad que tuvieron lugar durante el diseño y la construcción del software, así como la integridad del código fuente y los paquetes de código abierto. utilizado en su construcción.

Automatización de la evaluación del cumplimiento de SLSA

La seguridad de las tuberías dinámicas debe medirse continuamente. SLSA (Niveles de cadena de suministro para artefactos de software) define cuatro niveles de protección de la cadena de suministro de software junto con pautas sobre cómo alcanzarlos.

Una evaluación de cumplimiento de SLSA se puede automatizar para cumplir con sus requisitos. Pero, ¿cómo debería proceder una organización para adquirir uno? ¿Existen mejores prácticas específicas que deba seguir?

Mire este video donde compartimos las mejores prácticas para implementar la automatización, utilizando herramientas de código abierto como Sigstore y OPA en escenarios del mundo real. Las mejores prácticas tanto conceptuales como técnicas arrojan luz sobre los detalles y los desafíos del mundo real al evaluar y automatizar el cumplimiento de SLSA.

Antes de usar Escriba Después de usar Escriba
Centro de confianza: intercambio de información

  • Un SBOM generado se guarda localmente por canalización única, sin la capacidad de administrarlo o compartirlo con las partes interesadas en toda la organización o externamente.

  • Compartir y gestionar SBOM, tanto internamente dentro de la organización con otras partes interesadas como externamente con clientes o usuarios.
  • SBOM inteligente con información procesable
  • Los conocimientos de SBOM se pueden utilizar como una 'puerta' de paso/no paso en el proceso o producto, para determinar si la imagen resultante coincide con lo esperado.
  • Ahora es posible sincronizar entre diferentes equipos y organizaciones

SDLC seguro: política y cumplimiento

  • No hay una forma automática o resistente de garantizar que se sigan las políticas seguras de SDLC según sea necesario.

  • Una forma confiable basada en evidencia que garantiza que las políticas seguras de SDLC se apliquen de acuerdo con las regulaciones y marcos de seguridad de la cadena de suministro de software más recientes (SLSA 3, SSDF)

Detección de integridad y manipulación

  • Solo lo que puedes obtener de los registros y las API
  • No firmado hasta el final del proceso, justo antes de la entrega (se relaciona únicamente con el MITM del 'retraso final')

  • La garantía continua del código mediante el uso de hash y firma de código continuo en cada etapa del proceso de desarrollo permite validar que el artefacto final es lo que debe ser y que un mal actor no insertó ningún código malicioso durante los procesos de desarrollo y entrega.

Visibilidad

  • Todo lo que pueda obtener de los registros y API
  • Guardado localmente y sin firmar, lo que genera la posibilidad de que actores malintencionados lo manipulen

  • Declaraciones firmadas guardadas en un almacén de pruebas separado, seguro y a prueba de manipulaciones

Postura de seguridad

  • Comprobación de configuraciones erróneas de las herramientas CI/CD
  • Buscando secretos filtrados
  • Comprobación de vulnerabilidades conocidas (CVE)

  • Comprobación de lagunas de SDLC en su cadena de herramientas de CI/CD.
  • Comprobación de vulnerabilidades conocidas (CVE) y reputación de repositorios OSS
  • Registrar testimonios a prueba de manipulaciones de que se tomaron a tiempo las medidas de seguridad requeridas en cada etapa del proceso de acuerdo con la política SDLC de las organizaciones.

Scribe Security: un nuevo estándar de seguridad de la cadena de suministro de software

La garantía continua de código se compone de procesos y herramientas que:

Realice un seguimiento de cada detalle y evento en el proceso de desarrollo de software, así como de la integridad de los componentes y artefactos del software.

Verificar que no se haya producido manipulación en ninguna y todas las partes del proceso de desarrollo de software.

Verificar la integridad de las herramientas CI/CD utilizadas para construir el código.

Confirmar la integridad del proceso de desarrollo, asegurando que los pasos relacionados con la seguridad se llevaron a cabo de acuerdo con la política de la organización y no se hayan omitido.

Al recopilar y firmar evidencia de todo lo que sucede con el código, en cada etapa del ciclo de vida de desarrollo, hace que sea más difícil para los atacantes alterar archivos, herramientas o el comportamiento esperado de su proceso de CI/CD.

¿Cómo le puedo AYUDA?

Nuestra plataforma única garantiza que los artefactos de código estén seguros desde Git hasta la producción durante todo el ciclo de vida del desarrollo de software, utilizando los conceptos y marcos de seguridad líderes.

Nuestros clientes, responsables de proteger las compilaciones de software y el software en uso, confían en Scribe para garantizar que su software sea seguro y confiable.

Los ataques a la cadena de suministro de software se han vuelto más frecuentes y sofisticados en los últimos años. De acuerdo a un Informe de Gartner, se prevé que el número de ataques a la cadena de suministro de software se triplique para 2025, afectando a casi la mitad de todas las organizaciones en todo el mundo. Como resultado de esta creciente amenaza, proteger todos los componentes, actividades y prácticas de SDLC es más importante que nunca.

Si bien es difícil prevenir ataques a la cadena de suministro de software, las siguientes son algunas de las cosas que puede hacer para mitigar su impacto o reducir sus riesgos: Auditar su infraestructura, mantener un inventario actualizado de todos sus activos de software, evaluar proveedores y aplicar un enfoque de confianza cero, utilizar herramientas de seguridad, proteger su puntos finales, etc.

Si bien no hay garantías en la vida, y mucho menos en la seguridad, sí las hay. Mejores prácticas de seguridad de la cadena de suministro de software vigentes, que los desarrolladores y las organizaciones de productos deben seguir para asegurar su cadena de suministro de software. Dentro de las diferentes etapas del ciclo de vida de su software, puede utilizar estas pautas para describir, evaluar y medir las prácticas de seguridad dentro de su organización. Las mejores prácticas entran en juego en cada fase de la cadena de suministro de software, incluida la adquisición, el desarrollo y la implementación.

Un aumento en el número de riesgos de la cadena de suministro de software y una serie de violaciones de alto perfil resultantes de ellas muestran cuán grave es el problema de la vulnerabilidad. Existen varias amenazas a la cadena de suministro de software que pueden plantear el software de terceros. Es posible que los atacantes aprovechen las vulnerabilidades en sistemas que dependen de software de terceros de diversas formas. Entre estos métodos de ataque se encuentran la introducción de código malicioso en el software, lo que provoca confusión de dependencias y la utilización de errores tipográficos.

Los ataques a la cadena de suministro generalmente se esconden detrás de procesos legítimos para obtener acceso ilimitado al ecosistema de software de una organización. En la mayoría de los casos, los atacantes comienzan por violar las defensas de seguridad de un proveedor o proveedor de software. Una vez que se ha inyectado el malware en la cadena de suministro, debe adjuntarse a un proceso legítimo firmado digitalmente. Los atacantes suelen utilizar las actualizaciones de software para propagar malware a lo largo de la cadena de suministro de software. Algunos de los comunes tipos de ataques a la cadena de suministro de software incluyen: herramientas de creación de software comprometidas, certificados de firma de código robados o aplicaciones maliciosas firmadas utilizando una identidad robada y código comprometido en componentes de hardware o firmware.

Un SBOM (Lista de materiales del software), es un conjunto de información sobre los muchos componentes que componen un producto o aplicación de software. Por lo general, contiene información sobre licencias, números de versión, detalles de componentes, proveedores, etc. Una lista tan detallada y formal reduce los riesgos tanto para el fabricante como para el usuario al permitir que otros comprendan lo que hay en su software y actúen en consecuencia.

Los SBOM permiten la visibilidad de los componentes del producto, facilitan el escaneo de vulnerabilidades, aprovechan la gobernanza de licencias y pueden usarse para analizar amenazas a la integridad.

La Garantía Continua tiene como objetivo disipar el punto ciego de la cadena de suministro de software. Implica recopilar evidencia firmada sobre cada evento en el ciclo de vida de desarrollo que pueda afectar la seguridad del producto de software final, incluida la creación y la implementación del producto. Hoy en día, las empresas utilizan una variedad de herramientas de seguridad para hacer que sus productos de software sean más seguros. Sin embargo, rara vez establecen una política para el uso consistente de estas herramientas.

Aseguramiento Continuo garantiza que los productos de software no hayan sido manipulados durante el desarrollo y que se hayan realizado pruebas relacionadas con la seguridad.

Los cambios menores en el código pueden pasar desapercibidos durante mucho tiempo. Los equipos de desarrollo confían en el propietario del código si el producto modificado está firmado correctamente. Como resultado, se pueden crear paquetes con malware y asignarlos a mantenedores populares y confiables sin su conocimiento. Un caso de confianza extraviada podría significar una vulnerabilidad problemática o una código malicioso oculto en su código.

También es común que los desarrolladores copien y peguen código de bibliotecas existentes o StackOverflow para usarlo en su propio código o cargarlo en bibliotecas nuevas. Esto aumenta las posibilidades de copiar también código inseguro y vulnerable que ahora es esencialmente imposible de rastrear. 

La versión final de SSDF del NIST 1.1 (Marco de desarrollo de software seguro) se publicó el 22 de marzo. En septiembre de 2021, se publicó una versión borrador del marco. Muchas de las diferencias se centran en los diversos ejemplos proporcionados más que en prácticas y tareas de alto nivel.

Al decidir qué prácticas implementar, el NIST recomienda equilibrar el riesgo con el costo, la viabilidad y la aplicabilidad. Para garantizar la seguridad del software, la automatización de tantas comprobaciones y procesos como sea posible es una característica clave a considerar.

Generar confianza en su software es una tarea importante, especialmente teniendo en cuenta los nuevos estándares y mejores prácticas, como SSDF y SLSA. Pronto los proveedores que no puedan demostrar esta confianza no podrán venderle al gobierno federal de Estados Unidos.

Para generar confianza, deberá conservar y compartir con las partes interesadas el SBOM de sus productos junto con evidencia sobre su desarrollo y construcción seguros.

Plataforma de escriba, una verdadera solución de seguridad de la cadena de suministro de software de extremo a extremo, le proporciona esta capacidad. Aplica una garantía de código continua en todo el SDLC con un enfoque de confianza cero y genera automáticamente SBOMS compartibles para que pueda obtener información sobre las vulnerabilidades y la manipulación del código.

Las tuberías dinámicas deben monitorearse continuamente por razones de seguridad. En Marco de ciberseguridad SLSA (Niveles de la cadena de suministro para artefactos de software), se definen cuatro niveles de protección para las cadenas de suministro de software, junto con pautas sobre cómo alcanzar cada nivel.

Debe seguir las mejores prácticas para implementar la automatización, utilizando herramientas de código abierto como Sigstore y OPA, solo por nombrar algunas.