{"id":709,"date":"2026-03-25T06:48:55","date_gmt":"2026-03-25T05:48:55","guid":{"rendered":"https:\/\/secure-pipelines.com\/ci-cd-security\/why-shift-left-fails-without-ci-cd-pipeline-security-2\/"},"modified":"2026-03-25T06:48:55","modified_gmt":"2026-03-25T05:48:55","slug":"why-shift-left-fails-without-ci-cd-pipeline-security-2","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/why-shift-left-fails-without-ci-cd-pipeline-security-2\/","title":{"rendered":"Por qu\u00e9 \u00abShift Left\u00bb fracasa sin seguridad en los pipelines CI\/CD"},"content":{"rendered":"<p>\u00abShift left\u00bb se ha convertido en uno de los principios m\u00e1s ampliamente adoptados en DevSecOps. La idea es simple y atractiva: trasladar la seguridad a las fases m\u00e1s tempranas del ciclo de vida del desarrollo de software para detectar problemas antes, reducir costes y mejorar los resultados generales de seguridad.<\/p>\n<p>Con el tiempo, \u00abshift left\u00bb ha evolucionado de un concepto \u00fatil a un dogma casi incuestionable. El escaneo de seguridad, las pruebas y las verificaciones de pol\u00edticas se adelantan lo m\u00e1ximo posible, a menudo al IDE del desarrollador o a las primeras etapas de CI.<\/p>\n<p>Sin embargo, a pesar de a\u00f1os de \u00abshift left,\u00bb los ataques a la cadena de suministro de software siguen teniendo \u00e9xito. Los sistemas de build se comprometen. Se distribuyen dependencias maliciosas. Se publican releases con puertas traseras a trav\u00e9s de pipelines de confianza.<\/p>\n<p>El problema no es que \u00abshift left\u00bb sea incorrecto. El problema es que <strong>shift left por s\u00ed solo es insuficiente<\/strong>, y en muchos casos, fracasa precisamente porque ignora la seguridad de los propios pipelines CI\/CD.<\/p>\n<p>Este art\u00edculo explica d\u00f3nde falla el modelo \u00abshift left\u00bb, por qu\u00e9 no aborda el compromiso de los pipelines, y c\u00f3mo DevSecOps debe evolucionar para incluir la seguridad expl\u00edcita de los pipelines.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">El origen de \u00abshift left\u00bb<\/h2>\n<p>El concepto de \u00abshift left\u00bb surgi\u00f3 como respuesta a los fallos de seguridad en etapas tard\u00edas.<\/p>\n<p>Hist\u00f3ricamente, las revisiones de seguridad se realizaban al final del ciclo de vida del desarrollo: pruebas de penetraci\u00f3n antes del lanzamiento, puertas de aprobaci\u00f3n de seguridad y remediaci\u00f3n de \u00faltimo momento de problemas cr\u00edticos.<\/p>\n<p>Este enfoque generaba problemas predecibles:<\/p>\n<ul class=\"wp-block-list\">\n<li>Los hallazgos de seguridad llegaban demasiado tarde<\/li>\n<li>Las correcciones eran costosas y disruptivas<\/li>\n<li>Los desarrolladores ve\u00edan la seguridad como un bloqueador externo<\/li>\n<\/ul>\n<p>\u00abShift left\u00bb pretend\u00eda resolver esto introduciendo la seguridad m\u00e1s temprano:<\/p>\n<ul class=\"wp-block-list\">\n<li>An\u00e1lisis est\u00e1tico durante el desarrollo<\/li>\n<li>Escaneo de dependencias en tiempo de build<\/li>\n<li>Pruebas automatizadas en CI<\/li>\n<\/ul>\n<p>Como principio, fue una mejora clara. La retroalimentaci\u00f3n temprana es casi siempre mejor que la retroalimentaci\u00f3n tard\u00eda.<\/p>\n<p>Sin embargo, el modelo asum\u00eda algo que ya no es cierto:<\/p>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Si el c\u00f3digo es seguro desde el principio, el software entregado ser\u00e1 seguro.<\/p>\n<\/blockquote>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">Qu\u00e9 asegura realmente \u00abshift left\u00bb<\/h2>\n<p>En la pr\u00e1ctica, \u00abshift left\u00bb se centra en un conjunto espec\u00edfico de riesgos:<\/p>\n<ul class=\"wp-block-list\">\n<li>Vulnerabilidades en el c\u00f3digo de la aplicaci\u00f3n<\/li>\n<li>Problemas conocidos en las dependencias<\/li>\n<li>Errores de configuraci\u00f3n detectables mediante an\u00e1lisis est\u00e1tico<\/li>\n<\/ul>\n<p>Estos controles responden a preguntas importantes:<\/p>\n<ul class=\"wp-block-list\">\n<li>\u00bfContiene este c\u00f3digo vulnerabilidades obvias?<\/li>\n<li>\u00bfEstamos usando bibliotecas con vulnerabilidades conocidas?<\/li>\n<li>\u00bfViola esta configuraci\u00f3n pol\u00edticas conocidas?<\/li>\n<\/ul>\n<p>Lo que <em>no<\/em> responden es igualmente importante:<\/p>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u00bfPodemos confiar en el sistema que construye y entrega este software?<\/p>\n<\/blockquote>\n<p>Los controles shift-left se centran en <em>qu\u00e9<\/em> se escribe. La seguridad de los pipelines se centra en <em>c\u00f3mo<\/em> se transforma, empaqueta y distribuye.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">Por qu\u00e9 \u00abshift left\u00bb no cubre el pipeline<\/h2>\n<p>Los pipelines CI\/CD se sit\u00faan aguas abajo de la mayor\u00eda de las actividades shift-left.<\/p>\n<p>Para cuando un pipeline se ejecuta, el c\u00f3digo ya ha:<\/p>\n<ul class=\"wp-block-list\">\n<li>Pasado el an\u00e1lisis est\u00e1tico<\/li>\n<li>Pasado las verificaciones de dependencias<\/li>\n<li>Pasado las pruebas unitarias y de integraci\u00f3n<\/li>\n<\/ul>\n<p>Sin embargo, es precisamente aqu\u00ed donde ocurren muchos compromisos en el mundo real.<\/p>\n<p>La raz\u00f3n es estructural: los controles shift-left asumen que el pipeline en s\u00ed es confiable.<\/p>\n<p>Esa suposici\u00f3n a menudo es falsa.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">Los pipelines ejecutan entradas no confiables por dise\u00f1o<\/h3>\n<p>Los pipelines CI\/CD ejecutan rutinariamente:<\/p>\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo de pull requests<\/li>\n<li>Scripts de build<\/li>\n<li>Acciones y plugins de terceros<\/li>\n<li>Dependencias descargadas en tiempo de build<\/li>\n<\/ul>\n<p>Incluso si el c\u00f3digo fuente es \u00abseguro,\u00bb el pipeline est\u00e1 expuesto a comportamientos no confiables durante la ejecuci\u00f3n.<\/p>\n<p>El escaneo shift-left no protege contra comportamientos maliciosos introducidos en tiempo de build o empaquetado.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">Los pipelines operan con privilegios elevados<\/h3>\n<p>Los pipelines a menudo tienen acceso a:<\/p>\n<ul class=\"wp-block-list\">\n<li>Secrets y credenciales<\/li>\n<li>Repositorios de artefactos<\/li>\n<li>Claves de firma<\/li>\n<li>Permisos de despliegue<\/li>\n<\/ul>\n<p>Si los atacantes comprometen el pipeline, no necesitan explotar los sistemas de producci\u00f3n en absoluto.<\/p>\n<p>Simplemente pueden producir artefactos \u00ableg\u00edtimos\u00bb en los que los sistemas posteriores conf\u00edan impl\u00edcitamente.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">Fallos reales de la mentalidad \u00abshift left\u00bb<\/h2>\n<p>Los principales incidentes de cadena de suministro no ocurrieron porque los equipos no escanearon el c\u00f3digo a tiempo.<\/p>\n<p>Ocurrieron porque los atacantes explotaron mecanismos de build y entrega de confianza.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">El compromiso del pipeline elude los controles a nivel de c\u00f3digo<\/h3>\n<p>Cuando los atacantes inyectan comportamiento malicioso en:<\/p>\n<ul class=\"wp-block-list\">\n<li>Pasos de build<\/li>\n<li>Herramientas de CI<\/li>\n<li>Procesos de resoluci\u00f3n de dependencias<\/li>\n<\/ul>\n<p>los artefactos resultantes pueden pasar todas las verificaciones shift-left.<\/p>\n<p>Desde la perspectiva del pipeline, todo parece normal.<\/p>\n<p>Desde la perspectiva de producci\u00f3n, el artefacto es leg\u00edtimo.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">Los controles shift-left no modelan los l\u00edmites de confianza<\/h3>\n<p>Las herramientas shift-left se centran en detectar problemas conocidos.<\/p>\n<p>No modelan:<\/p>\n<ul class=\"wp-block-list\">\n<li>Qui\u00e9n controla la ejecuci\u00f3n del pipeline<\/li>\n<li>D\u00f3nde se otorga la confianza<\/li>\n<li>C\u00f3mo los artefactos obtienen legitimidad<\/li>\n<\/ul>\n<p>Por eso los atacantes apuntan a los pipelines: explotan relaciones de confianza, no vulnerabilidades.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">D\u00f3nde deben aplicarse los controles de seguridad del pipeline<\/h2>\n<p>Si los controles shift-left son insuficientes, \u00bfd\u00f3nde deben aplicarse los controles de seguridad del pipeline?<\/p>\n<p>La respuesta no es \u00aba\u00fan m\u00e1s temprano.\u00bb<\/p>\n<p>La seguridad del pipeline requiere controles en transiciones de confianza espec\u00edficas.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">Antes de la ejecuci\u00f3n: controlar las entradas no confiables<\/h3>\n<p>No todos los triggers del pipeline deben tratarse por igual.<\/p>\n<p>Los controles deben distinguir entre:<\/p>\n<ul class=\"wp-block-list\">\n<li>Ramas de confianza<\/li>\n<li>Pull requests no confiables<\/li>\n<li>Contribuciones externas<\/li>\n<\/ul>\n<p>Los secrets, las acciones privilegiadas y los pasos de despliegue deben estar controlados en consecuencia.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">Durante la ejecuci\u00f3n: aislar los runners<\/h3>\n<p>Los runners son donde la confianza es m\u00e1s fr\u00e1gil.<\/p>\n<p>Los controles efectivos incluyen:<\/p>\n<ul class=\"wp-block-list\">\n<li>Runners ef\u00edmeros<\/li>\n<li>Aislamiento fuerte<\/li>\n<li>Acceso de red m\u00ednimo<\/li>\n<li>Identidades de m\u00ednimo privilegio<\/li>\n<\/ul>\n<p>El escaneo shift-left no protege contra el compromiso de runners. El aislamiento s\u00ed.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h3 class=\"wp-block-heading\">Despu\u00e9s de la ejecuci\u00f3n: verificar los artefactos<\/h3>\n<p>El control de pipeline m\u00e1s cr\u00edtico es a menudo el \u00faltimo.<\/p>\n<p>Antes del despliegue, los sistemas deben verificar:<\/p>\n<ul class=\"wp-block-list\">\n<li>Qui\u00e9n construy\u00f3 el artefacto<\/li>\n<li>C\u00f3mo fue construido<\/li>\n<li>Si ha sido modificado<\/li>\n<\/ul>\n<p>Sin verificaci\u00f3n, producci\u00f3n conf\u00eda impl\u00edcitamente en el pipeline.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">Replanteando DevSecOps m\u00e1s all\u00e1 de \u00abshift left\u00bb<\/h2>\n<p>DevSecOps necesita un modelo mental m\u00e1s completo.<\/p>\n<p>La seguridad debe ser:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Temprana<\/strong>, para detectar defectos de forma econ\u00f3mica<\/li>\n<li><strong>Continua<\/strong>, para adaptarse al cambio<\/li>\n<li><strong>Aplicable<\/strong>, para prevenir compromisos silenciosos<\/li>\n<\/ul>\n<p>La seguridad del pipeline aborda el tercer punto.<\/p>\n<p>Introduce garant\u00edas aplicables que el escaneo por s\u00ed solo no puede proporcionar.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">Un modelo m\u00e1s preciso: asegurar el ciclo de vida de la confianza<\/h2>\n<p>En lugar de \u00abshift left,\u00bb un mejor enfoque es:<\/p>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Asegurar el ciclo de vida de la confianza.<\/p>\n<\/blockquote>\n<p>Esto significa:<\/p>\n<ul class=\"wp-block-list\">\n<li>Comprender d\u00f3nde entra la confianza en el sistema<\/li>\n<li>Controlar c\u00f3mo se propaga<\/li>\n<li>Verificarla antes de que llegue a producci\u00f3n<\/li>\n<\/ul>\n<p>Los controles shift-left siguen siendo valiosos, pero solo como parte de un sistema m\u00e1s amplio que incluya la seguridad del pipeline.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n<p>\u00abShift left\u00bb no es incorrecto, pero es incompleto.<\/p>\n<p>Mejora la calidad del c\u00f3digo y detecta defectos tempranamente, pero no protege contra el compromiso de los pipelines ni contra los ataques a la cadena de suministro.<\/p>\n<p>Los pipelines CI\/CD son donde la confianza se transforma, amplifica y finalmente se otorga.<\/p>\n<p>Ignorar la seguridad del pipeline significa confiar en los mismos sistemas que los atacantes apuntan cada vez m\u00e1s.<\/p>\n<p>DevSecOps debe evolucionar m\u00e1s all\u00e1 de los esl\u00f3ganes y centrarse en la ingenier\u00eda de la confianza de extremo a extremo.<\/p>\n<p>Sin seguridad en los pipelines CI\/CD, \u00abshift left\u00bb no es una estrategia, es una suposici\u00f3n.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<div class=\"secure-pipelines-author-box\" >\n        <strong>Sobre el autor<\/strong><\/p>\n<p>Este art\u00edculo est\u00e1 escrito por un arquitecto senior de DevSecOps y seguridad con m\u00e1s de 15 a\u00f1os de experiencia en ingenier\u00eda de software y seguridad de aplicaciones. El contenido refleja un enfoque pragm\u00e1tico, orientado a la ingenier\u00eda y basado en restricciones del mundo real.<\/p>\n<\/p><\/div>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfQu\u00e9 significa \\\"shift left\\\" en DevSecOps?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Shift left en DevSecOps significa introducir verificaciones de seguridad m\u00e1s temprano en el ciclo de vida del desarrollo de software para detectar problemas antes y reducir los costes de remediaci\u00f3n.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfPor qu\u00e9 la seguridad shift-left no es suficiente?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"La seguridad shift-left se centra en problemas de c\u00f3digo y dependencias, pero no protege los propios pipelines CI\/CD, que los atacantes apuntan cada vez m\u00e1s para comprometer las cadenas de suministro de software.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfC\u00f3mo complementa la seguridad del pipeline CI\/CD al shift-left?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"La seguridad del pipeline CI\/CD a\u00f1ade controles aplicables en las etapas de build, ejecuci\u00f3n y release, asegurando confianza, integridad y procedencia m\u00e1s all\u00e1 del escaneo en etapas tempranas.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u00bfQu\u00e9 controles de seguridad deben aplicarse en los pipelines CI\/CD?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Los controles clave incluyen aislamiento de runners, identidades de m\u00ednimo privilegio, protecci\u00f3n de secrets, firma de artefactos y verificaci\u00f3n antes del despliegue.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00abShift left\u00bb se ha convertido en uno de los principios m\u00e1s ampliamente adoptados en DevSecOps. La idea es simple y atractiva: trasladar la seguridad a las fases m\u00e1s tempranas del ciclo de vida del desarrollo de software para detectar problemas antes, reducir costes y mejorar los resultados generales de seguridad. Con el tiempo, \u00abshift left\u00bb &#8230; <a title=\"Por qu\u00e9 \u00abShift Left\u00bb fracasa sin seguridad en los pipelines CI\/CD\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/why-shift-left-fails-without-ci-cd-pipeline-security-2\/\" aria-label=\"Leer m\u00e1s sobre Por qu\u00e9 \u00abShift Left\u00bb fracasa sin seguridad en los pipelines CI\/CD\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[],"post_folder":[],"class_list":["post-709","post","type-post","status-publish","format-standard","hentry","category-ci-cd-security"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/709","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=709"}],"version-history":[{"count":0,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/709\/revisions"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/media?parent=709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/categories?post=709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/tags?post=709"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/post_folder?post=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}