Marcio Cunha

Auditoría de Integridad de Binarios en Canales CI/CD con Firmas Criptográficas Basadas en Sigstore

Aprenda a aplicar firmas criptográficas basadas en Sigstore en canales CI/CD para garantizar que ningún software alterado llegue a producción.

Marcio Cunha•4 min
También disponible en:PortuguêsEnglish
Resumen
  • Las firmas tradicionales con claves de larga duración fallan frecuentemente debido a la complejidad y riesgos de fugas de secretos en la infraestructura.
  • El uso de identidades efímeras conectadas a OIDC elimina la gestión manual de claves y vincula los artefactos directamente al usuario o canal correcto.
  • La transparencia pública generada por registros inmutables garantiza una auditabilidad rigurosa e impide ataques de repudio en cualquier compilación ejecutada.
  • La verificación automatizada en el entorno de despliegue bloquea inmediatamente la ejecución de binarios que carezcan de atestados criptográficos válidos.
  • La adopción de estándares abiertos de cadena de suministro reduce drásticamente el impacto de compromisos en el flujo de entrega de software.

El Problema de la Confianza Ciega en los Canales de Entrega Continua

En el desarrollo de software moderno, confiamos ciegamente en los servidores que compilan nuestros programas. Un canal de CI/CD (el sistema automatizado que toma el código fuente, lo prueba y lo transforma en un programa ejecutable) suele tratarse como una caja negra segura. En la práctica, esto significa que si un atacante logra modificar discretamente un archivo de configuración o inyectar un paso malicioso en el flujo de automatización, puede alterar el binario final sin que nadie lo note.

Históricamente, la respuesta a este riesgo ha sido el uso de claves criptográficas privadas guardadas en bóvedas secretas. Los desarrolladores usan estas claves para firmar el programa compilado, probando que proviene de una fuente confiable. Sin embargo, en la vida real, gestionar estas claves de larga duración es una pesadilla operativa. Las claves caducan, son robadas o terminan esparcidas por servidores de compilación sin un control de acceso riguroso.

Cómo Funciona la Firma Basada en Identidad Efímera

Sigstore surge como una solución moderna para eliminar el dolor de cabeza de la gestión manual de claves de firma. En lugar de crear un archivo de clave privada estática que dura años, el sistema genera una clave efímera (que dura solo unos minutos) exactamente en el momento en que se ejecuta la compilación. En la práctica, el proceso valida la identidad del sistema de CI a través de un proveedor OIDC (OpenID Connect), como GitHub Actions o GitLab CI.

Cuando el canal termina de compilar el programa, se autentica con el proveedor de identidad, el cual emite un token seguro. Sigstore recibe este token, verifica si la identidad es legítima y emite un certificado de muy corta duración. Con este certificado, el canal firma el binario y descarta la clave privada inmediatamente. Esto significa que no hay claves estáticas que robar, lo que hace que el proceso sea mucho más seguro contra intrusiones prolongadas.

Registros Públicos de Transparencia y la Prueba Criptográfica

Otro pilar fundamental de esta tecnología es el uso de un registro público de transparencia, conocido en el ecosistema como Rekor. Piense en esto como un libro mayor inmutable, muy parecido a la tecnología detrás de las criptomonedas, pero enfocado exclusivamente en registrar quién firmó qué y cuándo. En la práctica, cada firma generada por su canal se publica en este registro público, creando una pista de auditoría que no se puede borrar ni modificar retroactivamente.

Este enfoque resuelve un problema clásico de seguridad llamado ataque de repudio, donde alguien con intenciones maliciosas niega haber autorizado un lanzamiento específico de software. Como el registro es público y cifrado, cualquier persona puede consultar la prueba matemática de que el binario que se ejecuta en producción fue generado exactamente por el commit oficial y auditable, sin alteraciones en el camino.

Implementación Práctica con Herramientas Nativas

Para poner en marcha esta auditoría de integridad en la práctica, utilizamos herramientas de línea de comandos creadas específicamente para interactuar con el ecosistema Sigstore, como Cosign. El flujo básico consiste en generar el artefacto, solicitar la firma basada en la identidad del canal y registrar la transacción en el servidor de transparencia.

# Firmando un binario utilizando la identidad OIDC del entorno CI/CD
cosign sign-blob --bundle sigstore-bundle.json mi-aplicacion-binaria

# Verificando la integridad y la firma del binario antes del despliegue
cosign verify-blob \
  --bundle sigstore-bundle.json \
  --certificate-identity "https://github.com/organizacion/repositorio/.github/workflows/build.yml@refs/heads/main" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  mi-aplicacion-binaria

En el ejemplo anterior, la primera línea crea un paquete de firma criptográfica vinculado al archivo binario. La segunda línea realiza una verificación rigurosa antes de permitir que el programa se ejecute en la infraestructura de destino, asegurando que el emisor y el repositorio coincidan exactamente con lo esperado.

Garantizando el Despliegue Seguro en Producción

La etapa final y más crítica de toda esta arquitectura es la política de admisión en el entorno de producción. No basta con firmar el binario en el canal si el servidor que lo va a ejecutar acepta cualquier programa que aparezca. En la práctica, configuramos los nodos de ejecución o las herramientas de orquestación para rechazar categóricamente cualquier imagen o binario que no posea un atestado válido emitido por Sigstore.

Esta barrera final evita que archivos inyectados manualmente por administradores descuidados o atacantes con acceso parcial a los servidores se ejecuten en producción. La seguridad deja de basarse en la confianza ciega y pasa a estar garantizada por pruebas matemáticas automatizadas y auditables en tiempo real.

Consideraciones Finales sobre la Cadena de Suministro

La integridad de binarios en los canales de CI/CD ha dejado de ser un lujo corporativo para convertirse en una necesidad básica de ingeniería de software. El uso de firmas basadas en identidad y registros de transparencia elimina la complejidad operativa de las claves tradicionales y eleva el nivel de seguridad de la cadena de suministro. Al adoptar estas prácticas, los equipos ganan velocidad sin sacrificar la previsibilidad y la confianza absoluta en los artefactos entregados a los usuarios finales.