Cómo automatizar la creación de SBOM

Una lista de materiales de software ya no es sólo una documentación "buena para tener" para las organizaciones. Ahora es “imprescindible” por una amplia variedad de razones. Aparte del hecho de que las regulaciones federales han hecho obligatoria la divulgación de los componentes de su software, las empresas de software ahora se han dado cuenta de que enumerar todas las dependencias comerciales y de código abierto utilizadas en su aplicación es una práctica de ciberseguridad beneficiosa.

Curiosamente, a pesar de reconocer la necesidad de un SBOM, crearlo aún puede ser todo un desafío. Esto se debe a que el proceso de creación de la lista de materiales de software para un producto puede ser complejo, tedioso y llevar mucho tiempo. Además, dado que las autoridades reguladoras recomiendan generar un SBOM preciso y exacto para cada iteración de su producto, implementarlo manualmente cada vez requiere bastantes recursos, si no es que es completamente impráctico. 

Cuando se trata de implementar SBOM integrales, siempre se recomienda seguir la ruta de la automatización. Cada software es un paquete complicado compuesto por múltiples dependencias que probablemente también tengan sus propias dependencias. Esto significa que incluso el software más simple puede tener cientos o incluso miles de dependencias. Se necesitará mucho trabajo para compilarlos todos y mantenerlos organizados manualmente. Este artículo explica por qué la automatización es necesaria para implementar SBOM y cómo implementar la automatización para mitigar el estrés que conlleva generar SBOM manualmente. 

Por qué es importante automatizar el proceso SBOM

Una lista de materiales de software es simplemente una lista de los componentes de un producto de software (similar a una lista de ingredientes de un producto comestible). En términos generales, todo lo que necesita para crear una lista de materiales de software es una hoja de cálculo que enumere estos componentes. Sin embargo, se trata de una simplificación excesiva que casi nunca resulta práctica. Un SBOM es una lista exhaustiva con un conjunto preciso de la información requerida. Intentar procesar esta lista manualmente obviamente llevará mucho tiempo y será complicado.

Los SBOM manuales simplemente no son suficientes, por lo que la automatización es vital para implementar e incorporar SBOM. Además de la dificultad de implementar SBOM manuales, también existen riesgos relacionados con la creación manual de SBOM, sin mencionar los problemas de cumplimiento. Las siguientes son algunas de las razones por las que los SBOM se crean mejor con un sistema automatizado que recopila y compila una lista completa de software y los almacena en un repositorio que sea legible por humanos y fácil de consultar.

Amenazas cibernéticas a la cadena de suministro

El objetivo principal de generar un SBOM completo es comprender mejor los componentes del software y analizar posibles vulnerabilidades. Esto se ha convertido en una importante medida de ciberseguridad para mitigar las amenazas a cada producto de software. Un SBOM automatizado hace que el proceso de hacer esto sea más fluido. Una lista de materiales de software automatizada no solo es más segura (gracias a la firma criptográfica y la verificación automatizada de componentes), sino que la automatización también garantiza que los componentes se escaneen continuamente durante todo el proceso de integración e implementación de una iteración de software.

Ahorrar tiempo

Automatizar la implementación de SBOM significa que usted depende de herramientas avanzadas que funcionan a la velocidad de la máquina para generar su lista de materiales de software. Esto le ahorra tiempo en más de un sentido. En primer lugar, generar un SBOM de esta manera es más rápido que intentar identificar manualmente componentes individuales e incluirlos en una hoja de cálculo.

La automatización de los SBOM también hace que la detección de vulnerabilidades sea más fácil y rápida. Con los SBOM compilados manualmente, identificar las posibles ubicaciones de las vulnerabilidades es un proceso dolorosamente largo.

Las actualizaciones también son más rápidas con los SBOM. Los sistemas automatizados ejecutan comprobaciones frecuentes de su SBOM para identificar vulnerabilidades basadas en dependencias recientemente actualizadas. De esta manera, puede mitigar los riesgos más rápidamente e invertir su tiempo y recursos en otras tareas importantes en lugar de perder tiempo creando SBOM o consultándolos manualmente.

NIST y requisitos federales

Además de ser beneficiosa, la automatización de los SBOM también conlleva una importancia regulatoria. Los requisitos federales sobre SBOM, como la Ley de Transparencia y Gestión de la Cadena de Suministro Cibernético de 2014, estipulan que se deben utilizar soluciones y herramientas automáticas para generar SBOM.

