¿Cómo obtener o generar SBOMs
de prácticamente cualquier software?
Para comenzar, debe generar SBOMs usando una de las diversas herramientas disponibles, dependiendo del sistema a rastrear o de la aplicación a supervisar.
Tomar el paso adicional de automatizar la generación de SBOMs asegura que su inventario de software se mantenga siempre actualizado y facilita su camino hacia la transparencia del software. Para más información sobre la automatización de la transferencia de SBOMs, consulte esta página de documentación.
Dado que la obtención de SBOMs es un tema en constante evolución, donde las herramientas aparecen o desaparecen con el tiempo, haremos nuestro mejor esfuerzo para mantener esta página actualizada y reflejar el estado actual de la comunidad de código abierto.
Contáctenos para compartir herramientas adicionales que haya encontrado para facilitar el proceso de generación de SBOM. Las revisaremos y las incluiremos aquí para ayudar a otros.Ahora, pongámonos prácticos…
Extracción de SBOM en la fase de construcción
Las aplicaciones que se crean a partir de su código fuente deberían, idealmente, generar su SBOM como un paso adicional en el proceso de CI/CD.
Se pueden usar muchas herramientas y plugins diferentes dependiendo de la tecnología subyacente de sus aplicaciones:
- Angular Webpack
- C / C++ Conan
- Dockerfile
- Erlang / Elixir Mix o Rebar3
- Go Module o una alternativa anterior
- .NET Core nuGet
- Node npm
- Java Maven, Gradle
- JavaScript Bower o Webpack
- Objective-C / Swift CocoaPods
- PHP Composer
- Python Conda o buildroot
- React Webpack
- Ruby Gem
- Rust Cargo
- Scala sbt
Alternativamente, también puede usar cdxgen, que es un generador de SBOM versátil y compatible con prácticamente todos los lenguajes de programación, gestores de paquetes y sistemas operativos.
Extracción de SBOM en la fase de despliegue
Idealmente, debería recibir el SBOM de cada solución de terceros directamente de su proveedor. Sin embargo, muchos proveedores aún no están preparados para esto. Por lo tanto, es posible que deba generar el SBOM de las aplicaciones de terceros usted mismo, mientras la industria madura en esta área.
Afortunadamente, esto puede ser completamente automatizado e integrado en su proceso de despliegue. En esta sección, le mostraremos las herramientas que puede usar para esta extracción.
Aplicaciones instaladas a través de gestores de paquetes
Los SBOMs para aplicaciones instaladas a través de gestores de paquetes se pueden escanear bastante fácilmente con herramientas como syft o spdx. En los siguientes ejemplos, nos centraremos en syft, ya que no requiere conversión y es algo más maduro que spdx.
Linux / MacOS
El análisis puede realizarse en cualquier distribución:
# Instalar Syft
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo sh -s -- -b /usr/local/bin
# Escanear todo el host
sudo /usr/local/bin/syft scan dir:/ --output cyclonedx-json > "$HOSTNAME.sbom.json"
O, si tiene Docker en esta máquina y prefiere usar syft sin instalación previa para escanear el host, simplemente ejecute:
docker run --rm -a stdout -v /:/host:ro anchore/syft scan dir:/host --output cyclonedx-json > "$HOSTNAME.sbom.json"
Windows
De manera similar, para Windows, la última versión binaria de Syft se puede descargar desde la página de lanzamientos. A veces, la versión para Windows se publica después de las versiones para Linux y Darwin. Utilice una versión binaria anterior o ejecute la versión para Linux en WSL o la versión Docker si desea tener la versión más reciente sin esperar.
Para ejecutar la versión de Windows, ajuste el siguiente comando según sea necesario en un símbolo del sistema con privilegios administrativos:
syft scan dir:"c:" --output cyclonedx-json > "%ComputerName%.sbom.json"
Entornos virtuales
Contenedores Docker
Recomendamos el uso de nuestro sencillo script syft.sh
, que se muestra a continuación.
#!/bin/bash
docker run --rm
-v /:/host:ro
-v ${PWD}:/out
-v /var/lib/docker/volumes:/var/lib/docker/volumes:ro
-v /var/run/docker.sock:/var/run/docker.sock:ro
-a stdin -a stdout -a stderr
-i anchore/syft "$@"
Se puede usar de muchas maneras diferentes (verifique todas las opciones con syft.sh --help
). Por ejemplo, para escanear imágenes existentes, usaría:
# Reemplace el marcador de posición {{container:tag}}
syft.sh scan registry:{{container:tag}} --output cyclonedx-json > {{container:tag}}.sbom.json
Sistema Operativo / Máquina Virtual / Otras Aplicaciones
Las aplicaciones instaladas manualmente, incluidas las aplicaciones de código cerrado, son actualmente más difíciles de escanear. Puede buscar aplicaciones instaladas a través de gestores de paquetes usando syft, como se mostró en la sección anterior, o posiblemente cubrir escenarios adicionales con cdxgen.
# Escanear solo paquetes del SO con syft (por ejemplo, Debian)
syft scan dir:/var/lib/dpkg --output cyclonedx-json > "$HOSTNAME.sbom.json"
# Escanear todo con syft (puede ser lento)
syft scan dir:/ --output cyclonedx-json > "$HOSTNAME.sbom.json"
Archivos Binarios / Aplicaciones Móviles
El análisis de archivos binarios, como los paquetes para aplicaciones móviles (APK para Android e IPA para iOS), presenta desafíos significativos. Sin embargo, esta práctica sigue siendo importante, especialmente en casos donde el proveedor aún no ha proporcionado una lista de componentes de software (SBOM - Software Bill of Materials). cve-bin-tool puede ser útil en tales situaciones para extraer información específica:
cve-bin-tool --nvd api2 --sbom-type cyclonedx --sbom-output application.sbom.json Application.apk
Conclusión
La comunidad ofrece muchas herramientas diferentes para la extracción y generación de SBOM. Esperamos que esta página le haya ayudado a seleccionar las más adecuadas para su caso.
Los SBOM ya son un estándar en la entrega de software al gobierno de los EE. UU. Confiamos en que esta práctica se desarrollará a nivel mundial y que el SBOM se convertirá en un artefacto de entrega estándar que ayudará a la industria a mejorar la transparencia de la cadena de suministro.
La creación de un SBOM es solo el primer paso en su camino. Para una integración más sencilla y un uso optimizado, ofrecemos una versión gestionada de Dependency-Track como solución en la nube.
A continuación, le recomendamos nuestra página sobre automatización de la transferencia de SBOM.
¿Aún no está seguro de cómo extraer un SBOM?
¡Póngase en contacto con nosotros hoy mismo!