SBOM (Software Bill of Materials): Qué Es y Por Qué Necesitas Uno
Un software bill of materials (SBOM) es un inventario completo de los componentes de tu app. Conoce formatos de SBOM, generación, VEX y por qué lo necesitas.
Si alguien te pidiera enumerar cada ingrediente del software que entregaste la semana pasada — cada biblioteca de código abierto, cada dependencia transitiva cinco niveles más abajo, cada versión y licencia —, ¿podrías producir esa lista en los próximos cinco minutos? Para la mayoría de los equipos, la respuesta honesta es no. Un software bill of materials (SBOM) existe para cambiar esa respuesta a un sí. Un SBOM es un inventario completo y estructurado de los componentes que conforman un software: las dependencias directas que elegiste, las transitivas que estas arrastraron, las versiones de cada una, las licencias asociadas y las relaciones que las vinculan. Piénsalo como la etiqueta nutricional y la lista de ingredientes de tu aplicación, solo que legible por máquina y creado para ser consultado.
Esa definición suena modesta hasta que te detienes a pensar en sus implicaciones. Las aplicaciones modernas se ensamblan mucho más de lo que se escriben desde cero. El código que escribió tu equipo suele ser una capa delgada sobre cientos o miles de paquetes de código abierto. Cuando no tienes un inventario preciso de esa capa, cada pregunta sobre la supply chain se convierte en una excavación arqueológica. Un SBOM es el artefacto que hace visible lo invisible.
Qué contiene realmente un SBOM
Como mínimo, un SBOM útil registra el nombre de cada componente, su proveedor u origen, una versión precisa, un identificador único (como un package URL o CPE), la licencia y cómo dependen unos componentes de otros. Esta última parte — las relaciones de dependencia — es lo que separa a un SBOM de verdad de una lista plana de nombres de paquetes. Saber que tu servicio incluye una biblioteca de logging es útil; saber que esa biblioteca de logging entra de forma transitiva a través de un web framework que no puedes cambiar con facilidad es lo que te permite planificar una corrección.
Un buen SBOM también está referenciado criptográficamente al build exacto que describe. Un inventario que no corresponde a un artefacto específico e inmutable es una suposición. El valor viene de poder afirmar: este SBOM describe esta imagen de contenedor, construida a partir de este commit, en este momento.
Por qué el software bill of materials importa ahora
Tres fuerzas han empujado a los SBOM de un "estaría bien tenerlo" a una necesidad operativa.
Transparencia de la supply chain. Los incidentes de alto perfil de los últimos años dejaron dolorosamente claro que las organizaciones a menudo no saben qué están ejecutando. El OWASP Top 10 de 2025 refleja esta realidad: las fallas de la supply chain de software ahora se destacan de forma prominente bajo A03, una ampliación respecto del antiguo enfoque de "componentes vulnerables y desactualizados". No puedes proteger lo que no puedes enumerar, y un SBOM es la enumeración.
Análisis de impacto rápido. Este es el beneficio del día a día. Cuando se divulga una vulnerabilidad grave en una biblioteca de amplio uso, el reloj empieza a correr de inmediato. Los equipos sin SBOM gastan las primeras horas — a veces días — solo en averiguar dónde vive el componente afectado. Los equipos con un índice de SBOM actualizado ejecutan una consulta: ¿cuáles de nuestros artefactos incluyen este paquete en una versión afectada? La diferencia entre esas dos experiencias es la diferencia entre una respuesta mesurada y un incendio que apagar.
Cumplimiento de licencias. Cada dependencia trae términos de licencia, y esos términos conllevan obligaciones reales — atribución, divulgación del código fuente, restricciones a la redistribución. Un SBOM que captura los metadatos de licencia permite que el área legal y la de ingeniería vean las obligaciones en todo el portafolio, en lugar de descubrir una licencia problemática durante la debida diligencia de una adquisición. (Para un tratamiento más profundo, consulta nuestra guía de cumplimiento de licencias de código abierto.)
Impulsores regulatorios. El panorama de políticas avanza hacia tratar los SBOM como una expectativa. En Estados Unidos, la Executive Order 14028 orientó a las agencias y a sus proveedores de software a proporcionar SBOM, y la NTIA publicó un conjunto de elementos mínimos que describen qué debe contener un SBOM de referencia y cómo debe entregarse. En la Unión Europea, el Cyber Resilience Act (EU CRA) está empujando a los fabricantes de productos digitales a documentar componentes y gestionar vulnerabilidades a lo largo de todo el ciclo de vida de un producto. Estos marcos difieren en alcance y plazos, y los detalles siguen evolucionando — la conclusión práctica es direccional, no absoluta: la expectativa de saber y divulgar qué hay en tu software se está convirtiendo en un piso mínimo, no en un diferenciador.
Los formatos estándar: SPDX y CycloneDX
No tienes que inventar un formato. Dos estándares abiertos dominan, y ambos cuentan con amplio soporte.
SPDX (Software Package Data Exchange) surgió con un fuerte enfoque en los metadatos de licencia y cumplimiento y es un formato estandarizado por la ISO. Es expresivo y riguroso, lo que lo convierte en una opción natural cuando la claridad de las licencias y la procedencia formal son la prioridad, y es común en organizaciones que necesitan intercambiar información de componentes y licenciamiento a través de un ecosistema amplio.
CycloneDX nació de la comunidad de application security y se diseñó con los casos de uso de seguridad en primer plano. Representa vulnerabilidades, servicios y relaciones de dependencia de forma limpia, y se combina de manera natural con VEX. Los equipos que piensan en el SBOM ante todo como una herramienta de seguridad y de gestión de vulnerabilidades suelen gravitar hacia él.
En la práctica, la elección es menos complicada de lo que parece. La mayoría de las herramientas de SBOM pueden producir y consumir ambos formatos, y los dos estándares cubren un terreno que se superpone. Elige el que corresponda a tu caso de uso principal, pero no te martirices — la decisión importante es generar SBOM, siquiera, en un formato estándar y de forma consistente.
Cómo se generan los SBOM y se mantienen actualizados
El principio más importante de todos: genera los SBOM automáticamente en el momento del build, a partir del grafo de dependencias resuelto. Construir el SBOM después del hecho — escaneando un sistema en ejecución o manteniendo una planilla a mano — produce algo que ya nace desactualizado en el momento en que se escribe y que, además, está incompleto. En el momento del build, tu herramienta ya conoce el conjunto exacto de dependencias que se resolvieron y empaquetaron, incluidas las transitivas más profundas, así que ese es el momento de la verdad fundamental.
Produce un SBOM por artefacto: uno para cada unidad desplegable, uno para cada imagen de contenedor, uno para cada versión. Un único SBOM monolítico para "toda la empresa" no es ni preciso ni útil. Los SBOM granulares, con alcance por artefacto, son los que te permiten responder preguntas precisas más adelante.
Mantener los SBOM actualizados es entonces cuestión de nunca tratarlos como una entrega puntual. Regenéralos en cada build. Almacena cada SBOM junto al artefacto que describe y versiónalo de la misma manera. Como se produce un SBOM nuevo cada vez que el artefacto cambia, la actualidad deja de ser una disciplina que tienes que imponer y pasa a ser una propiedad del pipeline. Esta es la misma filosofía detrás de una buena gestión de vulnerabilidades de código abierto: haz que el camino seguro sea el camino automático.
Consumir y gestionar SBOM a escala
Generar SBOM es la mitad fácil. La mitad más difícil y más valiosa es hacer algo con ellos a través de cientos de servicios y miles de builds. Una pila de archivos de SBOM parada en un repositorio de artefactos es un inventario sobre el que no puedes actuar.
A escala quieres que los SBOM se ingesten en un índice central que puedas consultar a través de todos los artefactos y entornos: muéstrame cada imagen que corre en producción y que contiene este paquete por debajo de esta versión. Quieres el cruce continuo de ese inventario contra vulnerabilidades recién divulgadas, de modo que un componente que estaba limpio cuando lo entregaste quede señalado el día en que un nuevo CVE lo afecta. Y quieres que los resultados se enruten a los equipos dueños del código afectado, con suficiente contexto para priorizar. Un programa de SBOM que se detiene en la generación entrega una fracción del valor; el retorno está en la consulta y en la reevaluación continua.
VEX: decir qué vulnerabilidades importan de verdad
He aquí un problema que los SBOM crean justamente por ser exhaustivos: un inventario completo, cruzado con bases de datos de vulnerabilidades, revela muchos hallazgos — y buena parte de ellos no importa. Una función vulnerable puede que nunca se invoque. Un componente puede estar presente pero deshabilitado. Una falla puede requerir una configuración que no usas. Ahogar a los equipos en hallazgos que no aplican es como los datos de seguridad se convierten en ruido, y el ruido es como los problemas reales se pasan por alto.
VEX (Vulnerability Exploitability eXchange) es la respuesta. Un documento VEX es un acompañante del SBOM que comunica el estado de explotabilidad de vulnerabilidades específicas en el contexto de tu producto. Para cada vulnerabilidad listada puede afirmar un estado como "no afectado", "afectado", "corregido" o "en investigación", junto con una justificación. En otras palabras, el SBOM dice qué hay aquí dentro y VEX dice y aquí está cuáles de esos problemas conocidos realmente te alcanzan.
Esto también importa enormemente para los consumidores de tu software. Cuando entregas un SBOM a un cliente y aparece un CVE aterrador en uno de los componentes listados, una declaración VEX te permite decirle proactivamente "no estamos afectados, y aquí está el porqué" — en lugar de atender una ola de tickets de soporte angustiados. VEX transforma el SBOM de un pasivo que invita preguntas en un activo que las responde.
SBOM para contenedores e imágenes
Los contenedores son donde los SBOM justifican su valor, porque una imagen de contenedor es una pila en capas de cosas que no escribiste: una imagen base, paquetes del SO, runtimes de lenguaje y, encima, las dependencias de tu aplicación. El contenido real de una imagen a menudo es una sorpresa para el equipo que la construyó.
Genera un SBOM para cada imagen como parte del build de la imagen, capturando tanto los paquetes a nivel del SO como las dependencias a nivel de la aplicación, y adjúntalo a la imagen para que viaje junto con el artefacto. Eso te permite reescanear imágenes que ya están en tu registry cuando aparece una nueva vulnerabilidad, sin reconstruirlas, y hace que la capa de la imagen base — a menudo la fuente de riesgo más pasada por alto — sea plenamente visible. Esto encaja con prácticas más amplias de seguridad de imágenes en Kubernetes, donde saber exactamente qué hay en cada imagen es la base sobre la que se construye todo lo demás.
Errores comunes
La idea del SBOM es simple; los modos de falla son predecibles.
SBOM desactualizados. Un SBOM generado una vez y nunca actualizado describe una versión de tu software que ya no existe. Da una falsa confianza, lo cual es peor que no tener SBOM alguno. Regenéralo en cada build.
SBOM incompletos. Un SBOM que captura las dependencias directas pero omite las transitivas, o que cubre las bibliotecas de la aplicación pero ignora los paquetes del SO en el contenedor, deja justo los puntos ciegos que los atacantes explotan. La profundidad y la cobertura son todo el objetivo.
Software de estante. La falla más común no es técnica — es organizativa. Los equipos generan SBOM para tildar una casilla, los archivan y nunca los consultan. Un SBOM que nadie consulta durante un incidente es un documento, no un control. El valor reside por completo en operacionalizarlo.
Cómo el SCA produce y operacionaliza los SBOM
Aquí es donde entra la software composition analysis, y es por eso que los SBOM y la software composition analysis se entienden mejor en conjunto. El SCA es la práctica — y la herramienta — que resuelve tu grafo de dependencias, identifica cada componente y versión, mapea licencias, cruza todo contra datos de vulnerabilidades y lo hace de forma continua. Generar un SBOM preciso es una salida natural de hacer bien el SCA, porque el motor de SCA ya tiene que construir exactamente el inventario que describe un SBOM.
Una capacidad moderna de SCA cierra todo el ciclo: genera SBOM basados en estándares (SPDX o CycloneDX) automáticamente en el momento del build para cada artefacto e imagen, los ingesta en un inventario consultable, reevalúa continuamente ese inventario contra nuevas vulnerabilidades, incorpora VEX para que los equipos vean los hallazgos que realmente importan y enruta resultados priorizados y accionables a las personas capaces de corregirlos. Esa es la diferencia entre tener SBOM y tener un programa de SBOM.
Rainforest reúne la generación y la operacionalización de SBOM en un solo lugar, de modo que el inventario que produces en el momento del build se convierte en un control vivo que puedes consultar el día en que aparezca el próximo gran CVE — no en un archivo que tienes que salir a buscar. Si quieres ver cómo se ve esto en tus propios repositorios e imágenes, explora nuestra plataforma de software composition analysis o agenda una demostración y lo recorreremos contigo sobre tu propio stack.
Preguntas frecuentes
¿Qué es un software bill of materials (SBOM)?
Un software bill of materials es un inventario completo y legible por máquina de cada componente que conforma un software — dependencias directas y transitivas, sus versiones, licencias y las relaciones entre ellas, atado a un build específico. Es la lista de ingredientes de tu aplicación, diseñada para ser consultada y no solo leída.
¿Cuál es la diferencia entre SPDX y CycloneDX?
Ambos son estándares de SBOM abiertos y ampliamente soportados. SPDX está estandarizado por la ISO y surgió con un fuerte énfasis en los metadatos de licencia y cumplimiento, lo que lo hace adecuado cuando la procedencia y la claridad de licenciamiento son la prioridad. CycloneDX nació de la comunidad de application security y está diseñado en torno a casos de uso de seguridad, representando vulnerabilidades y relaciones de dependencia de forma limpia y combinándose de manera natural con VEX. La mayoría de las herramientas pueden leer y escribir ambos, así que elige según tu caso de uso principal.
¿Por qué necesito un SBOM?
Porque no puedes proteger ni gestionar lo que no puedes ver. Un SBOM te permite responder "¿estoy afectado?" en minutos cuando se divulga una nueva vulnerabilidad, hacer seguimiento de las obligaciones de licencia en todo tu portafolio, cumplir con las expectativas regulatorias emergentes y dar a los clientes transparencia sobre lo que están ejecutando. Convierte las preguntas de supply chain de investigaciones en consultas.
¿Cómo genero un SBOM?
Genéralo automáticamente en el momento del build a partir de tu grafo de dependencias resuelto, produciendo un SBOM por artefacto o imagen de contenedor y regenerándolo en cada build para que nunca quede desactualizado. Las herramientas de software composition analysis suelen producir SBOM basados en estándares (SPDX o CycloneDX) como una salida natural, capturando tanto las dependencias de la aplicación como los paquetes a nivel del SO en las imágenes de contenedor.
¿Qué es VEX?
VEX (Vulnerability Exploitability eXchange) es un documento acompañante de un SBOM que comunica cuáles de las vulnerabilidades listadas afectan realmente a tu producto. Para cada vulnerabilidad afirma un estado como "no afectado", "afectado" o "corregido", con una justificación — filtrando el ruido de los componentes que están presentes pero no son explotables y permitiéndote decir a los clientes exactamente cuál es tu situación.

Escrito por
Bruno Baldo
CMO
Um pouco de marketing e um pouco de curiosidade e temos a receita pra criar um apaixonado por cyber!

Software Composition Analysis (SCA): La Guía Completa
El Software Composition Analysis (SCA) detecta dependencies open source vulnerables y riesgosas. Aprende cómo funciona, priorización, SBOMs y CI/CD.

Gestión de vulnerabilidades de código abierto en tus dependencias
Guía práctica de gestión de vulnerabilidades open source: halla dependencias vulnerables, prioriza con CVSS, EPSS, KEV y reachability, y remedia CVEs.

Cumplimiento de Licencias de Código Abierto: Guía para Desarrolladores
Guía para desarrolladores sobre el cumplimiento de licencias de código abierto: familias de licencias, obligaciones, compatibilidad, riesgo transitivo y cómo el SCA aplica la política.
