Skip to main content

Crear SBOM con Snyk CLI

Escrito por
feature snyk platform learn using snyk with CI CD

5 de febrero de 2025

0 minutos de lectura

La lista de materiales de software (SBOM) se está convirtiendo rápidamente en un elemento esencial de la seguridad y el cumplimiento del código abierto. En esta publicación, veremos qué son los SBOM, por qué son necesarios y qué papel desempeñan en la seguridad del código abierto.

¿Qué son los SBOM?

Una lista de materiales de software (SBOM) es un inventario completo de todos los componentes que se usan en un producto de software. Incluye todos los detalles necesarios de cada componente, como su nombre, versión e información sobre licencias. Los SBOM pueden considerarse la lista de ingredientes de un software, ya que ofrecen transparencia total sobre los elementos que componen un producto.

Piensa en un proyecto sencillo de Python con varias dependencias. Un ejemplo simplificado de su SBOM podría verse así:

[
    {
        "component_name": "numpy",
        "version": "1.21.0",
        "license": "BSD"
    },
    {
        "component_name": "pandas",
        "version": "1.3.0",
        "license": "BSD"
    }
]

Aviso:

El código anterior es un fragmento simplificado de un posible SBOM. Este ejemplo es solo ilustrativo y no funcionará al escanearlo porque está incompleto.


¿Por qué necesitamos los SBOM?

Los SBOM cumplen una función fundamental para entender la composición de nuestro software. Pero en el desarrollo de código abierto, desempeñan un papel aún más importante. Los componentes de código abierto suelen tener sus propias dependencias, lo que crea una compleja red de componentes interconectados. Los SBOM ayudan a desenredar esta red y nos permiten entender el alcance total de nuestra exposición a posibles riesgos de seguridad o problemas de cumplimiento derivados de dependencias de terceros en nuestras aplicaciones.

Entregar un SBOM junto con el artefacto creado es fundamental, porque permite que quien use el software evalúe el estado de seguridad del proyecto. Si se divulga una vulnerabilidad grave en un paquete de código abierto específico, como sucedió con Log4Shell y Spring4Shell, quienes usen los componentes vulnerables podrán determinar si la vulnerabilidad los afecta.

Los SBOM son un valioso complemento para cualquier software y deberían incluirse en cada lanzamiento. Aportan transparencia, mejoran la seguridad y el cumplimiento, y contribuyen a crear software de mayor calidad.

Crear SBOM con Snyk CLI

La interfaz de línea de comandos (CLI) de Snyk es una herramienta de seguridad de código abierto que permite a desarrolladores y profesionales de DevOps encontrar, corregir y monitorear vulnerabilidades conocidas en dependencias de código abierto. Snyk CLI admite una amplia variedad de lenguajes de programación y administradores de paquetes, como JavaScript (npm, yarn), Python (pip), Java (Maven), .NET (NuGet), Ruby (RubyGems), PHP (Composer) y otros. Puedes usar Snyk CLI localmente o en una canalización para analizar proyectos de software con SAST, SCA, contenedores e IaC.

Y ahora también puede crear SBOM para tus proyectos.

Instalar Snyk CLI

Para empezar a usar Snyk CLI, debes instalarlo en tu entorno de desarrollo. A continuación encontrarás una guía sencilla para instalar Snyk CLI con npm. Para obtener más información o conocer otras formas de instalarlo, consulta nuestra documentación para usuarios.

npm install -g snyk

Después de instalar Snyk CLI, debes autenticar tu cuenta con el comando snyk auth. Se abrirá un navegador web para que inicies sesión o crees una cuenta de Snyk.

snyk auth

También puedes configurar tu token de Snyk como una variable de entorno, que es la forma recomendada de usar la CLI en una canalización de CI/CD. Consulta nuestra práctica guía rápida de la CLI o la documentación oficial para obtener más información.

Generar SBOM con Snyk CLI

Cuando la CLI esté lista y conectada a una cuenta empresarial de Snyk, podrás empezar a crear SBOM para tus proyectos de software con el siguiente comando:

snyk sbom --format=<cyclonedx1.4+json|cyclonedx1.4+xml|cyclonedx1.5+json|cyclonedx1.5+xml|cyclonedx1.6+json|cyclonedx1.6+xml|spdx2.3+json>

La opción --format es obligatoria y especifica el formato de salida del SBOM. Puedes elegir entre CylconeDX, XML o SPDX en formato JSON.

Puedes guardar los SBOM en un archivo con la opción --json-file-output=<OUTPUT_FILE_PATH> para exportar la salida JSON del SBOM a un archivo JSON.

snyk sbom --format=cyclonedx1.4+json --json-file-output=mysbom.json

Si ejecutas este comando desde el directorio raíz de tu proyecto, obtendrás un archivo SBOM que puedes distribuir junto con tu artefacto.

Varios proyectos

