Cómo generar una lista de materiales de software (SBOM)

Los paquetes de software modernos son más seguros que nunca gracias a los avances en las prácticas de ciberseguridad. Sin embargo, también enfrentan las amenazas más avanzadas, lo que los hace tan vulnerables como seguros. Ataques a la cadena de suministro como Vientos solares y vulnerabilidades graves como Log4Shell se encuentran entre las últimas amenazas que enfrentan los sistemas de software en la actualidad. Los ataques a la cadena de suministro de software como estos tienen efectos dinámicos y son más difíciles de navegar porque explotan vulnerabilidades en sistemas que están fuera de su control directo.

Sin embargo, el primer paso para combatir ataques como estos a la cadena de suministro de software es tener un conocimiento claro de los paquetes, dependencias y componentes incluidos en su software. Por eso es importante generar una lista de materiales de software (SBOM) para su construcción. No solo mejora la visibilidad de las vulnerabilidades en la cadena de suministro de software: un SBOM también se ha vuelto importante para fines de cumplimiento. La generación SBOM ha sido ordenada por un reciente orden ejecutiva emitida por el gobierno federal de EE. UU. para mejorar la ciberseguridad y garantizar la autenticidad de los componentes de terceros utilizados en los paquetes de software.

De acuerdo a una Gartner Como predicción, el 60% de las organizaciones que están a cargo del desarrollo de software de infraestructura crítica requerirán SBOM estandarizados para 2025. La creación de un SBOM comienza con la selección de una herramienta que se alinee con los estándares y objetivos de su organización, determinando las fases del ciclo de vida de la construcción del software durante las cuales aplique el SBOM, confirme que cumple con el formato y realice un escaneo de vulnerabilidades. Generar un SBOM es un proceso delicado y complicado. Este artículo cubrirá cuándo es necesaria la generación de SBOM y cómo generarla para su software.

Cuándo generar una lista de materiales de software

Generar una lista de materiales de software (SBOM) es esencial para proteger sus compilaciones de software, así como toda su cadena de suministro de software. La generación de SBOM se puede integrar en varias etapas del proceso de compilación de su software. Puede generar una lista de materiales utilizando el código fuente durante el tiempo de compilación, durante el tiempo de ejecución o mientras realiza análisis forenses del software. De todos estos, los expertos recomiendan generar un SBOM durante el tiempo de construcción. Esto se debe a que los generadores SBOM en tiempo de compilación son más precisos y generan una lista más completa de dependencias. Sin embargo, como esto no siempre es práctico, el SBOM se puede generar en cualquier otro momento durante el ciclo de vida de DevOps.

Vale la pena señalar que el tipo de herramienta de generación de SBOM que se utilizará depende de en qué etapa del ciclo de vida de DevOps se esté generando la documentación de SBOM. Las siguientes son las diferentes etapas en las que se pueden generar SBOM durante el ciclo de vida de compilación. Cada período tiene diferentes ventajas y compensaciones. Es mejor comprender el público objetivo y el caso de uso de los datos SBOM que está generando y elegir un enfoque que le brinde el mejor resultado.

En la etapa del código fuente

Al examinar los artefactos y cualquier fuente asociada, como manifiestos, metadatos y archivos de bloqueo, las herramientas fuente o binarias generarán una lista de materiales de software en la etapa del código fuente. En esta etapa, puede realizar un análisis de componentes de software o un análisis binario de su software.

Una herramienta SCA (análisis de componentes de software) está diseñada para analizar una pieza de software y sus archivos de manifiesto para determinar sus componentes. Las herramientas de análisis binario, por otro lado, analizan los metadatos del software y crean información de artefactos para generar un SBOM. Ejemplos de herramientas de análisis utilizadas en esta etapa incluyen CycloneDX, It-Depends, Fossa, AppSonar, Cybellum, Black Duck y Fortress.

Puede utilizar un analizador de vulnerabilidad junto con un SBOM generado en la etapa del código fuente para recibir advertencias tempranas de vulnerabilidad en el software que se está creando. Sin embargo, existen limitaciones para los SBOM generados en esta etapa. Por un lado, no están completos, ya que a menudo faltan los generados durante la compilación con información de dependencia. Además, pueden incluir información sobre componentes que no se utilizaron en el producto implementado final.

