{"id":614,"date":"2026-02-27T13:10:01","date_gmt":"2026-02-27T12:10:01","guid":{"rendered":"https:\/\/secure-pipelines.com\/?p=614"},"modified":"2026-03-25T12:38:24","modified_gmt":"2026-03-25T11:38:24","slug":"owasp-top-10-ci-cd-risks-explained-real-world-examples","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/owasp-top-10-ci-cd-risks-explained-real-world-examples\/","title":{"rendered":"OWASP Top 10 de Riesgos CI\/CD Explicados con Ejemplos Reales"},"content":{"rendered":"<p>Los pipelines CI\/CD se han convertido en la columna vertebral de la entrega moderna de software. Pero con ese poder viene un riesgo significativo. El proyecto <a href=\"https:\/\/owasp.org\/www-project-top-10-ci-cd-security-risks\/\" target=\"_blank\" rel=\"noopener\">OWASP Top 10 de Riesgos de Seguridad CI\/CD<\/a> cataloga los vectores de ataque m\u00e1s cr\u00edticos que afectan a los sistemas de integraci\u00f3n y entrega continua. En esta gu\u00eda, desglosamos cada riesgo con ejemplos reales, evaluaciones de impacto y medidas correctivas aplicables a GitHub Actions, GitLab CI y otras plataformas.<\/p>\n<h2>Tabla Resumen: OWASP Top 10 de Riesgos CI\/CD de un Vistazo<\/h2>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>ID<\/th>\n<th>Nombre del Riesgo<\/th>\n<th>Problema Principal<\/th>\n<th>Severidad<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>CICD-SEC-1<\/td>\n<td>Insufficient Flow Control Mechanisms<\/td>\n<td>Sin aplicaci\u00f3n de puertas de aprobaci\u00f3n antes de que el c\u00f3digo llegue a producci\u00f3n<\/td>\n<td>Cr\u00edtica<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-2<\/td>\n<td>Inadequate Identity and Access Management<\/td>\n<td>Identidades con permisos excesivos en los sistemas del pipeline<\/td>\n<td>Cr\u00edtica<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-3<\/td>\n<td>Dependency Chain Abuse<\/td>\n<td>Paquetes maliciosos inyectados a trav\u00e9s de la cadena de suministro de software<\/td>\n<td>Alta<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-4<\/td>\n<td>Poisoned Pipeline Execution (PPE)<\/td>\n<td>Los atacantes manipulan las definiciones del pipeline para ejecutar c\u00f3digo malicioso<\/td>\n<td>Cr\u00edtica<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-5<\/td>\n<td>Insufficient PBAC (Pipeline-Based Access Controls)<\/td>\n<td>Pipelines con permisos excesivos m\u00e1s all\u00e1 de lo que los jobs requieren<\/td>\n<td>Alta<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-6<\/td>\n<td>Insufficient Credential Hygiene<\/td>\n<td>Secretos expuestos en logs, repositorios o compartidos en exceso entre pipelines<\/td>\n<td>Cr\u00edtica<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-7<\/td>\n<td>Insecure System Configuration<\/td>\n<td>Configuraciones predeterminadas o incorrectas de la plataforma CI\/CD<\/td>\n<td>Alta<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-8<\/td>\n<td>Ungoverned Usage of 3rd Party Services<\/td>\n<td>Integraciones de terceros sin verificar con acceso al pipeline<\/td>\n<td>Media<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-9<\/td>\n<td>Improper Artifact Integrity Validation<\/td>\n<td>Sin verificaci\u00f3n de que los artefactos de compilaci\u00f3n no hayan sido alterados<\/td>\n<td>Alta<\/td>\n<\/tr>\n<tr>\n<td>CICD-SEC-10<\/td>\n<td>Insufficient Logging and Visibility<\/td>\n<td>Incapacidad para detectar o investigar ataques basados en pipelines<\/td>\n<td>Media<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Profundicemos en cada riesgo en detalle.<\/p>\n<h2>CICD-SEC-1: Insufficient Flow Control Mechanisms<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Los mecanismos de control de flujo son las puertas y barreras que gobiernan c\u00f3mo el c\u00f3digo se mueve desde la estaci\u00f3n de trabajo del desarrollador hasta producci\u00f3n. Cuando estos controles son insuficientes, un atacante \u2014 o incluso un empleado interno malintencionado \u2014 puede enviar c\u00f3digo directamente a una rama de producci\u00f3n sin revisi\u00f3n por pares, evadir aprobaciones requeridas u omitir verificaciones de seguridad cr\u00edticas como los an\u00e1lisis SAST y SCA.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>En 2021, un investigador demostr\u00f3 c\u00f3mo un solo desarrollador en una importante empresa tecnol\u00f3gica pod\u00eda evadir las reglas de protecci\u00f3n de ramas enviando c\u00f3digo directamente a la rama predeterminada cuando las protecciones no se aplicaban a los administradores. El resultado: c\u00f3digo sin probar ni revisar desplegado directamente en producci\u00f3n, sin registro de aprobaci\u00f3n. De manera similar, muchas organizaciones configuran sus pipelines para desplegar autom\u00e1ticamente al hacer merge pero olvidan exigir un n\u00famero m\u00ednimo de revisores o requisitos de verificaciones de estado.<\/p>\n<h3>Impacto<\/h3>\n<p>Un atacante que evade los controles de flujo puede inyectar puertas traseras, desactivar herramientas de seguridad o alterar configuraciones de despliegue \u2014 todo sin que nadie lo note hasta que sea demasiado tarde. Este es el riesgo puerta de entrada: si los controles de flujo son d\u00e9biles, todos los controles posteriores se vuelven menos efectivos.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Aplicar reglas de protecci\u00f3n de ramas<\/strong> en todas las ramas cr\u00edticas. Exigir al menos dos revisiones aprobatorias antes del merge y no permitir que los administradores omitan estas reglas.<\/li>\n<li><strong>Requerir que las verificaciones de estado pasen<\/strong> antes del merge, incluyendo SAST, linting y pruebas unitarias.<\/li>\n<li><strong>Usar archivos CODEOWNERS<\/strong> para exigir revisiones de equipos espec\u00edficos para rutas sensibles (por ejemplo, <code>.github\/workflows\/<\/code>, <code>Dockerfile<\/code>, archivos Terraform).<\/li>\n<li><strong>Habilitar commits firmados<\/strong> y verificarlos en el pipeline. Consulta nuestra gu\u00eda en <a href=\"https:\/\/secure-pipelines.com\/es\/labs\/\">Laboratorios de Pipelines Seguros<\/a> para un recorrido pr\u00e1ctico.<\/li>\n<\/ul>\n<h2>CICD-SEC-2: Inadequate Identity and Access Management<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Los entornos CI\/CD abarcan m\u00faltiples sistemas \u2014 control de c\u00f3digo fuente, servidores de compilaci\u00f3n, registros de artefactos, proveedores de nube y objetivos de despliegue. Cada sistema tiene su propio modelo de identidad. Una gesti\u00f3n inadecuada de IAM significa que las identidades (humanas o de m\u00e1quina) tienen privilegios excesivos, las cuentas obsoletas persisten o no hay gobernanza centralizada sobre qui\u00e9n o qu\u00e9 puede hacer qu\u00e9 en todo el pipeline.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>El <strong>ataque a la cadena de suministro de Codecov (abril de 2021)<\/strong> explot\u00f3 una cuenta de servicio con permisos excesivos. Los atacantes modificaron el script Codecov Bash Uploader para exfiltrar variables de entorno \u2014 incluyendo tokens CI y secretos \u2014 de miles de pipelines CI\/CD de clientes. Como esos tokens CI ten\u00edan permisos amplios (a menudo acceso de escritura a repositorios y registros de paquetes), los atacantes pudieron moverse lateralmente por toda la cadena de entrega.<\/p>\n<h3>Impacto<\/h3>\n<p>Los privilegios excesivos significan que una sola identidad comprometida puede leer secretos, modificar c\u00f3digo, alterar definiciones de pipeline, publicar artefactos maliciosos y pivotar a entornos cloud de producci\u00f3n. El radio de impacto es enorme.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Aplicar el principio de m\u00ednimo privilegio<\/strong> a cada identidad \u2014 usuarios humanos, cuentas bot y tokens de servicio.<\/li>\n<li><strong>Usar credenciales de corta duraci\u00f3n y alcance limitado<\/strong> en lugar de tokens de acceso personal de larga duraci\u00f3n. La integraci\u00f3n OIDC de GitHub con proveedores cloud es un patr\u00f3n s\u00f3lido.<\/li>\n<li><strong>Auditar y rotar credenciales<\/strong> regularmente. Revocar el acceso de los miembros del equipo desvinculados de inmediato.<\/li>\n<li><strong>Centralizar la gesti\u00f3n de identidades<\/strong> mediante SSO\/SAML y exigir MFA para todo acceso a plataformas CI\/CD. M\u00e1s informaci\u00f3n en nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd-2\/\">gu\u00edas de Identidad y Acceso<\/a>.<\/li>\n<\/ul>\n<h2>CICD-SEC-3: Dependency Chain Abuse<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Las aplicaciones modernas incorporan cientos o miles de dependencias de registros p\u00fablicos (npm, PyPI, Maven Central, Docker Hub). El abuso de la cadena de dependencias ocurre cuando un atacante inyecta c\u00f3digo malicioso en un paquete que tu pipeline instala autom\u00e1ticamente \u2014 mediante typosquatting, confusi\u00f3n de dependencias o comprometiendo la cuenta de un mantenedor existente.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>En el <strong>incidente de ua-parser-js (octubre de 2021)<\/strong>, un paquete npm ampliamente utilizado con m\u00e1s de 7 millones de descargas semanales fue comprometido cuando un atacante obtuvo acceso a la cuenta npm del mantenedor. Publicaron versiones maliciosas que instalaban criptomineros y ladrones de credenciales. Cualquier pipeline CI\/CD que ejecutara <code>npm install<\/code> sin versiones fijadas descarg\u00f3 el paquete troyanizado autom\u00e1ticamente.<\/p>\n<h3>Impacto<\/h3>\n<p>Las dependencias comprometidas se ejecutan dentro de tu entorno de compilaci\u00f3n con acceso total a variables de entorno, secretos y conectividad de red. Pueden exfiltrar credenciales, inyectar puertas traseras en tus propios artefactos de compilaci\u00f3n o minar criptomonedas en tu infraestructura.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Fijar dependencias a versiones exactas<\/strong> y usar archivos de bloqueo (<code>package-lock.json<\/code>, <code>Pipfile.lock<\/code>, <code>go.sum<\/code>).<\/li>\n<li><strong>Habilitar la revisi\u00f3n de dependencias<\/strong> en pull requests usando herramientas como <code>dependency-review-action<\/code> para GitHub Actions.<\/li>\n<li><strong>Usar un registro privado o proxy<\/strong> (Artifactory, Nexus) para cachear y escanear paquetes antes de que entren en tu compilaci\u00f3n.<\/li>\n<li><strong>Implementar Software Composition Analysis (SCA)<\/strong> en cada ejecuci\u00f3n del pipeline. Consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/dependency-confusion-artifact-poisoning-attacks-defenses\/\">gu\u00edas de Seguridad de la Cadena de Suministro<\/a> para patrones de integraci\u00f3n.<\/li>\n<\/ul>\n<h2>CICD-SEC-4: Poisoned Pipeline Execution (PPE)<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Poisoned Pipeline Execution es uno de los riesgos CI\/CD m\u00e1s peligrosos. Ocurre cuando un atacante puede modificar el archivo de configuraci\u00f3n del pipeline CI\/CD (por ejemplo, <code>.github\/workflows\/<\/code>, <code>.gitlab-ci.yml<\/code>, <code>Jenkinsfile<\/code>) y esa modificaci\u00f3n es ejecutada por el pipeline. Existen tres variantes: <strong>Direct PPE<\/strong> (D-PPE), donde el atacante modifica el archivo del pipeline directamente; <strong>Indirect PPE<\/strong> (I-PPE), donde el atacante modifica archivos que el pipeline referencia (scripts, Makefiles); y <strong>Public PPE<\/strong> (3PE), donde pull requests basados en forks activan pipelines en el repositorio objetivo.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>En la <strong>ola de vulnerabilidades de <code>pull_request_target<\/code> en GitHub Actions (2020-2021)<\/strong>, investigadores de seguridad demostraron que los repositorios p\u00fablicos que usaban el trigger <code>pull_request_target<\/code> con checkout expl\u00edcito del c\u00f3digo del PR (mediante <code>actions\/checkout<\/code> con <code>ref: ${{ github.event.pull_request.head.sha }}<\/code>) permit\u00edan a cualquier colaborador externo ejecutar c\u00f3digo arbitrario dentro del contexto del repositorio objetivo \u2014 con acceso a sus secretos. Importantes proyectos open-source, incluidos varios repositorios de la Apache Foundation, fueron encontrados vulnerables.<\/p>\n<h3>Impacto<\/h3>\n<p>PPE otorga a los atacantes ejecuci\u00f3n de c\u00f3digo dentro de tu pipeline con acceso a secretos, credenciales de despliegue y la capacidad de modificar los resultados de la compilaci\u00f3n. Es efectivamente ejecuci\u00f3n remota de c\u00f3digo en tu infraestructura CI\/CD.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Nunca usar <code>pull_request_target<\/code><\/strong> con <code>actions\/checkout<\/code> de la referencia head del PR. Usar <code>pull_request<\/code> en su lugar para c\u00f3digo no confiable.<\/li>\n<li><strong>Requerir aprobaci\u00f3n para workflows de PR basados en forks<\/strong> en la configuraci\u00f3n de GitHub Actions (Settings > Actions > Fork pull request workflows).<\/li>\n<li><strong>Mantener las definiciones del pipeline en ramas protegidas<\/strong> y restringir qui\u00e9n puede modificarlas.<\/li>\n<li><strong>Separar pipelines de compilaci\u00f3n y despliegue:<\/strong> el pipeline de compilaci\u00f3n (que ejecuta c\u00f3digo no confiable) nunca debe tener acceso a credenciales de despliegue a producci\u00f3n. Consulta nuestros <a href=\"https:\/\/secure-pipelines.com\/es\/labs\/\">laboratorios pr\u00e1cticos<\/a> para patrones de separaci\u00f3n de pipelines.<\/li>\n<\/ul>\n<h2>CICD-SEC-5: Insufficient Pipeline-Based Access Controls (PBAC)<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>PBAC se refiere a los controles de acceso aplicados al propio entorno de ejecuci\u00f3n del pipeline. Un PBAC insuficiente significa que los pipelines tienen acceso a recursos, secretos y sistemas que no son necesarios para su job espec\u00edfico. Es el equivalente en el pipeline de violar el m\u00ednimo privilegio \u2014 un job de compilaci\u00f3n para un servicio frontend tiene acceso a credenciales de producci\u00f3n de la base de datos, por ejemplo.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>Considera una organizaci\u00f3n que ejecuta 50 microservicios en un monorepo, todos compartiendo una \u00fanica configuraci\u00f3n CI\/CD. Cada job del pipeline \u2014 independientemente de qu\u00e9 servicio compile \u2014 tiene acceso a todos los secretos del repositorio: URLs de bases de datos de producci\u00f3n, claves root de AWS, certificados de firma. Cuando el job de pruebas de un desarrollador junior falla y vuelca las variables de entorno al log para depuraci\u00f3n, los secretos de los 50 servicios quedan expuestos.<\/p>\n<h3>Impacto<\/h3>\n<p>Cuando un solo job del pipeline es comprometido (a trav\u00e9s de PPE, abuso de dependencias o un empleado malintencionado), un PBAC insuficiente significa que el atacante obtiene acceso a mucho m\u00e1s que el servicio espec\u00edfico en compilaci\u00f3n. El radio de impacto se expande a cada sistema que el pipeline pueda alcanzar.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Limitar el alcance de los secretos a entornos y jobs espec\u00edficos.<\/strong> En GitHub Actions, usar secretos con alcance de entorno con revisores requeridos para entornos de producci\u00f3n.<\/li>\n<li><strong>Usar federaci\u00f3n OIDC<\/strong> para acceso cloud en lugar de almacenar credenciales est\u00e1ticas de nube. Limitar las claims OIDC a repositorios, ramas y entornos espec\u00edficos.<\/li>\n<li><strong>Restringir los permisos de <code>GITHUB_TOKEN<\/code><\/strong> usando la clave <code>permissions<\/code> a nivel de workflow y job. Usar <code>read-all<\/code> por defecto y otorgar escritura solo donde sea necesario.<\/li>\n<li><strong>Aislar los runners del pipeline<\/strong> por nivel de sensibilidad \u2014 no ejecutar jobs de despliegue a producci\u00f3n en los mismos runners que los jobs de validaci\u00f3n de PR. Consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/category\/ci-cd-security\/\">gu\u00edas de Seguridad CI\/CD<\/a> para patrones de arquitectura.<\/li>\n<\/ul>\n<h2>CICD-SEC-6: Insufficient Credential Hygiene<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Las credenciales (claves API, tokens, contrase\u00f1as, certificados) son el elemento vital de los pipelines CI\/CD. Una higiene de credenciales insuficiente se refiere a secretos codificados directamente en el c\u00f3digo, almacenados en texto plano, impresos en logs, compartidos en exceso, nunca rotados, o que persisten mucho despu\u00e9s de que deber\u00edan haber sido revocados.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>La <strong>filtraci\u00f3n de Samsung (marzo de 2022)<\/strong> vio al grupo Lapsus$ extraer casi 200 GB de c\u00f3digo fuente de los repositorios de Samsung, que conten\u00edan credenciales codificadas incluyendo claves de firma privadas y claves API incrustadas directamente en el c\u00f3digo fuente. En contextos CI\/CD, los investigadores encuentran regularmente secretos impresos en logs de compilaci\u00f3n a trav\u00e9s de salida de depuraci\u00f3n, comandos <code>env<\/code> o mensajes de error que incluyen cabeceras de autenticaci\u00f3n.<\/p>\n<h3>Impacto<\/h3>\n<p>Las credenciales expuestas dan a los atacantes acceso directo a sistemas posteriores \u2014 cuentas cloud, registros de artefactos, bases de datos y objetivos de despliegue \u2014 sin necesidad de explotar ninguna vulnerabilidad adicional. Una sola clave AWS filtrada puede comprometer todo un entorno cloud.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Nunca codificar secretos directamente.<\/strong> Usar el gestor de secretos nativo de tu plataforma (GitHub Encrypted Secrets, GitLab CI\/CD Variables con enmascaramiento, HashiCorp Vault).<\/li>\n<li><strong>Habilitar el escaneo de secretos<\/strong> en todos los repositorios para detectar credenciales comprometidas accidentalmente. La protecci\u00f3n push de GitHub bloquea commits que contienen patrones de secretos conocidos.<\/li>\n<li><strong>Enmascarar secretos en logs.<\/strong> La mayor\u00eda de las plataformas CI soportan enmascaramiento autom\u00e1tico, pero verifica que funcione para tus salidas personalizadas.<\/li>\n<li><strong>Rotar credenciales de forma programada<\/strong> e inmediatamente ante una sospecha de exposici\u00f3n. Usar tokens de corta duraci\u00f3n (OIDC, STS) siempre que sea posible.<\/li>\n<li><strong>Ejecutar herramientas como <code>trufflehog<\/code> o <code>gitleaks<\/code><\/strong> en tu pipeline para detectar secretos antes de que lleguen a la rama principal. Consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/secrets-management-ci-cd-pipelines-patterns-vault\/\">gu\u00edas de Gesti\u00f3n de Secretos<\/a> para detalles de implementaci\u00f3n.<\/li>\n<\/ul>\n<h2>CICD-SEC-7: Insecure System Configuration<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Las plataformas CI\/CD (Jenkins, GitHub Actions, GitLab CI, CircleCI, ArgoCD) vienen con configuraciones predeterminadas que priorizan la facilidad de uso sobre la seguridad. La configuraci\u00f3n insegura del sistema cubre errores de configuraci\u00f3n como: versiones de software desactualizadas con CVEs conocidos, acceso de red excesivamente permisivo, runners auto-hospedados sin endurecimiento, registro de auditor\u00eda deshabilitado e interfaces de administraci\u00f3n expuestas.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>Miles de instancias de Jenkins est\u00e1n expuestas a internet con configuraciones predeterminadas, muchas ejecutando versiones desactualizadas con vulnerabilidades de ejecuci\u00f3n remota de c\u00f3digo conocidas (por ejemplo, <strong>CVE-2024-23897<\/strong>, una lectura arbitraria de archivos en la CLI de Jenkins). Las b\u00fasquedas en Shodan revelan regularmente servidores Jenkins con acceso no autenticado a logs de compilaci\u00f3n, definiciones de pipeline y credenciales almacenadas. En 2022, los investigadores encontraron m\u00e1s de 30,000 instancias de Jenkins expuestas, muchas pertenecientes a empresas Fortune 500.<\/p>\n<h3>Impacto<\/h3>\n<p>Una plataforma CI\/CD mal configurada puede exponer credenciales, permitir la ejecuci\u00f3n no autorizada de pipelines, proporcionar a los atacantes un punto de apoyo en tu red interna y darles la capacidad de alterar cada artefacto que tu organizaci\u00f3n produce.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Endurecer los runners\/agentes auto-hospedados.<\/strong> Usar contenedores ef\u00edmeros que se destruyen despu\u00e9s de cada job. Nunca instalar runners en VMs de larga duraci\u00f3n que acumulan estado.<\/li>\n<li><strong>Mantener las plataformas CI\/CD actualizadas<\/strong> y suscribirse a los avisos de seguridad de tus plataformas espec\u00edficas.<\/li>\n<li><strong>Restringir el acceso de red<\/strong> a las interfaces de administraci\u00f3n CI\/CD. Usar VPN o acceso de red zero-trust.<\/li>\n<li><strong>Deshabilitar funcionalidades innecesarias<\/strong> \u2014 si tu organizaci\u00f3n no usa la CLI de Jenkins, deshabilitala. Si no necesitas acceso SSH a los runners, desact\u00edvalo.<\/li>\n<li><strong>Aplicar los benchmarks CIS<\/strong> para tus plataformas CI\/CD donde est\u00e9n disponibles. Consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/category\/pipeline-hardening\/\">gu\u00edas de Endurecimiento de Pipelines<\/a> para listas de verificaci\u00f3n por plataforma.<\/li>\n<\/ul>\n<h2>CICD-SEC-8: Ungoverned Usage of 3rd Party Services<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Los pipelines CI\/CD modernos se integran con docenas de servicios de terceros: herramientas de calidad de c\u00f3digo, esc\u00e1neres de seguridad, sistemas de notificaci\u00f3n, plataformas de despliegue y acciones del marketplace. El uso no gobernado significa que estas integraciones se adoptan sin revisi\u00f3n de seguridad, se les otorgan alcances OAuth excesivos y no se monitorean los cambios en su comportamiento o propiedad.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>El <strong>compromiso de tj-actions\/changed-files (marzo de 2025)<\/strong> demostr\u00f3 este riesgo de forma dram\u00e1tica. Una GitHub Action ampliamente utilizada fue comprometida a trav\u00e9s de una cadena de eventos: los atacantes primero comprometieron la acci\u00f3n <code>reviewdog\/action-setup<\/code>, la usaron para robar un PAT del mantenedor de <code>tj-actions<\/code>, y luego inyectaron c\u00f3digo malicioso en <code>tj-actions\/changed-files<\/code>. El c\u00f3digo malicioso volc\u00f3 los secretos CI\/CD a los logs de compilaci\u00f3n. Como miles de repositorios usaban esta acci\u00f3n con referencias de versi\u00f3n predeterminadas (sin fijar), el radio de impacto fue enorme.<\/p>\n<h3>Impacto<\/h3>\n<p>Una integraci\u00f3n de terceros comprometida puede leer tu c\u00f3digo fuente, robar secretos, modificar los resultados de la compilaci\u00f3n y desplegar c\u00f3digo malicioso \u2014 todo dentro del contexto de confianza de tu pipeline. Como estas herramientas a menudo tienen alcances OAuth amplios, un solo compromiso puede propagarse por toda tu organizaci\u00f3n.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Fijar las acciones de terceros a SHAs de commit completos<\/strong>, no a tags o nombres de rama. Los tags pueden ser movidos para apuntar a commits maliciosos.<\/li>\n<li><strong>Usar la pol\u00edtica <code>actions\/allowed-actions<\/code> de GitHub<\/strong> para restringir qu\u00e9 acciones pueden ejecutarse en tu organizaci\u00f3n.<\/li>\n<li><strong>Auditar los permisos de aplicaciones OAuth<\/strong> regularmente. Revocar el acceso de herramientas que ya no se utilizan.<\/li>\n<li><strong>Habilitar Dependabot o Renovate<\/strong> para rastrear actualizaciones de tus dependencias de acciones y revisar los cambios cuidadosamente antes de hacer merge. Consulta nuestra secci\u00f3n de <a href=\"https:\/\/secure-pipelines.com\/es\/category\/software-supply-chain\/\">Seguridad de la Cadena de Suministro<\/a> para marcos de gobernanza.<\/li>\n<\/ul>\n<h2>CICD-SEC-9: Improper Artifact Integrity Validation<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Los artefactos de compilaci\u00f3n \u2014 im\u00e1genes de contenedores, binarios, paquetes \u2014 fluyen a trav\u00e9s de m\u00faltiples sistemas entre la etapa de compilaci\u00f3n y el despliegue. La validaci\u00f3n inadecuada de la integridad de artefactos significa que no existe un mecanismo para verificar que el artefacto desplegado en producci\u00f3n es exactamente el artefacto producido por el pipeline de compilaci\u00f3n de confianza, sin manipulaci\u00f3n intermedia.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>El <strong>ataque SolarWinds SUNBURST (diciembre de 2020)<\/strong> es el ejemplo definitivo. Los atacantes comprometieron el sistema de compilaci\u00f3n de SolarWinds e inyectaron una puerta trasera en el software Orion durante el proceso de compilaci\u00f3n. Como no exist\u00eda una verificaci\u00f3n independiente de la integridad de los resultados de compilaci\u00f3n, la actualizaci\u00f3n troyanizada fue firmada con el certificado leg\u00edtimo de SolarWinds y distribuida a aproximadamente 18,000 organizaciones, incluyendo m\u00faltiples agencias gubernamentales de Estados Unidos.<\/p>\n<h3>Impacto<\/h3>\n<p>Sin validaci\u00f3n de la integridad de artefactos, los atacantes pueden reemplazar compilaciones leg\u00edtimas con maliciosas, inyectar puertas traseras durante el tr\u00e1nsito de compilaci\u00f3n a despliegue, o reproducir versiones anteriores (vulnerables) de artefactos. Los consumidores de tu software no tienen forma de verificar que recibieron lo que pretend\u00edas entregar.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Firmar todos los artefactos de compilaci\u00f3n<\/strong> usando herramientas como <a href=\"https:\/\/www.sigstore.dev\/\" target=\"_blank\" rel=\"noopener\">Sigstore\/Cosign<\/a> para contenedores o GPG para paquetes tradicionales.<\/li>\n<li><strong>Generar y distribuir SBOMs<\/strong> (Software Bills of Materials) con cada release usando formato SPDX o CycloneDX.<\/li>\n<li><strong>Implementar atestaciones de procedencia SLSA (Supply-chain Levels for Software Artifacts).<\/strong> SLSA Level 2+ asegura que la procedencia de la compilaci\u00f3n sea generada por el servicio de compilaci\u00f3n mismo, no por el desarrollador.<\/li>\n<li><strong>Verificar los checksums de artefactos<\/strong> en cada etapa del pipeline de entrega \u2014 despu\u00e9s de la compilaci\u00f3n, despu\u00e9s del push al registro y antes del despliegue.<\/li>\n<li><strong>Usar admission controllers<\/strong> (por ejemplo, Kyverno, OPA Gatekeeper) en Kubernetes para rechazar im\u00e1genes sin firmar o sin atestar. Consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/signing-verifying-container-images-sigstore-cosign\/\">gu\u00edas de Seguridad de Artefactos<\/a> para recorridos de implementaci\u00f3n.<\/li>\n<\/ul>\n<h2>CICD-SEC-10: Insufficient Logging and Visibility<\/h2>\n<h3>\u00bfQu\u00e9 es?<\/h3>\n<p>Si no puedes ver lo que est\u00e1 sucediendo en tus pipelines, no puedes detectar ataques, investigar incidentes ni demostrar cumplimiento normativo. El registro y la visibilidad insuficientes significan que los eventos CI\/CD \u2014 ejecuciones de pipeline, cambios de configuraci\u00f3n, acceso a secretos, inicios de sesi\u00f3n de usuarios, modificaciones de permisos \u2014 no se capturan, no se centralizan, no se monitorean o no se retienen el tiempo suficiente para apoyar la respuesta a incidentes.<\/p>\n<h3>Ejemplo Real<\/h3>\n<p>Muchas organizaciones descubren compromisos CI\/CD semanas o meses despu\u00e9s del hecho \u2014 si es que los descubren. En la brecha de Codecov, las empresas afectadas tuvieron dificultades para determinar la exposici\u00f3n porque sus logs CI\/CD no capturaban qu\u00e9 variables de entorno estaban presentes durante las compilaciones afectadas, o esos logs ya hab\u00edan sido rotados. Sin registro centralizado, los equipos quedaron adivinando qu\u00e9 secretos necesitaban rotaci\u00f3n.<\/p>\n<h3>Impacto<\/h3>\n<p>Sin visibilidad, cada otro riesgo de esta lista se vuelve m\u00e1s dif\u00edcil de detectar y responder. Los atacantes pueden operar sin ser detectados, el tiempo de permanencia aumenta y la respuesta a incidentes se convierte en conjeturas en lugar de investigaci\u00f3n basada en evidencias. Los marcos de cumplimiento (SOC 2, ISO 27001) tambi\u00e9n requieren registros de auditor\u00eda demostrables para la entrega de software.<\/p>\n<h3>Medidas Correctivas<\/h3>\n<ul>\n<li><strong>Centralizar los logs CI\/CD<\/strong> en un SIEM o plataforma de gesti\u00f3n de logs (Splunk, Elastic, Datadog). No depender \u00fanicamente de la retenci\u00f3n nativa de logs de la plataforma CI.<\/li>\n<li><strong>Monitorear el comportamiento an\u00f3malo del pipeline:<\/strong> tiempos de ejecuci\u00f3n inusuales, nuevos archivos de workflow, acceso inesperado a secretos, compilaciones activadas a horas inusuales o pipelines ejecut\u00e1ndose desde ramas no reconocidas.<\/li>\n<li><strong>Habilitar el registro de auditor\u00eda<\/strong> en todas las plataformas CI\/CD y sistemas SCM. El log de auditor\u00eda de GitHub Enterprise, los eventos de auditor\u00eda de GitLab y el plugin de registro de auditor\u00eda de Jenkins son puntos de partida.<\/li>\n<li><strong>Configurar alertas<\/strong> para eventos de alto riesgo: cambios en archivos de workflow, nuevas instalaciones de aplicaciones OAuth, modificaciones de reglas de protecci\u00f3n de ramas y aprobaciones de despliegue fallidas.<\/li>\n<li><strong>Retener logs durante al menos 90 d\u00edas<\/strong> (m\u00e1s para industrias reguladas). Asegurar que los logs sean inmutables y a prueba de manipulaciones. Consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/defensive-patterns-mitigations-ci-cd-pipeline-attacks\/\">gu\u00edas de Monitoreo y Registro<\/a> para patrones de arquitectura.<\/li>\n<\/ul>\n<h2>Construyendo un Programa Integral de Seguridad CI\/CD<\/h2>\n<p>Abordar el OWASP Top 10 de riesgos CI\/CD no es un proyecto puntual \u2014 es un programa continuo. Aqu\u00ed hay un enfoque priorizado:<\/p>\n<ol>\n<li><strong>Comenzar con la visibilidad (CICD-SEC-10):<\/strong> No puedes arreglar lo que no puedes ver. Centraliza el registro primero para tener una l\u00ednea base.<\/li>\n<li><strong>Bloquear el acceso (CICD-SEC-2, CICD-SEC-5, CICD-SEC-6):<\/strong> Implementar m\u00ednimo privilegio para identidades, limitar el alcance de los permisos del pipeline y mejorar la higiene de credenciales. Estos tres riesgos juntos cubren las superficies de ataque m\u00e1s comunes.<\/li>\n<li><strong>Endurecer el pipeline (CICD-SEC-1, CICD-SEC-4, CICD-SEC-7):<\/strong> Aplicar controles de flujo, prevenir la ejecuci\u00f3n envenenada de pipelines y endurecer las configuraciones de tu plataforma CI\/CD.<\/li>\n<li><strong>Asegurar la cadena de suministro (CICD-SEC-3, CICD-SEC-8, CICD-SEC-9):<\/strong> Fijar dependencias, gobernar las integraciones de terceros e implementar firma y verificaci\u00f3n de artefactos.<\/li>\n<\/ol>\n<p>Cada capa se construye sobre la anterior. Sin visibilidad, no puedes validar que tus controles de acceso funcionan. Sin controles de acceso, el endurecimiento se evade f\u00e1cilmente. Y sin un pipeline endurecido, los controles de la cadena de suministro pueden ser eludidos.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>El OWASP Top 10 de Riesgos de Seguridad CI\/CD proporciona un marco integral para comprender y abordar las amenazas que enfrentan los pipelines modernos de entrega de software. Como han demostrado ataques como SolarWinds, Codecov y tj-actions, los pipelines CI\/CD son objetivos de alto valor que los atacantes est\u00e1n explotando activamente.<\/p>\n<p>La buena noticia: cada riesgo de esta lista tiene medidas correctivas pr\u00e1cticas e implementables. Al trabajar sistem\u00e1ticamente a trav\u00e9s de estos riesgos \u2014 comenzando con la visibilidad y los controles de acceso, luego endureciendo los pipelines y asegurando la cadena de suministro \u2014 puedes reducir dr\u00e1sticamente la exposici\u00f3n de tu organizaci\u00f3n a ataques basados en CI\/CD.<\/p>\n<p>\u00bfListo para ponerlo en pr\u00e1ctica? Explora nuestros <a href=\"https:\/\/secure-pipelines.com\/es\/labs\/\">laboratorios pr\u00e1cticos<\/a> para implementar estas medidas correctivas en entornos reales de GitHub Actions y GitLab CI, o consulta nuestras <a href=\"https:\/\/secure-pipelines.com\/es\/category\/ci-cd-security\/\">gu\u00edas de Seguridad CI\/CD<\/a> para detalles de implementaci\u00f3n por plataforma.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los pipelines CI\/CD se han convertido en la columna vertebral de la entrega moderna de software. Pero con ese poder viene un riesgo significativo. El proyecto OWASP Top 10 de Riesgos de Seguridad CI\/CD cataloga los vectores de ataque m\u00e1s cr\u00edticos que afectan a los sistemas de integraci\u00f3n y entrega continua. En esta gu\u00eda, desglosamos &#8230; <a title=\"OWASP Top 10 de Riesgos CI\/CD Explicados con Ejemplos Reales\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/owasp-top-10-ci-cd-risks-explained-real-world-examples\/\" aria-label=\"Leer m\u00e1s sobre OWASP Top 10 de Riesgos CI\/CD Explicados con Ejemplos Reales\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55,60],"tags":[],"post_folder":[],"class_list":["post-614","post","type-post","status-publish","format-standard","hentry","category-ci-cd-security","category-threats-attacks"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/comments?post=614"}],"version-history":[{"count":4,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/614\/revisions"}],"predecessor-version":[{"id":865,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/614\/revisions\/865"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/media?parent=614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/categories?post=614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/tags?post=614"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/post_folder?post=614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}