Skip to content

SBOM - Software Bill of Materials

El módulo SBOM genera un documento JSON CycloneDX 1.4 que describe el directorio del plugin y sus dependencias. Es un artefacto estructural exigido por el art. 13 del Reglamento de Ciberresiliencia (CRA) de la UE y aceptado por la mayoría de los consumidores de SBOM (Trivy, Dependency-Track, Grype).

Ambos formatos están ampliamente aceptados. Se eligió CycloneDX 1.4 JSON porque su estructura es más sencilla, lo consumen directamente Trivy y Dependency-Track, y utiliza Package URLs (purl), que están disponibles de forma nativa para Composer y npm.

Vaya a Polski > SBOM. El módulo está activado de forma predeterminada. Para desactivarlo: Polski > Módulos > desmarque “SBOM”.

Para cada directorio de destino, el generador lee:

ArchivoContenido
composer.lockPaquetes PHP (secciones packages y packages-dev)
package-lock.jsonPaquetes JavaScript (mapa packages en node_modules/...)
Encabezado del pluginNombre y versión (de la constante VERSION)

El generador se ejecuta únicamente bajo demanda. El JSON no se almacena en caché - la generación para un plugin FREE con alrededor de 100 dependencias tarda menos de 200 ms.

  • polski - el plugin FREE (WP_PLUGIN_DIR/polski o Polski\PLUGIN_DIR)
  • polski-pro - visible solo cuando PRO está instalado y están definidas las constantes Polski\Pro\PLUGIN_DIR / Polski\Pro\VERSION

El archivo se sirve con:

Content-Type: application/vnd.cyclonedx+json; charset=utf-8
Content-Disposition: attachment; filename="polski-sbom-<version>-<UTC timestamp>.cdx.json"

Ejemplo (truncado):

{
"bomFormat": "CycloneDX",
"specVersion": "1.4",
"serialNumber": "urn:uuid:5a3b....",
"version": 1,
"metadata": {
"timestamp": "2026-04-19T08:30:00+00:00",
"tools": [{ "vendor": "WPPoland", "name": "Polski SBOM generator", "version": "1.0" }],
"component": {
"type": "application",
"bom-ref": "wppoland/polski",
"name": "polski",
"version": "2.1.0",
"publisher": "WPPoland"
}
},
"components": [
{
"type": "library",
"bom-ref": "composer:woocommerce/woocommerce-blocks",
"name": "woocommerce/woocommerce-blocks",
"version": "10.8.4",
"scope": "required",
"purl": "pkg:composer/woocommerce/[email protected]",
"licenses": [{ "license": { "id": "GPL-3.0-or-later" } }]
}
]
}
Terminal window
trivy sbom polski-sbom-2.1.0-20260419-083000.cdx.json
  1. Cree un proyecto en Dependency-Track (uno por plugin).
  2. Suba el JSON a través de la interfaz o del endpoint /api/v1/bom.
  3. Conecte el proyecto a una canalización de CI para que cada versión actualice el BOM.

El art. 13 del Reglamento de Ciberresiliencia exige a los fabricantes mantener SBOMs de sus productos. Guardar el JSON CycloneDX junto a la versión etiquetada es una forma habitual de cumplir esta obligación. El nombre del archivo incorpora la versión y la marca de tiempo UTC para que los artefactos sean únicos entre versiones.

  • Interfaz y descarga: manage_woocommerce
  • Nonce: polski_sbom_download (necesario para la acción POST)
  • Las relaciones de dependencias transitivas (árbol dependencies) aún no se emiten (solo lista plana)
  • WordPress en sí no es un componente del BOM (es el entorno de ejecución, no una dependencia empaquetada)
  • La versión se obtiene únicamente de las constantes del plugin, no del campo de composer.json
  • Sin firma HMAC en el BOM (prevista en PRO)