Durante el tiempo de construcción

La creación del SBOM en el momento de la compilación con una herramienta que aprovecha el sistema de compilación tiene el conocimiento más exacto de lo que contiene un binario, incluidas las dependencias transitivas y no fijadas. Esto es apoyado por el  Estudio de la NTIA sobre la producción y suministro de SBOM de proveedores de software.

La NTIA recomienda crear un SBOM para cada nueva versión de componente. Esto significa crear un SBOM nuevo cada vez que actualiza o lanza una nueva versión de su software. Los proveedores también deben crear SBOM nuevos cada vez que descubren un error en el anterior o aprenden nueva información sobre sus componentes de software que no estaba documentada previamente.

Generar su SBOM durante el tiempo de compilación implica el uso de un complemento que funcione con el entorno nativo con el que está creando su software. La mayoría de los entornos de desarrollo tienen complementos que se integran con el sistema de gestión de dependencias para generar un SBOM automáticamente. Ejemplos de generadores SBOM en tiempo de compilación incluyen SPDX, el complemento CycloneDX Maven y Dependency-Track-Check de OWASP.

Aunque los generadores SBOM Build-time son los más completos y precisos, son más difíciles de configurar en comparación con otros métodos. Además, este método no funciona para algunos sistemas de compilación y no puede utilizarlo para productos heredados. 

Generando SBOM durante el tiempo de ejecución

Un generador SBOM que funciona durante el tiempo de ejecución está diseñado para capturar las bibliotecas que el software, el servidor de aplicaciones o los complementos utilizan durante el tiempo de ejecución. Este tipo de generador también detalla todos los servicios llamados por el software así como los puertos y bibliotecas activas a las que accede. Sin embargo, este método de generar SBOM no está ampliamente disponible. Además, no existe un flujo de trabajo claro para fusionar los datos generados mediante este método con la documentación original de SBOM. Jbom de SESLOC y Mapeador de amenazas son ejemplos de generadores SBOM en tiempo de ejecución.

Cómo generar una lista de materiales de software: una guía paso a paso

Generar una lista de materiales de software manualmente requiere mucho tiempo y es tedioso para los desarrolladores. Enumerar todos los componentes de un programa de software de esta manera resulta poco práctico. Sin embargo, ahora hay disponibles numerosas herramientas de generación de SBOM que simplifican este proceso. La forma de hacerlo depende de los estándares de su organización y de cuándo desea generar su SBOM durante el ciclo de vida de desarrollo.

Al integrar los flujos de trabajo de SBOM en los procesos de creación de software, puede automatizar el proceso de SBOM. La plataforma Escriba es una de esas herramientas que simplifica la forma de crear su lista de materiales de software. Scribe le permite administrar y compartir su SBOM desde un solo lugar. De esta manera, puede validar la integridad de sus componentes de software y realizar un seguimiento de las vulnerabilidades en el proceso de software sin problemas. Esta sección es una guía paso a paso para generar listas de materiales de software con Scribe.

Paso 1: Regístrese e inicie sesión en Scribe Trust Hub.

Antes de comenzar, debe saber que la plataforma Scribe tiene una interfaz web, Scribe Trust Hub, a la que puede acceder desde su navegador. Sin embargo, el recolector de pruebas Scribe solo se ejecuta en dispositivos Linux y Mac. Para generar un informe de integridad y SBOM con Scribe, debe tener permiso para modificar el script de compilación de su proyecto y agregar el fragmento de código relevante necesario para conectar su proyecto a Scribe. Tenga en cuenta que, si bien Scribe puede generar SBOM para proyectos escritos en cualquier lenguaje de programación que genere una imagen de contenedor, la versión actual solo funciona para proyectos Node.js.

El primer paso para integrar Scribe en su proyecto es registrarse en Scribe Trust Hub. Una vez que se haya registrado e iniciado sesión, navegue hasta la pestaña "Productos" y haga clic en Configuración. Scribe tiene un producto de demostración en esta página, con el que puede interactuar para familiarizarse con la plataforma y cómo funciona.

