Integridad de la cadena de suministro
De un vistazo
Sección titulada «De un vistazo»Los controles de la cadena de suministro de NextPDF operan en dos puntos: los controles de CI que se ejecutan en cada pull request que cambia dependencias y en cada etiqueta de versión, y el flujo de trabajo de publicación, que configura la generación de procedencia, la firma keyless y la emisión de SBOM.
| Control | Tipo |
|---|---|
SBOM CycloneDX 1.7 de la compilación | Control de CI, estricto |
| Declaración in-toto que se compromete con las entradas de la compilación | Control de CI, estricto |
| Comparación de huellas SHA-256 de dependencias contra una línea base fijada | Control de CI, estricto |
| Comprobación de consistencia OpenVEX contra la política de avisos de dependencias | Control de CI, estricto |
| Comprobación de determinismo entre fixtures | Comprobación de CI, de mejor esfuerzo |
Generación de procedencia con slsa-github-generator fijado | Configuración de flujo de trabajo — flujo de publicación |
Firma keyless con cosign de Sigstore con registro de transparencia en Rekor | Configuración de flujo de trabajo — flujo de publicación |
Emisión de SBOM CycloneDX 1.7 y SPDX 2.3 | Configuración de flujo de trabajo — flujo de publicación |
Matriz nocturna de php-fuzzer sobre las rutas del analizador y del escritor | CI programada |
Controles de CI
Sección titulada «Controles de CI»Cada pull request que toca dependencias, y cada etiqueta de versión, ejecuta:
| Comprobación | Qué hace | Control |
|---|---|---|
| Inventario | Emite un SBOM CycloneDX 1.7 de la compilación | Estricto |
| Registro de entradas de compilación | Emite una declaración in-toto que se compromete con las entradas de la compilación | Estricto |
| Integridad de dependencias | Compara huellas de bytes SHA-256 contra una línea base fijada | Estricto |
| Consistencia VEX | Exige que cada entrada de la política de avisos de dependencias tenga una declaración correspondiente en el documento OpenVEX v0.2.0 del repositorio | Estricto |
| Reproducibilidad | Ejecuta una comprobación de determinismo sobre los fixtures | De mejor esfuerzo |
El control de integridad de dependencias compara las huellas de bytes SHA-256 del árbol de dependencias contra una línea base fijada en el repositorio, con independencia de los metadatos de los paquetes.
Configuración del flujo de trabajo de publicación
Sección titulada «Configuración del flujo de trabajo de publicación»Procedencia — configuración del flujo de trabajo
Sección titulada «Procedencia — configuración del flujo de trabajo»El flujo de trabajo de publicación fija el flujo reutilizable canónico
slsa-github-generator, configurado para generar procedencia in-toto dentro de un
constructor aislado y efímero, y configura slsa-verifier para ejecutarse en línea
contra la salida del generador.
Firma y transparencia — configuración del flujo de trabajo
Sección titulada «Firma y transparencia — configuración del flujo de trabajo»El flujo de trabajo de publicación configura la firma keyless con cosign de Sigstore
para el paquete de artefactos, con registro de transparencia en Rekor. La firma keyless
deriva un certificado de corta duración de la identidad OIDC del flujo de trabajo
(https://token.actions.githubusercontent.com), de modo que esta ruta de firma de
versiones está configurada sin ninguna clave de firma de artefactos de larga duración.
SBOM — configuración del flujo de trabajo
Sección titulada «SBOM — configuración del flujo de trabajo»El flujo de trabajo de publicación configura la emisión dual de SBOM: un documento
CycloneDX 1.7 y un documento SPDX 2.3.
Fuzzing
Sección titulada «Fuzzing»Una matriz nocturna de php-fuzzer, junto con un arnés de AST/árbol de estructura,
ejercita las rutas del analizador y del escritor.