De manera similar, en julio de 2021, la Administración Nacional de Información y Telecomunicaciones (NTIA) publicó pautas aprobadas a nivel federal que detallan los elementos mínimos que deben incluirse para cada SBOM. El soporte de automatización se incluyó en esta documentación. como uno de los elementos vitales de cada SBOM.

Según la NTIA, la lista de materiales del software debe ser legible por humanos y máquinas y capaz de generarse automáticamente. La implementación de un SBOM automatizado facilita el seguimiento de los datos incluidos en el documento. 

Las hojas de cálculo son ineficientes y propensas a errores

Como se señaló anteriormente, cada paquete de software tiene cientos de dependencias. Esto significa que hay miles de puntos de datos que cubrir en una lista de materiales de software típica. Las hojas de cálculo simplemente no están equipadas para gestionar este volumen de datos. Introducir todos estos puntos de datos manualmente abre la puerta a errores humanos que pueden tener graves consecuencias si no se detectan a tiempo. Es más probable que genere un SBOM preciso y completo si opta por un sistema automatizado.

Consistencia

Un beneficio importante de automatizar el proceso de generación de SBOM es que ayuda a mantener la coherencia en todo el proceso de CI/CD de las diferentes iteraciones de un producto de software. Esto incluye todos los cambios realizados en un producto mientras se está construyendo e incluso después de su lanzamiento.

Un SBOM no es estático. A medida que un producto evoluciona, se realizan revisiones en su Lista de materiales de software para capturar cada nueva dependencia agregada. Estos cambios deben comunicarse a todos los usuarios y otras partes interesadas, tanto internamente como en toda la cadena de suministro del software. Es importante que todas las partes interesadas tengan acceso a la última versión de un SBOM, así como a todas las versiones anteriores del software.

Con un SBOM preparado manualmente, mantener la coherencia y el control de versiones es difícil, y esto puede provocar conflictos y otros problemas. Un SBOM automatizado garantiza que los cambios realizados sean coherentes y que sea más fácil ver cuándo y cómo se realizaron estos cambios. Esto es difícil de lograr con un sistema manual.

Formas de automatizar listas de materiales de software

Los estándares regulatorios, como los requisitos mínimos de la NTIA para SBOM, estipulan formatos específicos para la Lista de materiales de software. Estos estándares incluyen Software Package Data Exchange (SPDX) y CycloneDX. Los equipos de seguridad de software deben saber que la naturaleza misma de estos estándares ya implica que los SBOM deben automatizarse.

Por lo tanto, cada equipo de seguridad de software debe garantizar la generación y el uso de SBOM agregando un paso automatizado que se ejecutará en un punto estratégico dentro de su proceso de desarrollo para generar el SBOM. Podría ser una herramienta de código abierto para investigar componentes de software una vez completada la compilación o una herramienta SCA que esté integrada dentro del proceso de desarrollo continuo del software. A continuación se destacan los diferentes métodos para automatizar la lista de materiales del software.

Utilice una herramienta de código abierto

Una de las formas más económicas de crear una lista de materiales de software es utilizar una herramienta de código abierto. Son prácticamente gratuitos, pero sólo ofrecen funciones rudimentarias. Existen varias herramientas de código abierto que automatizan el proceso de implementación de SBOM. Sin embargo, los informes generados por la mayoría de estas herramientas sólo se generan en dos formatos; ciclónDX y SPDX.

Un buen ejemplo de una herramienta de automatización SBOM de código abierto es Generador SBOM de Microsoft. Este generador de tiempo de compilación de uso general está diseñado para ayudar a las empresas a generar SBOM para sus paquetes de software. La herramienta ofrece soporte multiplataforma y genera SBOM en el formato estándar de intercambio de datos de paquetes de software (SPDX).

El generador SBOM de Microsoft se puede integrar en paquetes de software creados con marcos NPM, PyPI, Maven, Rust Crates, Ruby Gems, Linux y NuGet para generar la lista de dependencias y componentes. También se puede integrar con repositorios públicos de GitHub.

La herramienta genera información general sobre la documentación de SBOM como se especifica en los requisitos mínimos de SBOM. También enumera todos los archivos y paquetes junto con las relaciones entre ellos.

