2.2 Proteger el Software (PS)

2.2 Proteger el Software (PS) para pasos de Build y Deploy CI/CD

2.2 Proteger el Software (PS) en Tareas de Build y Deploy

Proteger el Software (PS): Las organizaciones deben proteger todos los componentes de su software contra manipulaciones y accesos no autorizados.


PS.1

Proteger Todas las Formas de Código de Accesos y Manipulaciones No Autorizadas: Ayuda a prevenir cambios no autorizados en el código, tanto inadvertidos como intencionales, que podrían eludir o anular las características de seguridad previstas del software. Para el código que no está destinado a ser accesible públicamente, esto ayuda a prevenir el robo del software y puede dificultar o retrasar que los atacantes encuentren vulnerabilidades en el software.


Para cumplir con SSDF PS.1 en un contexto de build y deploy usando herramientas de código abierto, el enfoque se desplaza de solo definir a:

  • Asegurar la propia pipeline CI/CD: garantizar que solo procesos confiables y autenticados puedan producir outputs de build.

  • Proteger los inputs de código fuente y dependencias, bloquear versiones, usar checksums y prevenir la inyección de código malicioso en el proceso de build.

  • Firmar artefactos y registrar su procedencia, generando metadatos criptográficamente verificables que prueben qué se construyó, desde qué fuente y por quién.

  • Aplicar builds reproducibles para que cualquier manipulación genere una discrepancia en hash/firma.

  • Restringir el acceso al sistema de build y aplicar permisos basados en roles, MFA y principio de menor privilegio para los servidores de build.

Tareas Herramientas
PS.1.1:

Almacenar todas las formas de código, incluyendo código fuente, código ejecutable y configuración-como-código, basándose en el principio de menor privilegio para que solo el personal, herramientas, servicios, etc., autorizados tengan acceso.

cosign Sigstore

Firmar los resultados de construcción (binarios, contenedores, SBOMs) y crear atestaciones; verificar en CI antes de la promoción.

Git commits/tags firmados

Requerir commits/tags firmados y rechazar los no firmados en CI para evitar que código no autorizado entre en las construcciones.

Sigstore Fulcio + Rekor

Emitir certificados de corta duración (Fulcio) y registrar firmas/atestaciones en un registro de transparencia (Rekor) para detectar/seguir manipulaciones.

Procedencia SLSA (generadores + verificador)

Emitir y firmar la procedencia de la construcción; verificar quién/qué/dónde se construyó el artefacto antes de enviarlo.

In-toto

Definir un diseño de cadena de suministro y verificar los materiales/productos de cada paso para asegurar que nada fue manipulado a lo largo de la canalización.

Tekton Chains

Firmar automáticamente los resultados de tareas (imágenes, archivos) en pipelines de Tekton y almacenar atestaciones (por ejemplo, en Rekor).

Notation (CNCF Notary v2)

Firmar artefactos OCI (imágenes, Helm charts) durante la construcción para verificación posterior en registros y clusters.

Nix

Bloquear insumos y hacer las construcciones determinísticas para que los cambios no autorizados sean detectables mediante discrepancia de hash/procedencia.

Bazel

Bloquear insumos y hacer las construcciones determinísticas para que los cambios no autorizados sean detectables mediante discrepancia de hash/procedencia.

Grafeas

Persistir firmas, SBOMs y metadatos de políticas para auditar la integridad de las construcciones a través de los servicios.

Harbor

Aplicar confianza de contenido, cuentas de robots y políticas sobre quién puede subir/descargar; requerir artefactos firmados antes de la liberación.

Sigstore Policy Controller

Controlador de admisión que bloquea imágenes no firmadas o firmadas incorrectamente; aplica políticas de clave/issuer/sujeto.

Kyverno

Políticas de Kubernetes que requieren firmas de imágenes, fijan por digest y prohíben etiquetas mutables en despliegues.

OPA Gatekeeper

Control de admisión para despliegues con políticas personalizadas (por ejemplo, “solo imágenes firmadas de registros/namespaces aprobados”).

Ratify

Verifica firmas/atestaciones OCI (Cosign/Notation) en tiempo de admisión y bloquea todo lo que falle la verificación.

Connaisseur

Controlador de admisión de Kubernetes dedicado a verificar las firmas de imágenes de contenedores antes de su programación.

Sigstore Cosign

Verificar firmas/atestaciones como puerta de liberación en su pipeline de CD antes de aplicar los manifests.

PS.2

Proporcionar un Mecanismo para Verificar la Integridad del Software: Ayuda a los adquirentes de software a asegurarse de que el software que reciben es legítimo y no ha sido manipulado. Hacer que la información de verificación de integridad esté disponible para los adquirentes de software.


Para cumplir con SSDF PS.2 en un contexto de build y deploy usando herramientas open-source, el enfoque se centra en:

  • Generar artefactos de integridad para cada release

  • Vincular artefactos con el código fuente versionado

  • Publicar materiales de verificación

  • Requerir chequeos de integridad como puerta de release

  • Exponer datos de verificación a los consumidores

  • Control de admisión basado en integridad


Tasks Tools
PS.2.1:

Poner la información de verificación de integridad del software a disposición de los adquirentes de software.

Cosign Sigstore

Firmar binarios, imágenes de contenedores, SBOMs y atestaciones durante la construcción; soporta firmas sin clave.

Git signed commits/tags

Firmar etiquetas de liberación para vincular criptográficamente el código fuente con el artefacto construido.

Sigstore Fulcio + Rekor

