Una cadena de suministro de software se compone de componentes, bibliotecas, herramientas y procesos utilizados para desarrollar, construir y publicar un artefacto de software. [1]
Los proveedores de software suelen crear productos ensamblando componentes de software propietarios y de código abierto . Una lista de materiales de software [2] (SBOM) declara el inventario de componentes utilizados para construir un artefacto de software, como una aplicación de software. [3] Es análogo a una lista de ingredientes en el empaque de alimentos: donde se puede consultar una etiqueta para evitar alimentos que pueden causar alergias , los SBOM pueden ayudar a organizaciones o personas a evitar el consumo de software que podría dañarlos.
El concepto de lista de materiales está bien establecido en la fabricación tradicional como parte de la gestión de la cadena de suministro . [4] Un fabricante utiliza una lista de materiales para realizar un seguimiento de las piezas que utiliza para crear un producto. Si posteriormente se encuentran defectos en una pieza específica, la lista de materiales facilita la localización de los productos afectados.
Un SBOM es útil tanto para el constructor (fabricante) como para el comprador (cliente) de un producto de software. Los constructores suelen aprovechar los componentes de software de terceros y de código abierto disponibles para crear un producto; un SBOM permite al constructor asegurarse de que esos componentes estén actualizados y responder rápidamente a nuevas vulnerabilidades. [5] Los compradores pueden utilizar un SBOM para realizar análisis de vulnerabilidad o de licencia, los cuales pueden utilizarse para evaluar el riesgo de un producto.
Si bien muchas empresas simplemente utilizan una hoja de cálculo para la gestión general de la lista de materiales, existen riesgos y problemas adicionales en una SBOM escrita en una hoja de cálculo. Los SBOM obtienen mayor valor cuando se almacenan colectivamente en un repositorio que puede ser parte de otros sistemas de automatización y que otras aplicaciones pueden consultar fácilmente. Esta necesidad de procesamiento automatizado de SBOM es abordada por varios proveedores de software, especialmente aquellos que utilizan estándares de documentos abiertos.
Comprender la cadena de suministro de software, obtener un SBOM y utilizarlo para analizar vulnerabilidades conocidas es crucial para gestionar el riesgo . [6] [7] [8]
La Ley de Transparencia y Gestión de la Cadena de Suministro Cibernético de 2014 [9] fue una legislación estadounidense que proponía exigir a las agencias gubernamentales que obtuvieran SBOM para cualquier producto nuevo que compren. También habría requerido la obtención de SBOM para "cualquier software, firmware o producto utilizado por el gobierno de los Estados Unidos". Aunque finalmente no se aprobó, esta ley generó conciencia en el gobierno e impulsó leyes posteriores como la "Ley de mejora de la ciberseguridad de Internet de las cosas de 2017". [10] [11]
La Orden ejecutiva de EE. UU. para mejorar la ciberseguridad nacional del 12 de mayo de 2021 [12] ordenó al NIST que emitiera una guía dentro de los 90 días para "incluir estándares, procedimientos o criterios con respecto a" varios temas con el fin de "mejorar la seguridad de la cadena de suministro de software". ," incluyendo "proporcionar al comprador una Lista de Materiales de Software (SBOM) para cada producto". También se le ordenó a la NTIA en un plazo de 60 días "publicar los elementos mínimos para una SBOM".
Los elementos mínimos de la NTIA se publicaron el 12 de julio de 2021 [13] y también "describen casos de uso de SBOM para una mayor transparencia en la cadena de suministro de software y establecen opciones para la evolución futura". Los elementos mínimos constan de tres categorías amplias: campos de datos (información de referencia sobre cada componente de software), soporte de automatización (la capacidad de generar SBOM en formatos legibles por máquinas y humanos) y prácticas y procesos (cómo y cuándo las organizaciones deben generar SBOM). ). El requisito de "soporte de automatización" especifica la necesidad de "generación automática", lo cual es posible con el uso de soluciones de análisis de composición de software (SCA). [14]