Utilice una herramienta de complemento

Otro enfoque para la generación automática de SBOM es hacerlo dentro de su canal de integración continua e implementación continua (canal de DevOps). Puede hacer esto utilizando un complemento de Maven que se integra en la etapa de compilación de su flujo de trabajo. Este enfoque es una forma escalable y conveniente de automatizar el proceso de generación de la lista de materiales del software directamente dentro del proceso.

Descubrirá que esto es mucho más fácil ya que lo hará dentro del entorno construido de su proyecto. Sólo tienes que pasar algunos argumentos para generar automáticamente el SBOM. Para el complemento Maven, el SBOM se genera en formato Cyclone DX.

El complemento Maven puede generar un SBOM completo que detalla todas las dependencias dentro de su proyecto. Para hacer esto, debe comenzar configurando el archivo pom.xml antes de ejecutar el comando "mvn verificar" para generar los archivos SBOM. Primero se genera un archivo bom.json antes del archivo SBOM.

El complemento Maven viene con una herramienta SCA incorporada que audita los archivos SBOM generados para las dependencias. Una vez que el archivo haya sido auditado, puede ejecutar la herramienta SCA por segunda vez para generar nuevamente la Lista de materiales del software.

Un ejemplo de una herramienta complementaria de este tipo es el Plataforma de escriba, que permite a los productores de software generar SBOM automáticamente. Va más allá de la generación de SBOM y ayuda a los usuarios a administrar y compartir sus SBOM, validar la integridad y rastrear las vulnerabilidades de sus contenedores, dependencias y canalizaciones. A continuación se ofrece una descripción general sencilla de cómo funciona Scribe para automatizar la creación de SBOM:

  • Paso 1: Regístrese e inicie sesión (gratis) en Scribe Hub. Los usuarios registran y configuran sus proyectos utilizando esta interfaz web. Un recolector de pruebas independiente, que se ejecuta en dispositivos MAC y Linux, genera el propio SBOM.
  • Paso 2: integre Scribe con su canal de integración continua. Agregar fragmentos de código de Scribe Hub a su canal de integración continua y/o a su imagen de compilación final logrará esto.
  • Paso 3: Genere y exporte la lista de materiales del software. Se genera una lista de materiales de software utilizando la herramienta CLI Scribe gensbom. El SBOM generado se puede exportar en formato CycloneDX JSON.

Utilice una herramienta de análisis de composición (SCA)

Un tercer enfoque para generar SBOM para su producto de software automáticamente es utilizar una herramienta de análisis de composición de software de terceros. Una herramienta SCA analiza su producto para identificar componentes y licencias de terceros dentro del software. La herramienta evalúa la legitimidad del código así como el cumplimiento de los requisitos de la licencia.

Los SCA escanean el código fuente, los archivos binarios, las imágenes del contenedor y los archivos de manifiesto de una pieza de software para determinar su composición y enumerar todos los componentes de código abierto incluidos en el software. Como parte del SBOM, una SCA también ejecutará estos componentes en varias bases de datos para extraer su información de seguridad, licencias y vulnerabilidades conocidas.

Una herramienta de análisis de composición de software automatiza y acelera el proceso de creación de SBOM. La herramienta está diseñada para escanear miles de puntos de datos en poco tiempo para compilar una lista de materiales de software para su producto. Las herramientas SCA lo ayudan a proteger su canal de DevOps al brindarle una supervisión completa de los componentes de un paquete de software y la procedencia de estos componentes. 

Conclusión

Aunque algunas empresas solo generan SBOM porque los requisitos reglamentarios lo han hecho obligatorio, la práctica ha demostrado ser una necesidad en lo que respecta a mitigar las amenazas a la cadena de suministro de software. Automatizar el proceso es aún más importante, ya que ayuda a reducir el trabajo tedioso y lento de compilar SBOM manualmente. La automatización de SBOM, como se destaca en cada una de las técnicas cubiertas en este artículo, puede acelerar el proceso de creación de SBOM y también hacerlo más preciso y confiable. Una herramienta complementaria como Scribe permite automatizar la creación de SBOM directamente dentro del proceso de desarrollo de su software. Consulte nuestro blog y otros recursos para ver cómo funciona Scribe para automatizar la generación de SBOM y cómo puede aprovecharlo.