Lista de materiales de software (SBOM)
Haga un inventario del contenido de su software.
Lista de materiales de software (SBOM) es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.
Qué es una SBOM
Una lista de materiales de software (SBOM) es un inventario formal y legible por máquinas de cada componente de una pieza de software: bibliotecas, sus versiones, licencias e información del proveedor.
Al igual que la etiqueta de un alimento enumera sus ingredientes, una SBOM le permite responder en segundos: ¿este producto contiene la versión vulnerable de X? Sin ella, esa pregunta puede requerir días de investigación manual.
Por qué las SBOM son importantes ahora
Cuando aparece una vulnerabilidad crítica, la primera pregunta operativa es el alcance de la exposición: ¿cuáles de nuestros productos incluyen el componente afectado?
Durante el incidente de Log4Shell, las organizaciones con SBOM consultaron su inventario y priorizaron las medidas en cuestión de horas. Las que no tenían SBOM pasaron semanas buscando con grep en directorios de compilación. Cada vez más, los reguladores y los grandes compradores exigen SBOM como condición de contratación.
- Análisis rápido del impacto de las vulnerabilidades
- Cumplimiento de licencias y seguimiento de obligaciones
- Transparencia de la cadena de suministro para clientes y auditores
Formatos estándar de SBOM
Dominan dos estándares abiertos. Normalmente, las herramientas pueden convertir uno al otro.
- SPDX — un estándar de Linux Foundation, sólido en materia de licencias y ampliamente aceptado por los reguladores
- CycloneDX — un estándar de OWASP, centrado en la seguridad y compatible con datos de vulnerabilidades y relaciones entre dependencias
Evite inventar su propio formato; los consumidores y los analizadores esperan estos formatos.
Qué incluye una entrada
Cada entrada de componente debe contener suficiente información de identidad para poder compararla con fuentes de vulnerabilidades. Estos son los campos principales:
- nombre y versión — exactos, no un rango
- PURL (URL de paquete) — un identificador universal como
pkg:npm/lodash@4.17.21 - hash — para verificar la integridad
- licencia — identificador de licencia SPDX
- proveedor — quién lo produjo
# A PURL uniquely identifies a component across ecosystems
pkg:npm/lodash@4.17.21
pkg:pypi/requests@2.31.0
pkg:golang/github.com/gin-gonic/gin@v1.9.1Generación de una SBOM
Genere SBOM automáticamente a partir del código fuente o de un artefacto compilado. Syft es un generador común para distintos ecosistemas que produce ambos estándares.
# from a project directory (CycloneDX JSON)
syft dir:. -o cyclonedx-json=sbom.cdx.json
# from a container image (SPDX JSON)
syft my-app:1.4.0 -o spdx-json=sbom.spdx.json
# CycloneDX has native generators per ecosystem too
cyclonedx-npm --output-file sbom.jsonSBOM de código fuente frente a SBOM de compilación y de tiempo de ejecución
Una SBOM generada en distintas etapas captura realidades diferentes.
- SBOM de código fuente — lo que declara el manifiesto; puede omitir código incluido en paquetes o incorporado mediante vendoring
- SBOM de compilación — lo que incorporó realmente la compilación; es la más precisa para una versión
- SBOM de tiempo de ejecución / implementada — lo que está presente realmente en la imagen en ejecución, incluidos los paquetes del sistema operativo
Para garantizar la seguridad de la cadena de suministro, genérela durante la compilación a partir del artefacto real y analice también el contenedor final para detectar paquetes del sistema operativo.
Análisis de vulnerabilidades de una SBOM
Una SBOM se vuelve especialmente útil cuando se proporciona a un motor de comparación que asocia los componentes con CVE conocidas. Esto desacopla la generación del análisis: puede analizar una SBOM antigua el día en que se divulga una nueva CVE.
# match an SBOM against vulnerability databases
grype sbom:sbom.cdx.json
# OSV scanner consumes SBOMs directly
osv-scanner --sbom=sbom.spdx.json
# fail CI above a severity threshold
grype sbom:sbom.cdx.json --fail-on highVEX: indicar qué es explotable
Una SBOM puede mostrar un componente vulnerable que en realidad no es explotable en su producto (la función vulnerable nunca se llama). Un documento VEX (Vulnerability Exploitability eXchange) registra esa evaluación.
VEX reduce el ruido: en lugar de que cada cliente entre en pánico por una CVE incluida en la lista, puede publicar una declaración de not_affected con su justificación, o de affected con las medidas de corrección. Convierte un inventario sin procesar en una priorización práctica.
Distribución y firma de SBOM
Una SBOM solo es confiable si es auténtica y está vinculada al artefacto exacto que describe. Fírmela y adjúntela como una atestación, no como un archivo suelto.
# attach a signed SBOM attestation to an image with cosign
cosign attest --predicate sbom.cdx.json \
--type cyclonedx \
my-registry/my-app:1.4.0
# verify the attached SBOM attestation
cosign verify-attestation --type cyclonedx my-registry/my-app:1.4.0Automatización de SBOM en CI
Las SBOM manuales quedan obsoletas de inmediato. Integre la generación en el flujo para que cada versión produzca y almacene una como artefacto de compilación, idealmente firmada y analizada en el mismo trabajo.
- Genérela a partir del artefacto compilado, no solo del repositorio
- Almacene las SBOM en un registro consultable identificado por versión
- Vuelva a analizar las SBOM almacenadas periódicamente con fuentes de CVE actualizadas
- Bloquee las publicaciones según el resultado del análisis de vulnerabilidades
Errores comunes con las SBOM
Las SBOM fallan silenciosamente cuando se tratan como un simple requisito que marcar.
- Obsoleta — se genera una vez y nunca vuelve a generarse
- Incompleta — omite paquetes del sistema operativo y código enlazado estáticamente o incorporado mediante vendoring
- Sin verificar — no hay ningún hash que la vincule al artefacto implementado
- Sin uso — se produce, pero nunca se analiza ni se consulta
El objetivo es una SBOM precisa, regenerada, firmada y analizada continuamente, no un archivo JSON aislado.
Comprobación rápida: finalidad de una SBOM
Aplique lo aprendido a un escenario de incidente.
Repaso: SBOM
Ahora puede inventariar el contenido de su software y actuar en consecuencia.
- Una SBOM es una lista legible por máquinas de cada componente, en formato SPDX o CycloneDX
- Identifique los componentes mediante su PURL, versión, hash y licencia
- Genérela durante la compilación y pásela después a un motor de comparación (grype, osv-scanner) para detectar CVE
- Utilice VEX para declarar la explotabilidad real y reducir las falsas alarmas
- Firme y automatice el proceso en CI; vuelva a analizar las SBOM almacenadas con fuentes nuevas
A continuación: demostrar el origen de los artefactos mediante su firma.
Preguntas frecuentes
¿La lección «Lista de materiales de software (SBOM)» es gratis?
Sí — el texto completo de «Lista de materiales de software (SBOM)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Lista de materiales de software (SBOM)»?
Haga un inventario del contenido de su software. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cyber Security Academy?
No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Lista de materiales de software (SBOM)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?
Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Amenazas a la cadena de suministro
- Lista de materiales de software (SBOM)
- Firma de dependencias y artefactos
- Protección de pipelines de CI/CD