Snyk CLI usa el archivo de manifiesto de paquetes de tu sistema de compilación para determinar el árbol de dependencias y, por lo tanto, el contenido del SBOM. De forma predeterminada, la CLI se detiene cuando encuentra un archivo de manifiesto. Sin embargo, es posible que tu proyecto tenga varios archivos de manifiesto y más de un sistema de compilación. Por ejemplo, podrías tener un proyecto con un backend de Java que usa Maven y un frontend de Node.js que usa npm. Si agregas la opción --all-projects al comando de SBOM, Snyk CLI recorrerá tu proyecto para buscar archivos de manifiesto y agregarlos al resultado o a la salida del SBOM.

snyk sbom --format=cyclonedx1.4+json --all-projects --json-file-output=mysbom.json

La profundidad predeterminada de búsqueda de archivos de manifiesto es cuatro; puedes configurarla con la opción --detection-depth. También puedes excluir archivos específicos con la opción --exclude.

snyk sbom --format=cyclonedx1.4+json --all-projects --detection-depth=3 --exclude=package.json --json-file-output=mysbom.json

Ten en cuenta que hay muchas opciones de línea de comandos para manejar ecosistemas específicos, como archivos Maven multimódulo, atributos de configuración de Gradle y espacios de trabajo de Yarn, entre otros. Para consultar todas las opciones disponibles para Snyk SBOM, revisa nuestra amplia página de documentación.

Automatizar la generación de SBOM con Snyk CLI

Automatizar la generación de listas de materiales de software con Snyk CLI es un paso fundamental para mejorar la seguridad y el cumplimiento en la canalización de CI/CD. Al integrar Snyk CLI en tu proceso de compilación, puedes generar automáticamente un SBOM completo cada vez que se compile tu código. Este SBOM enumera todas las dependencias, incluidas las transitivas.

A medida que el código avanza por la canalización de CI/CD, Snyk no solo puede encontrar vulnerabilidades de seguridad, sino también garantizar que se genere un SBOM actualizado y se entregue con cada versión de la compilación. Esta automatización agiliza el mantenimiento de un SBOM seguro y actualizado e incorpora prácticas de seguridad al ciclo de vida del desarrollo de software. Así, es más fácil cumplir con los requisitos normativos y los estándares de la industria, y generar confianza entre tus clientes.

Analizar SBOM

Crear SBOM es una forma eficaz y sencilla de usar Snyk CLI. Pero ¿qué pasa si necesitas usar un SBOM y comprobar si un paquete de software contiene vulnerabilidades conocidas? Actualmente, tienes varias opciones:

Prueba de SBOM con Snyk CLI

Snyk CLI no solo puede crear un SBOM para tu proyecto, sino también analizarlo. Si Snyk CLI está conectada a una cuenta empresarial, puedes indicarle que use un archivo SBOM, como se muestra a continuación:

snyk sbom test --file=mysbom.json --experimental

Al momento de escribir esto, todavía se trata de una función experimental, de ahí la opción `--experimental`. Ten en cuenta también que, actualmente, solo acepta archivos JSON en UTF-8 para

  • CycloneDX: versiones 1.4, 1.5 y 1.6

  • SPDX: JSON versión 2.3

Consulta la documentación de Snyk CLI SBOM Test para conocer las últimas novedades sobre esta función y otras opciones disponibles.

Salida de terminal que muestra vulnerabilidades detectadas por Snyk CLI, incluidos problemas de denegación de servicio, ejecución remota de código y control de acceso.

Bomber

Bomber es una aplicación de código abierto que analiza SBOM en busca de vulnerabilidades de seguridad. Snyk es uno de los proveedores integrados en bomber para analizar SBOM.

Para instalar bomber, descarga la versión más reciente desde el repositorio oficial de GitHub, usa Homebrew en macOS o la herramienta dpkg en Linux.

Homebrew (macOS):

brew tap devops-kung-fu/homebrew-tap
brew install devops-kung-fu/homebrew-tap/bomber

Dpkg (Linux):

dpkg -i bomber_0.4.1_linux_arm64.deb

Para ejecutar bomber desde la línea de comandos con Snyk, deberás proporcionar un token de API de Snyk. Puedes obtenerlo desde la interfaz web de Snyk. Si tienes la CLI instalada en tu equipo local, también puedes ejecutar snyk config get api.

Cuando tengas el token de API de Snyk, puedes ejecutar bomber así:

bomber scan --provider snyk --token xxx mysbom.json

La salida mostrará en pantalla todas las vulnerabilidades conocidas.

Escáner SBOM Bomber con el proveedor de integración de Snyk para dependencias de Java Maven.

Proporcionar SBOM actualizados con Snyk

Snyk CLI puede ayudarte a crear SBOM actualizados para cada compilación de tu software. Incluir un SBOM con el artefacto compilado es una buena práctica y, en algunos casos, un requisito para cumplir con las normas.

Automatizar la generación de SBOM en tu canalización con Snyk CLI es una forma sencilla de lograrlo. Para terminar, te recomiendo estos próximos pasos para trabajar con SBOM en tus proyectos:

Comienza a usar Snyk CLI

Instala Snyk CLI para encontrar y corregir vulnerabilidades en tus proyectos locales y pipelines. 

npm install snyk -g