Gráfico de dependencia de CycloneDX SBOM: ¿para qué sirve?

Todos los Artículos

Todos hemos oído mucho sobre SBOM recientemente. Escuchamos sobre su utilidad, su composición y sus requisitos de seguridad y regulación. Esta vez quiero tomarme el tiempo para hablar sobre un segmento un poco menos conocido del SBOM de CyclonDX: el gráfico de dependencia. 

A diferencia del nombre lo implica, el gráfico de dependencia no es un aspecto visual del SBOM. Su propósito es ayudar a describir la dependencia de los componentes con respecto a otros componentes. Esto se basa en un componente bom-ref – un identificador único para cada componente SBOM. La idea es mostrar qué elementos dependen o están conectados entre sí. Suena bastante simple, ¿verdad?

Scribe utiliza mucho el gráfico de dependencia en el proceso de decidir qué elementos de la SBOM son importantes y a qué debemos prestar atención. En este artículo, veremos la forma Escriba utiliza el gráfico de dependencia SBOM y los beneficios prácticos que podemos obtener de él. Veremos algunos ejemplos JSON de un gráfico de dependencia SBOM y concluiremos con un vistazo a qué más podemos hacer con él en el futuro.

¿Qué es el gráfico de dependencia?

El gráfico de dependencia se agregó al formato CyclonDX en 2019. Su propósito declarado era unir componentes utilizando un identificador único que luego se conoció como bom-ref. En la Ejemplo de casos de uso de CycloneDX, podemos ver cómo las dependencias usan el ID de referencia de los componentes para mostrar qué depende de qué:

Imagen de dependencias de código.Imagen de dependencias de código.Imagen de dependencias de código.

Incluso sin entrar en ejemplos, estoy seguro de que puedes ver que la capacidad de conectar un elemento con otros puede resultar útil. Por un lado, como caso de uso más común, le permite ver inmediatamente todas las dependencias de una biblioteca en un solo lugar. 

Un gráfico de dependencia puede representar relaciones tanto directas como transitivas y normalmente tiene un nodo de profundidad.

Aunque se puede representar un árbol de dependencias completo, no se recomienda porque podría dar lugar a bucles interminables debido a dependencias circulares u otras relaciones complejas. Se recomienda mantener los gráficos simples representando un solo nodo.

 ¿Cómo utiliza Scribe el gráfico de dependencia?

Scribe hace un uso extensivo de los metadatos recopilados junto con el SBOM para brindar contexto a la evidencia. El contexto de la evidencia incluye dónde y cuándo se recopiló, cuál es su tema, etc. Mientras Scribe se esfuerza por ofrecer información confiable y reutilizable, utilizamos el gráfico de dependencia para crear conexiones que se pueden utilizar entre diferentes clientes y proyectos.

Estos son los enlaces del gráfico de dependencia que admite Scribe:

  • Archivo de paquete: Esta conexión nos permite ver qué archivos pertenecen a cada paquete. Evidentemente, si encontramos un archivo en un paquete al que no pertenece es un claro indicio de que hay un problema.
  • Indicación de capa y capa de paquete: Saber qué paquetes están ubicados en qué capa de imagen es útil ya que de esa manera podemos ordenar las vulnerabilidades por capas. Los problemas que haya heredado de su imagen base o de su imagen principal no tendrán la misma urgencia y su capacidad directa para influir en ellos que los que se encuentran en las capas que usted mismo haya creado.
  • Archivo de capa: Similar a la conexión paquete-archivo, esta conexión nos permite ver qué archivos están asociados con cada capa. Junto con las otras conexiones, podemos verificar que los archivos estén asociados con el paquete y la capa correctos y que no haya archivos en lugares donde no deberían estar.
  • Confirmar y confirmar archivo: Al identificar qué archivos provienen de cada confirmación, podemos asegurarnos de que no hubo cambios indebidos en los archivos de confirmación antes de que se usaran para crear la imagen final.

Usando toda esta información en conjunto, podemos dibujar una imagen bastante completa del SBOM sobre qué archivos deben encontrarse y dónde. Como resultado, tenemos más posibilidades de detectar valores atípicos o aberraciones que podrían indicar un problema en su imagen, ya sea un problema de integridad o un ataque potencial.

Gráfico de dependencia y aplicación de políticas

Scribe aprovecha este gráfico de dependencia integral para aplicar políticas complejas de manera efectiva. Por ejemplo, el Confirmar archivo La dependencia se aprovecha para mantener las políticas del propietario del código. Nos permite verificar quién cometió qué archivo y cuándo. El Archivo de paquete La dependencia se emplea para garantizar las políticas de integridad del paquete. Nos permite comprobar qué archivos se supone que están vinculados a cada paquete y comprobar que efectivamente es así. Además, el Capa de paquete La dependencia se utiliza para adaptar las políticas de paquetes a los requisitos específicos de cada capa. Dado que cada imagen de software puede construir sus capas de manera diferente, es invaluable poder saber definitivamente qué paquetes están vinculados a qué capa de la imagen.

Personalizando la información de su gráfico de dependencia

Sabemos que no todo el mundo está dispuesto a compartir toda esta información o que no les interesa verla ni utilizarla de ninguna manera.

Como una forma de abordar esto, Scribe le permite crear versiones más específicas de su SBOM. Estas son las opciones de personalización que puede utilizar con nuestro valent herramienta mientras creamos SBOM que estamos respaldando actualmente. Opciones adicionales estarán disponibles en el futuro:

  • Para incluir sólo grupos de componentes específicos, utilice –componentes para seleccionar entre los tipos de grupo. 
  • Para incluir o excluir tipos de paquetes específicos, utilice -Tipo de paquete or –tipo-exclusión-paquete para seleccionar un tipo de paquete específico.
  • Para incluir los paquetes instalados encontrados (grupo de paquetes instalar) o los paquetes a los que hacen referencia las fuentes (grupo de paquetes índice), utilizar –grupo-paquete para seleccionar entre opciones.
  • Para excluir componentes, utilice –filtro-regex, –filtro-alcance, y –filtro-purl para excluir cualquier componente que desee excluir.
  • Para adjuntar cualquier contenido de archivo, utilice –adjuntar expresiones regulares para incluir el contenido de archivos externos.
  • Para incluir entornos y etiquetas personalizados, utilice –env y -etiqueta para adjuntar sus campos personalizados. Esto le permite agregar metadatos personalizados al SBOM que está creando.

Mirando hacia el futuro

Scribe considera de suma importancia el contexto y las conexiones que hacemos entre los diferentes componentes de su SBOM al usarlo. Con la capacidad de nuestro Valint para firmar, verificary gestionar políticas Consideramos totalmente posible ver un futuro en el que se pueda hacer más que solo gestionar políticas de seguridad. Podemos imaginar un futuro en el que la información del gráfico de dependencia se pueda utilizar en el control de calidad, en necesidades de cumplimiento específicas e incluso en campos no relacionados como la tecnología financiera y la agricultura.

La plataforma de Scribe tiene un nivel gratuito donde puedes comenzar a probarla ahora con todas las capacidades a tu alcance para jugar. te animo a darle una oportunidad, vea la utilidad de dicha información acumulada a lo largo del tiempo y vea para qué puede utilizarla. Espero que se unan a nosotros mientras damos la bienvenida a un futuro más seguro para todos nosotros. 

Este contenido es presentado por Scribe Security, un proveedor líder de soluciones de seguridad de la cadena de suministro de software de extremo a extremo, que ofrece seguridad de última generación para artefactos de código y procesos de desarrollo y entrega de código en todas las cadenas de suministro de software. Más información.