
Escanea las Listas de Materiales de Software (SBOM) en busca de vulnerabilidades de seguridad

bomber es una aplicación que escanea SBOMs en busca de vulnerabilidades de seguridad.
Entonces le ha pedido a un proveedor una Lista de Materiales de Software (SBOM) para uno de sus productos de código cerrado, y le proporcionaron una en un archivo JSON... ¿y ahora qué?
Lo primero que querrá hacer es ver si alguno de los componentes listados en la SBOM tiene vulnerabilidades de seguridad, y qué tipo de licencias tienen estos componentes. Esto le ayudará a identificar qué tipo de riesgo asumirá al usar el producto.
Encontrar vulnerabilidades de seguridad e información de licencias para los componentes identificados en una SBOM es exactamente para lo que está diseñado bomber. bomber puede leer cualquier formato CycloneDX basado en JSON o XML, o una SBOM formateada en JSON de SPDX o Syft, y le dirá rápidamente si hay vulnerabilidades.
El software puede ser de código abierto o cerrado. Puede considerar los componentes de terceros que encontrará en GitHub, o cualquier repositorio de código fuente público, como código abierto. Técnicamente, el software que crea internamente en su propia empresa también es código abierto (no es público, pero sus equipos internos pueden verlo). El software de código cerrado también puede ser interno, pero generalmente es software que compra a proveedores externos.
Las empresas pueden usar herramientas SCA proporcionadas por proveedores como GitHub, Sonatype, Snyk, etc., para escanear cualquier tipo de código abierto y proporcionar datos de vulnerabilidades, e incluso generar SBOMs en algunos casos. Lo que no pueden hacer (todavía...) es escanear software de código cerrado al que no tienen visibilidad. Aquí es donde entran en juego las SBOMs y bomber. Las SBOMs proporcionan la composición del software al que no puede acceder, y bomber determina si algo en la SBOM tiene vulnerabilidades.
Creamos bomber para escanear las SBOMs de código cerrado que se proporcionan cuando las recibe de los proveedores. También puede escanear SBOMs de código abierto y, técnicamente, podría usar bomber como una herramienta SCA de código abierto si lo desea.
Actualmente existen bastantes formatos de SBOM. bomber admite los siguientes:

bomber admite múltiples fuentes de información sobre vulnerabilidades. A estas las llamamos proveedores. Actualmente, bomber usa OSV como proveedor predeterminado, pero también puede usar la Base de Datos de Asesorías de GitHub, el Índice OSS de Sonatype o Snyk.
En este momento, tenga en cuenta que OSV es gratuito y no requiere credenciales para su uso, Índice OSS de Sonatype es gratuito pero requiere registrarse y obtener un token, y el soporte de Snyk requiere una licencia de Snyk.
Además de los datos que bomber recopila de los Proveedores, también enriquece los datos de vulnerabilidades con información adicional, como probabilidades de explotación.
Tenga en cuenta que cada proveedor admite diferentes ecosistemas, por lo que si no ve vulnerabilidades en uno, pruebe con otro. Un ecosistema es simplemente el gestor de paquetes o el tipo de paquete. Los ejemplos incluyen rpm, npm, gems, etc. Es importante comprender que cada proveedor puede reportar diferentes vulnerabilidades. En caso de duda, consulte varios de ellos.
Si bomber no encuentra vulnerabilidades, no significa que no las haya. Solo significa que el proveedor utilizado no detectó ninguna, o que no admite el ecosistema. Algunos proveedores tienen vulnerabilidades que no devuelven información de Severidad. En este caso, la Severidad se mostrará como "INDEFINIDA".
La documentación de los proveedores para bomber se puede encontrar:
Puede usar Homebrew para instalar bomber con el siguiente comando:
brew tap devops-kung-fu/homebrew-tap
brew install devops-kung-fu/homebrew-tap/bomber
Si no tiene Homebrew, aún puede descargar la última versión (ej: bomber_0.4.1_darwin_all.tar.gz), extraer los archivos del archivo comprimido y usar el binario bomber.
Si lo desea, puede mover el binario bomber a su directorio /usr/local/bin o a cualquier lugar en su PATH.