Paso 2: integrar Scribe Trust Hub

El siguiente paso es conectar Scribe al proceso de integración continua de su proyecto. Esto automatiza el proceso de generación de SBOM. Generalmente, puede agregar fragmentos de código de Scribe Trust Hub en dos puntos de su canal de CI. Puede colocar el código en la caja del código fuente o en la imagen final construida. La primera opción es recomendable pero no obligatoria, mientras que la segunda sí es obligatoria.

Actualmente, la configuración de CI de Scribe solo funciona para Jenkins sobre Kubernetes y GitHub Actions. El proceso de integración de Scribe para estas configuraciones de CI es similar. Necesitará obtener las siguientes credenciales en la página de configuración del producto Scribe Hub para comenzar:

  • Clave del producto
  • ID de cliente
  • Secreto del cliente

La clave del producto varía de un producto a otro, mientras que las credenciales del cliente son exclusivas de su cuenta.

Configurar la integración de CI para Jenkins

Para configurar integraciones de CI para Jenkins, puede agregar el fragmento de código para llamar a "Gensbom" (herramienta de Scribe Trust Hubs para recopilar evidencia y generar SBOM) en el punto de pago y/o después de crear una imagen de Docker.

Comience agregando las credenciales anteriores a su entorno de compilación de acuerdo con las instrucciones exclusivas para Jenkins. A continuación, agregue el fragmento de código a su canalización de acuerdo con las instrucciones.

Configurar la integración de CI para GitHub Actions

El proceso de configuración de la integración de CI para GitHub Actions es similar al de Jenkins. La idea principal es llamar al recolector de evidencia y generador de SBOM de Scribe conocido como “Gensbom”. Para comenzar, siga las Instrucciones de GitHub para agregar las credenciales de configuración del producto y el fragmento de código a la canalización de acuerdo con las instrucciones aquí

Integración de Scribe Trust Hub con otros sistemas de CI

Aunque Scribe solo ofrece soporte nativo para acciones de Jenkins y GitHub, es posible que también puedas usarlo para otros sistemas de CI. Para comenzar, descargue la herramienta "Gensbom" desde su interfaz de línea de comandos basada en Unix. A continuación, agregue su producto y las credenciales del cliente, luego llame a Scribe gensbom desde su script de compilación, ya sea al finalizar la compra o después de la imagen final creada.

Paso 3: Generar la lista de materiales del software

La herramienta CLI gensbom de Scribe genera la lista de materiales de software (SBOM) para Docker y Open Containers Images (OCI). Esta herramienta sólo se ejecuta en sistemas Mac o Linux. El SBOM final generado por Scribe está en formato CycloneDX JSON, que es una de las máquinas estándar y formatos legibles por humanos reconocidos para SBOM. Las imágenes del contenedor abierto se pueden extraer de Docker, un disco local o un registro remoto, según sea el caso.

Aunque existen configuraciones predeterminadas para el nombre, directorio y ruta de la imagen a partir de la cual se genera el SBOM, es posible cambiar estas configuraciones predeterminadas en consecuencia si lo desea.

Paso 4: exportar SBOM

Scribe Trust Hub también le permite exportar y compartir su lista de materiales de software sin problemas como parte del proceso de validación de su software. El SBOM se genera en formato de informe CycloneDX JSON y detalla todas las dependencias de código abierto de la imagen de Docker analizada. Una vez generado el SBOM, podrás exportarlo con un solo clic. Encontrará el botón "Exportar SBOM" en la esquina superior derecha del informe. Haga clic en él para exportar sus listas de materiales de software.

Conclusión

Generar una lista de materiales de software se está convirtiendo en un paso cada vez más vital para proteger su cadena de suministro de software y también con fines de cumplimiento. Independientemente de sus motivos para generar un SBOM, encontrará que Scribe Trust Hub es una forma flexible y fácil de usar de automatizar el flujo de trabajo de generación de SBOM para cada una de sus compilaciones de software.