Fulcio emite certificados de firma efímeros; Rekor registra todas las firmas en un registro de transparencia a prueba de manipulaciones para verificación posterior.

SLSA provenance (generators + verifier)

Genera automáticamente metadatos de procedencia describiendo el origen, insumos y proceso de construcción. Valida los archivos de procedencia para asegurar la integridad del artefacto antes de su distribución.

In-toto

Define un diseño verificable de la cadena de suministro de software; crea metadatos de enlace que prueban cada paso de la construcción.

Grafeas

Almacena metadatos (firmas, checksums, SBOMs) para que puedan ser consultados para verificación.

GNU Coreutils / sha256sum

Crear y publicar checksums de artefactos de liberación para que los receptores puedan verificar manual o automáticamente la integridad.

Harbor

Aplicar confianza de contenido; asegurar que solo se almacenen y distribuyan imágenes firmadas, con políticas sobre quién puede subir/descargar; requerir artefactos firmados antes de la liberación.

Sigstore Policy Controller

Controlador de admisión de Kubernetes que aplica políticas de firma/procedencia antes del despliegue. Bloquea imágenes no firmadas o firmadas incorrectamente; aplica políticas de clave/issuer/sujeto.

Kyverno

Políticas de Kubernetes que requieren firmas de imágenes, fijan por digest y prohíben etiquetas mutables en despliegues. Valida firmas y digests de imágenes de contenedor antes de desplegarlas.

OPA Gatekeeper

Control de admisión personalizado para aplicar integridad de artefactos y políticas de firmantes confiables.

Ratify

Framework de verificación plugable para registros/imágenes OCI; funciona con Cosign, Notation, in-toto.

Connaisseur

Controlador de admisión de Kubernetes dedicado a la verificación de firmas y políticas de confianza de imágenes.

Notation

Firma artefactos OCI (contenedores, Helm charts) y los verifica antes de instalar o desplegar.

Sigstore Cosign

Se usa en pipelines de CD o hooks de admisión para verificar que firmas y atestaciones coincidan con claves/políticas confiables antes de la promoción.

PS.3

Archivar y Proteger Cada Versión de Software: Conservar las versiones de software para ayudar a identificar, analizar y eliminar vulnerabilidades descubiertas después de su liberación.


Para cumplir con SSDF PS.3 en un contexto de construcción y despliegue usando herramientas de código abierto, el enfoque se centra en:

  • Construcción: El énfasis está en capturar, almacenar y asegurar cada versión oficial (código fuente, binarios, SBOM, firmas, procedencia) en un almacenamiento inmutable y versionado.

  • Despliegue: El énfasis está en asegurar que solo se utilicen en producción aquellas versiones archivadas y protegidas, aplicando inmutabilidad, fijación por digest y verificación de firmas/procedencia como mecanismos de cumplimiento.

Tareas Herramientas
PS.3.1:

Archivar de manera segura los archivos necesarios y los datos de soporte (por ejemplo, información de verificación de integridad, datos de procedencia) que se deben conservar para cada liberación de software.

PS.3.2:

Recopilar, proteger, mantener y compartir los datos de procedencia de todos los componentes de cada liberación de software (por ejemplo, en una lista de materiales de software [SBOM]).

Git (Etiquetado de Liberación)

Crear etiquetas firmadas e inmutables para cada liberación; preserva el snapshot del código fuente para auditoría.

Git LFS

Almacenar artefactos binarios grandes junto con el código fuente, asegurando la integridad.

Nexus Repository OSS

Hospedar y versionar artefactos de liberación (JARs, binarios, contenedores) con control de acceso basado en roles y validación de checksums.

JFrog Artifactory OSS

Archivar resultados de construcción en un repositorio controlado y versionado; soporta checksums y políticas de retención.

Harbor

Almacenar imágenes de contenedores con escaneo de vulnerabilidades, RBAC y confianza de contenido firmado para preservar la integridad de la liberación. Aplicar etiquetas inmutables y evitar sobrescrituras para que los artefactos desplegados siempre se puedan rastrear hasta la copia archivada.

OSS Review Toolkit

(ORT) Archivar SBOMs, archivos de licencia y reportes de vulnerabilidades junto con la liberación para cumplimiento y auditoría.

Sigstore Cosign

Firmar artefactos de liberación antes de archivarlos para que la integridad pueda ser verificada posteriormente.

Kyverno

Aplicar imágenes con digest fijo para asegurar que los despliegues siempre coincidan con las versiones archivadas.

OPA Gatekeeper

Aplicación de políticas para garantizar que solo se desplieguen artefactos archivados y aprobados.

Ratify

Verifica firmas y atestaciones de artefactos contra los metadatos de liberaciones archivadas antes del despliegue.

Connaisseur

Controlador de admisión que asegura que solo se desplieguen imágenes firmadas del conjunto archivado.

Backblaze B2 / Rclone (Integración OSS)

Archivado a largo plazo de versiones de artefactos desplegados para recuperación o investigación.

SLSA Provenance + Rekor

Conservar la procedencia de construcción en un registro de transparencia para que las liberaciones desplegadas puedan ser verificadas cruzadamente con los originales archivados.

rebuilderd

rebuilderd verifica de manera independiente que los paquetes binarios puedan reproducirse desde el código fuente, lo que es un mecanismo sólido para la integridad de componentes de terceros y para preservar/verificar la evidencia de integridad de la liberación.

TestifySec

El enfoque de TestifySec es la verificación de evidencia, atestaciones y políticas en torno a las construcciones; su herramienta Witness se usa para crear y verificar atestaciones y aplicar políticas, es decir, generación de procedencia + verificación de políticas.