Seguridad de CI/CD
Lista de comprobaci贸n de seguridad del pipeline de CI/CD
Un pipeline de CI/CD guarda credenciales, ejecuta c贸digo de internet y produce lo que instalan sus clientes. Eso lo convierte en un objetivo por s铆 mismo. Utilice esta lista para revisar un pipeline de GitHub Actions, desde el archivo de workflow hasta el artefacto que distribuye.
Actualizado el
Workflows
- Fije las acciones de terceros a un SHA de commit completo. GitHub lo describe como la 煤nica forma actual de usar una acci贸n como versi贸n inmutable. Una etiqueta se puede cambiar para que apunte a otro c贸digo. En marzo de 2025, CISA inform贸 de que todas las versiones de tj-actions/changed-files estuvieron comprometidas durante tres d铆as.
- D茅 a
GITHUB_TOKENel m铆nimo privilegio. Establezca por defecto solo lectura para el contenido y conceda m谩s por job. - Nunca descargue c贸digo no fiable en
pull_request_target. Estos workflows se ejecutan con secretos y permisos elevados. - Mantenga las entradas no fiables fuera de los scripts. Pase los t铆tulos, los nombres de rama y otros valores controlados por el usuario mediante una variable de entorno, en lugar de expandirlos en un comando de shell.
- Revise los cambios en los archivos de workflow. Exija la revisi贸n de los propietarios del c贸digo para
.github/workflows.
Secretos
- D茅 preferencia a las credenciales de corta duraci贸n. Utilice OpenID Connect para que los jobs obtengan de su proveedor de nube tokens de corta duraci贸n y alcance limitado, en lugar de claves de larga duraci贸n almacenadas como secretos.
- Limite los secretos a entornos. Coloque las credenciales de producci贸n tras un entorno con revisores obligatorios.
- Rote tras un incidente. El consejo de CISA tras el ataque a tj-actions fue tratar los secretos expuestos como comprometidos y rotarlos de inmediato.
Runners
- Utilice runners ef铆meros. Una m谩quina nueva por job no deja nada para el siguiente.
- Mantenga los runners autoalojados fuera de los repositorios p煤blicos. GitHub dice que casi nunca deben usarse en ellos, porque cualquiera puede abrir una pull request contra el repositorio.
- A铆sle los jobs. Un job no debe poder leer el espacio de trabajo ni las credenciales de otro job.
Red
- Controle el tr谩fico de salida. Permita las fuentes de paquetes y los servicios que necesita un job y bloquee el resto, de modo que una dependencia comprometida no pueda enviar secretos al exterior. C贸mo detiene la exfiltraci贸n una pol铆tica de salida
- Registre las conexiones. Conserve una traza de a qu茅 se conect贸 cada job, para poder investigarlo m谩s adelante.
Dependencias
- A帽ada los lockfiles al repositorio. Los builds deben resolver las mismas versiones cada vez.
- Revise las dependencias nuevas. Compruebe qu茅 a帽ade una pull request antes de fusionarla.
- Condicione los builds a los hallazgos. Bloquee un build cuando incorpore un paquete con una vulnerabilidad cr铆tica conocida, antes de que se distribuya el artefacto.
Evidencias del build
- Registre una SBOM de lo que descarg贸 el build. Un escaneo posterior de los archivos describe lo que se declar贸, no lo que utiliz贸 el build.
- Firme la procedencia. Vincule cada artefacto con el build que lo produjo, para poder comprobar despu茅s que lo que se ejecuta es lo que se compil贸.
- Monitorice lo distribuido. Vuelva a comprobar los builds publicados cuando se divulguen nuevas vulnerabilidades.
Qu茅 herramientas cubren qu茅 puntos
Los esc谩neres cubren los puntos de dependencias, las herramientas de refuerzo de pipelines cubren los puntos de workflows, y los agentes en el runner o un runner seguro cubren los puntos de red y evidencias. CRACI es el runner: aplica una pol铆tica de salida que bloquea si falla, registra una SBOM de lo que descarg贸 cada job, permite que los controles de pol铆tica bloqueen un build por sus hallazgos y devuelve SBOM, trazas de red y procedencia a trav茅s de su API. No escanea c贸digo ni workflows. Consulte la comparativa de herramientas de seguridad de CI/CD para ver qu茅 herramienta cubre qu茅.
Seguridad del pipeline de CI/CD: preguntas frecuentes
驴Qu茅 es la seguridad del pipeline de CI/CD?
Es la protecci贸n de los sistemas que compilan y distribuyen su software: las definiciones de workflow, los secretos que utilizan, los runners que los ejecutan, las dependencias que descargan y los artefactos que producen. Un pipeline comprometido puede distribuir c贸digo malicioso en su nombre sin tocar su c贸digo fuente.
驴Por qu茅 fijar las GitHub Actions a un SHA de commit?
Las etiquetas se pueden cambiar para que apunten a otro c贸digo. GitHub indica que fijar una acci贸n a un SHA de commit completo es actualmente la 煤nica forma de usar una acci贸n como versi贸n inmutable. En marzo de 2025, CISA inform贸 de que todas las versiones de tj-actions/changed-files estuvieron comprometidas durante tres d铆as.
驴Qu茅 permisos debe tener GITHUB_TOKEN?
Los m铆nimos que necesite cada job. Establezca por defecto solo lectura para el contenido del repositorio y conceda m谩s por job, 煤nicamente donde un job lo necesite.
驴Necesito controlar el tr谩fico de salida en CI?
Si sus jobs tienen acceso a secretos y ejecutan c贸digo de terceros, s铆. La mayor铆a de los jobs solo necesitan acceder a un conjunto conocido de registros de paquetes y servicios. Una pol铆tica de salida bloquea todo lo dem谩s, de modo que una dependencia comprometida no puede enviar secretos al servidor de un atacante.
Compruebe los puntos de red y evidencias en un job
Ejecute un workflow en CRACI y vea su pol铆tica de salida, las conexiones que hizo y la SBOM de lo que descarg贸.
Reservar una demo