{"id":592,"date":"2026-03-24T08:44:10","date_gmt":"2026-03-24T07:44:10","guid":{"rendered":"https:\/\/secure-pipelines.com\/?p=592"},"modified":"2026-03-24T18:39:19","modified_gmt":"2026-03-24T17:39:19","slug":"software-supply-chain-security-comprehensive-guide","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/es\/software-supply-chain\/software-supply-chain-security-comprehensive-guide\/","title":{"rendered":"Seguridad de la Cadena de Suministro de Software: Gu\u00eda Completa para Equipos de Ingenier\u00eda"},"content":{"rendered":"<h2>Introducci\u00f3n: Por Qu\u00e9 Importa la Seguridad de la Supply Chain de Software<\/h2>\n<p>En diciembre de 2020, el mundo descubri\u00f3 que <strong>SolarWinds<\/strong> \u2014 una plataforma de gesti\u00f3n de TI ampliamente confiable \u2014 hab\u00eda sido comprometida. Los atacantes inyectaron c\u00f3digo malicioso en el proceso de build del software Orion, distribuyendo una actualizaci\u00f3n contaminada a aproximadamente 18.000 organizaciones, incluyendo agencias del gobierno de EE.UU. y empresas del Fortune 500. El ataque no fue contra el repositorio de c\u00f3digo fuente de SolarWinds directamente, sino contra su <em>build pipeline<\/em>. Este \u00fanico incidente redefini\u00f3 c\u00f3mo la industria piensa sobre la seguridad del software.<\/p>\n<p>Luego lleg\u00f3 <strong>Log4Shell<\/strong> a finales de 2021. Una vulnerabilidad cr\u00edtica de ejecuci\u00f3n remota de c\u00f3digo en Apache Log4j \u2014 una biblioteca de logging de Java omnipresente \u2014 expuso a pr\u00e1cticamente todas las empresas del planeta. Las organizaciones se apresuraron a determinar si siquiera <em>usaban<\/em> Log4j, revelando una falta fundamental de visibilidad sobre las dependencias de software. La lecci\u00f3n fue clara: no puedes asegurar lo que no puedes ver.<\/p>\n<p>M\u00e1s recientemente, la <strong>backdoor de XZ Utils<\/strong> (CVE-2024-3094) a principios de 2024 demostr\u00f3 un vector de ataque a\u00fan m\u00e1s insidioso. Una campa\u00f1a paciente de ingenier\u00eda social a largo plazo permiti\u00f3 a un contribuidor malicioso insertar una backdoor en una biblioteca de compresi\u00f3n cr\u00edtica utilizada en casi todas las distribuciones de Linux. El ataque apunt\u00f3 espec\u00edficamente al sistema de build, activ\u00e1ndose solo bajo ciertas condiciones de compilaci\u00f3n \u2014 un ataque a la supply chain de extraordinaria sofisticaci\u00f3n.<\/p>\n<p>Estos incidentes comparten un hilo com\u00fan: <strong>los atacantes ya no solo apuntan a tu c\u00f3digo de aplicaci\u00f3n \u2014 est\u00e1n apuntando a toda la cadena de herramientas, dependencias, procesos e infraestructura que entrega software a producci\u00f3n.<\/strong> Esta es la software supply chain, y asegurarla se ha convertido en uno de los desaf\u00edos m\u00e1s cr\u00edticos en la ingenier\u00eda moderna.<\/p>\n<p>Esta gu\u00eda completa cubre cada dimensi\u00f3n de la seguridad de la supply chain de software \u2014 desde la gesti\u00f3n de dependencias hasta la integridad de builds, firma de artefactos, provenance, SBOMs y frameworks de cumplimiento. Ya seas ingeniero DevOps, arquitecto de seguridad o l\u00edder de ingenier\u00eda, esta gu\u00eda proporciona una hoja de ruta pr\u00e1ctica e integral para fortalecer tu software supply chain.<\/p>\n<h2>Comprendiendo el Modelo de Supply Chain de Software<\/h2>\n<p>Antes de poder asegurar la supply chain, necesitamos entender sus componentes. Una supply chain de software moderna consta de cinco etapas interconectadas:<\/p>\n<h3>1. C\u00f3digo Fuente<\/h3>\n<p>Aqu\u00ed es donde los desarrolladores escriben, revisan y hacen commit del c\u00f3digo. La etapa de c\u00f3digo fuente incluye sistemas de control de versiones (Git), procesos de code review, reglas de branch protection y firma de commits. Las amenazas en esta etapa incluyen cuentas de desarrolladores comprometidas, commits maliciosos y cambios no autorizados en archivos de configuraci\u00f3n de CI\/CD (pipeline poisoning).<\/p>\n<h3>2. Dependencias<\/h3>\n<p>Las aplicaciones modernas dependen en gran medida de bibliotecas y paquetes de terceros. Una aplicaci\u00f3n t\u00edpica de Node.js puede incorporar cientos o miles de dependencias transitivas. La etapa de dependencias abarca registros de paquetes (npm, PyPI, Maven Central), lockfiles, resoluci\u00f3n de versiones y escaneo de vulnerabilidades. Esta es una de las etapas m\u00e1s frecuentemente explotadas de la supply chain.<\/p>\n<h3>3. Build<\/h3>\n<p>La etapa de build transforma el c\u00f3digo fuente y las dependencias en artefactos desplegables. Esto incluye compilaci\u00f3n, bundling, construcci\u00f3n de im\u00e1genes de contenedores y ejecuci\u00f3n de tests. Los sistemas de build \u2014 ya sea Jenkins, GitHub Actions, GitLab CI u otros \u2014 son objetivos de alto valor porque comprometer un proceso de build puede inyectar c\u00f3digo malicioso en cada artefacto producido.<\/p>\n<h3>4. Artefactos<\/h3>\n<p>Los outputs del build \u2014 im\u00e1genes de contenedores, binarios, paquetes \u2014 se almacenan en registros de artefactos (Docker Hub, Amazon ECR, Artifactory, etc.). La etapa de artefactos involucra firma, verificaci\u00f3n, adjunci\u00f3n de metadata y control de acceso. Sin controles de integridad adecuados, los artefactos pueden ser manipulados despu\u00e9s del build.<\/p>\n<h3>5. Despliegue<\/h3>\n<p>La etapa final entrega los artefactos a los entornos de producci\u00f3n. El despliegue involucra plataformas de orquestaci\u00f3n (Kubernetes), admission controllers, aplicaci\u00f3n de pol\u00edticas y verificaci\u00f3n en runtime. Esta es la \u00faltima l\u00ednea de defensa \u2014 el punto donde verificas que lo que est\u00e1s desplegando es exactamente lo que fue construido.<\/p>\n<p>Cada etapa presenta superficies de ataque \u00fanicas y requiere medidas defensivas espec\u00edficas. El resto de esta gu\u00eda recorre cada una en detalle.<\/p>\n<h2>Riesgos y Defensas de Dependencias<\/h2>\n<p>Las dependencias son posiblemente el componente m\u00e1s vulnerable de la software supply chain. La investigaci\u00f3n muestra consistentemente que m\u00e1s del 80% del c\u00f3digo en las aplicaciones modernas proviene de dependencias de c\u00f3digo abierto. Esto crea una enorme superficie de ataque que es dif\u00edcil de monitorear y controlar.<\/p>\n<h3>Ataques Comunes a Dependencias<\/h3>\n<p><strong>Dependency confusion<\/strong> (tambi\u00e9n llamada confusi\u00f3n de namespace) explota la forma en que los gestores de paquetes resuelven dependencias. Cuando una organizaci\u00f3n usa paquetes internos con nombres que no existen en registros p\u00fablicos, un atacante puede publicar un paquete malicioso con el mismo nombre en el registro p\u00fablico. Si el gestor de paquetes est\u00e1 mal configurado, puede descargar el paquete del atacante en lugar del interno. Este vector de ataque fue demostrado famosamente por el investigador de seguridad Alex Birsan en 2021, afectando a Apple, Microsoft y otras grandes empresas.<\/p>\n<p><strong>Typosquatting<\/strong> apunta a desarrolladores que cometen errores tipogr\u00e1ficos al especificar nombres de paquetes. Los atacantes publican paquetes maliciosos con nombres que se asemejan mucho a bibliotecas populares \u2014 por ejemplo, <code>reqeusts<\/code> en lugar de <code>requests<\/code>, o <code>lodash-utils<\/code> imitando a <code>lodash<\/code>. Estos paquetes a menudo contienen c\u00f3digo de exfiltraci\u00f3n de datos o miner\u00eda de criptomonedas.<\/p>\n<p><strong>Cuentas de mantenedores comprometidas<\/strong> permiten a los atacantes enviar actualizaciones maliciosas a paquetes leg\u00edtimos y ampliamente utilizados. El incidente de <code>event-stream<\/code> en 2018 y el compromiso de <code>ua-parser-js<\/code> en 2021 son ejemplos notables. Debido a que los paquetes son leg\u00edtimos y confiables, el c\u00f3digo malicioso se propaga r\u00e1pidamente.<\/p>\n<p>Para una inmersi\u00f3n profunda en estos vectores de ataque y defensas pr\u00e1cticas, consulta nuestra gu\u00eda detallada: <a href=\"https:\/\/secure-pipelines.com\/es\/?p=645\">Dependency Confusion y Artifact Poisoning: Ataques y Defensas<\/a>.<\/p>\n<h3>Estrategias Defensivas<\/h3>\n<p><strong>Lockfiles y version pinning:<\/strong> Siempre haz commit de los lockfiles (<code>package-lock.json<\/code>, <code>Pipfile.lock<\/code>, <code>go.sum<\/code>, <code>Cargo.lock<\/code>) en el control de versiones. Los lockfiles registran las versiones exactas y los hashes de integridad de cada dependencia, asegurando instalaciones reproducibles. Fija las dependencias a versiones exactas en lugar de usar rangos de versiones para prevenir actualizaciones inesperadas.<\/p>\n<p><strong>Configuraci\u00f3n de registro privado:<\/strong> Configura los gestores de paquetes para resolver paquetes internos exclusivamente desde tu registro privado. Usa paquetes con scope (por ejemplo, <code>@tuempresa\/nombre-paquete<\/code>) y configura mapeos de registro para prevenir ataques de dependency confusion. Herramientas como Artifactory y Nexus pueden actuar como proxy de registros p\u00fablicos mientras proporcionan una capa adicional de escaneo y control.<\/p>\n<p><strong>Escaneo de vulnerabilidades:<\/strong> Integra herramientas de Software Composition Analysis (SCA) en tu pipeline de CI\/CD. Herramientas como <code>Trivy<\/code>, <code>Grype<\/code>, <code>Snyk<\/code> y <code>Dependabot<\/code> escanean dependencias contra bases de datos de vulnerabilidades (NVD, OSV, GitHub Advisory Database) y pueden bloquear builds que introducen vulnerabilidades conocidas. Para una comparaci\u00f3n de herramientas de escaneo disponibles, consulta nuestras <a href=\"\/es\/ci-cd-security\/\">gu\u00edas de comparaci\u00f3n de herramientas de CI\/CD Security<\/a>.<\/p>\n<p><strong>Revisi\u00f3n de dependencias y allow-listing:<\/strong> Establece un proceso de revisi\u00f3n para nuevas dependencias. Eval\u00faa los paquetes bas\u00e1ndote en la actividad de mantenimiento, cantidad de contribuidores, estad\u00edsticas de descargas y vulnerabilidades conocidas. Algunas organizaciones mantienen una allow-list de paquetes aprobados y requieren revisi\u00f3n de seguridad antes de agregar nuevos.<\/p>\n<h2>Integridad del Build: Builds Reproducibles y Herm\u00e9ticos<\/h2>\n<p>La etapa de build es donde el c\u00f3digo fuente y las dependencias se transforman en artefactos desplegables. Si un atacante puede comprometer el proceso de build, puede inyectar c\u00f3digo malicioso en el output sin modificar el c\u00f3digo fuente \u2014 exactamente como sucedi\u00f3 en el ataque de SolarWinds. La integridad del build asegura que el proceso de build en s\u00ed mismo sea confiable.<\/p>\n<h3>Builds Reproducibles<\/h3>\n<p>Un <strong>build reproducible<\/strong> es aquel que produce un output id\u00e9ntico dado el mismo c\u00f3digo fuente, dependencias, entorno de build e instrucciones de build. La reproducibilidad es una propiedad de seguridad poderosa porque permite la verificaci\u00f3n independiente: cualquiera puede reconstruir desde los mismos inputs y confirmar que el output coincide. Si el output difiere, indica manipulaci\u00f3n.<\/p>\n<p>Lograr builds reproducibles requiere eliminar fuentes de no-determinismo:<\/p>\n<ul>\n<li><strong>Timestamps:<\/strong> Los timestamps embebidos causan que los outputs del build difieran entre ejecuciones. Usa <code>SOURCE_DATE_EPOCH<\/code> para normalizar los timestamps.<\/li>\n<li><strong>Orden de archivos:<\/strong> El orden de enumeraci\u00f3n del sistema de archivos puede variar. Asegura un orden determin\u00edstico de archivos en archivos comprimidos y capas del filesystem.<\/li>\n<li><strong>Aleatoriedad:<\/strong> Algunas herramientas embeben valores aleatorios (UUIDs, nonces) en el output. Usa seeds determin\u00edsticos o elimina los elementos aleatorios.<\/li>\n<li><strong>Dependencias flotantes:<\/strong> Asegura que todas las dependencias est\u00e9n fijadas a versiones exactas con hashes de integridad verificados durante la instalaci\u00f3n.<\/li>\n<\/ul>\n<h3>Builds Herm\u00e9ticos<\/h3>\n<p>Un <strong>build herm\u00e9tico<\/strong> est\u00e1 aislado del entorno del host y de la red. Solo puede acceder a inputs expl\u00edcitamente declarados \u2014 sin llamadas de red, sin acceso a rutas del filesystem del host fuera del sandbox de build, sin dependencia de herramientas preinstaladas. Los builds herm\u00e9ticos aseguran que el output del build dependa solo de inputs declarados, haciendo imposible que un atacante inyecte dependencias o herramientas adicionales durante el proceso de build.<\/p>\n<p>Sistemas de build como <strong>Bazel<\/strong>, <strong>Buck2<\/strong> y <strong>Pants<\/strong> est\u00e1n dise\u00f1ados para builds herm\u00e9ticos desde su concepci\u00f3n. Para builds de contenedores, herramientas como <strong>BuildKit<\/strong> con aislamiento de red y <strong>ko<\/strong> para aplicaciones Go proporcionan capacidades de build herm\u00e9tico.<\/p>\n<p>Para un recorrido completo de implementaci\u00f3n de builds reproducibles y herm\u00e9ticos en tu pipeline de CI\/CD, consulta: <a href=\"https:\/\/secure-pipelines.com\/es\/?p=646\">Integridad del Build: Builds Reproducibles en CI\/CD<\/a>.<\/p>\n<h3>Seguridad de la Plataforma de Build<\/h3>\n<p>M\u00e1s all\u00e1 del proceso de build en s\u00ed, la plataforma de build requiere hardening:<\/p>\n<ul>\n<li><strong>Entornos de build ef\u00edmeros:<\/strong> Usa runners frescos y ef\u00edmeros para cada build para prevenir ataques basados en persistencia. Nunca reutilices entornos de build entre jobs.<\/li>\n<li><strong>Credenciales de m\u00ednimo privilegio:<\/strong> Los jobs de build deben tener solo los permisos m\u00ednimos requeridos. Usa tokens de corta duraci\u00f3n y alcance limitado en lugar de secrets de larga duraci\u00f3n.<\/li>\n<li><strong>Protecci\u00f3n de pipeline-as-code:<\/strong> Los archivos de configuraci\u00f3n de CI\/CD (<code>.github\/workflows\/<\/code>, <code>.gitlab-ci.yml<\/code>, <code>Jenkinsfile<\/code>) deben estar protegidos por reglas de branch protection y requerir code review para cambios.<\/li>\n<li><strong>Auditor\u00eda de logs de build:<\/strong> Mant\u00e9n logs de build inmutables que capturen todos los inputs, outputs y detalles del entorno para an\u00e1lisis forense.<\/li>\n<\/ul>\n<h2>Firma y Verificaci\u00f3n de Artefactos con Sigstore y Cosign<\/h2>\n<p>Una vez que un build produce un artefacto \u2014 una imagen de contenedor, un binario, un paquete \u2014 \u00bfc\u00f3mo te aseguras de que no ha sido manipulado antes del despliegue? La <strong>firma de artefactos<\/strong> proporciona prueba criptogr\u00e1fica de que un artefacto fue producido por un proceso de build confiable y no ha sido modificado desde entonces.<\/p>\n<h3>El Desaf\u00edo de la Firma Tradicional<\/h3>\n<p>La firma de c\u00f3digo tradicional depende de claves criptogr\u00e1ficas de larga duraci\u00f3n. Esto crea desaf\u00edos operacionales significativos: generaci\u00f3n de claves, almacenamiento seguro, rotaci\u00f3n, revocaci\u00f3n y distribuci\u00f3n. Si una clave de firma es comprometida, cada artefacto firmado con esa clave es sospechoso. La gesti\u00f3n de claves ha sido hist\u00f3ricamente tan onerosa que muchos equipos simplemente omiten la firma por completo.<\/p>\n<h3>Sigstore: Firma Keyless para la Software Supply Chain<\/h3>\n<p><strong>Sigstore<\/strong> es un proyecto open-source que simplifica fundamentalmente la firma de artefactos al eliminar la necesidad de claves de larga duraci\u00f3n. Sigstore consta de varios componentes:<\/p>\n<ul>\n<li><strong>Cosign:<\/strong> Una herramienta para firmar y verificar im\u00e1genes de contenedores y otros artefactos OCI. Cosign soporta tanto flujos de firma basados en claves como keyless.<\/li>\n<li><strong>Fulcio:<\/strong> Una autoridad certificadora que emite certificados de firma de corta duraci\u00f3n basados en tokens de identidad OpenID Connect (OIDC). En lugar de gestionar claves, te autentificas con tu proveedor de identidad (GitHub, Google, etc.) y recibes un certificado temporal.<\/li>\n<li><strong>Rekor:<\/strong> Un transparency log resistente a manipulaciones que registra todos los eventos de firma. Rekor proporciona un registro permanente y auditable de cada firma de artefacto, permitiendo la verificaci\u00f3n incluso despu\u00e9s de que el certificado de corta duraci\u00f3n haya expirado.<\/li>\n<\/ul>\n<h3>Firma Keyless en CI\/CD<\/h3>\n<p>En un pipeline de CI\/CD, la firma keyless con Sigstore funciona de la siguiente manera:<\/p>\n<ol>\n<li>El sistema de build completa y produce un artefacto (por ejemplo, una imagen de contenedor).<\/li>\n<li>Cosign solicita un certificado de firma a Fulcio, autentic\u00e1ndose con el token OIDC de la plataforma de CI\/CD (por ejemplo, el token OIDC de GitHub Actions).<\/li>\n<li>Fulcio verifica la identidad y emite un certificado de corta duraci\u00f3n que embebe los claims de identidad (repositorio, workflow, commit SHA).<\/li>\n<li>Cosign firma el artefacto con la clave ef\u00edmera y registra la firma en Rekor.<\/li>\n<li>La clave ef\u00edmera se descarta \u2014 no hay secrets de larga duraci\u00f3n que gestionar.<\/li>\n<\/ol>\n<p>En el momento del despliegue, verificas la firma comprobando el transparency log de Rekor y validando que la identidad de firma coincide con tu workflow de CI\/CD esperado.<\/p>\n<p>Para un tutorial pr\u00e1ctico sobre la implementaci\u00f3n de Sigstore y Cosign en tu pipeline, consulta: <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/signing-verifying-container-images-sigstore-cosign\/\">Firma y Verificaci\u00f3n de Im\u00e1genes de Contenedores con Sigstore y Cosign<\/a>.<\/p>\n<h2>Provenance y Attestations: SLSA e in-toto<\/h2>\n<p>La firma te dice <em>qui\u00e9n<\/em> produjo un artefacto, pero no te dice <em>c\u00f3mo<\/em> fue producido. El <strong>provenance<\/strong> responde las preguntas cr\u00edticas: \u00bfQu\u00e9 c\u00f3digo fuente se us\u00f3? \u00bfQu\u00e9 proceso de build se ejecut\u00f3? \u00bfQu\u00e9 dependencias se incluyeron? \u00bfQu\u00e9 builder se us\u00f3? El provenance proporciona un registro verificable del origen del artefacto y su proceso de build.<\/p>\n<h3>SLSA Provenance<\/h3>\n<p><strong>SLSA<\/strong> (Supply-chain Levels for Software Artifacts, pronunciado \u00absalsa\u00bb) es un framework desarrollado por Google y la OpenSSF que define niveles crecientes de seguridad de la supply chain. En su n\u00facleo, SLSA especifica un formato est\u00e1ndar de provenance que captura:<\/p>\n<ul>\n<li><strong>Identidad del builder:<\/strong> Qu\u00e9 plataforma de build produjo el artefacto.<\/li>\n<li><strong>Referencia del c\u00f3digo fuente:<\/strong> El repositorio de c\u00f3digo fuente exacto, branch y commit.<\/li>\n<li><strong>Receta de build:<\/strong> La configuraci\u00f3n de build (archivo de workflow, comando de build).<\/li>\n<li><strong>Materiales:<\/strong> Todos los inputs del build (dependencias, im\u00e1genes base).<\/li>\n<li><strong>Metadata:<\/strong> Timestamps, informaci\u00f3n de reproducibilidad y versi\u00f3n del builder.<\/li>\n<\/ul>\n<p>El provenance SLSA es generado por la plataforma de build (no por el script de build), lo cual es crucial \u2014 significa que un script de build comprometido no puede falsificar su propio provenance. Plataformas como GitHub Actions y Google Cloud Build tienen generadores nativos de provenance SLSA.<\/p>\n<h3>Attestations in-toto<\/h3>\n<p><strong>in-toto<\/strong> es un framework para asegurar la integridad de toda la software supply chain. Mientras SLSA se enfoca principalmente en el provenance del build, in-toto proporciona un framework de attestation m\u00e1s general que puede capturar cualquier paso en la supply chain \u2014 code review, testing, escaneo, aprobaci\u00f3n y despliegue.<\/p>\n<p>Una attestation in-toto sigue el formato <strong>DSSE (Dead Simple Signing Envelope)<\/strong> y consiste en:<\/p>\n<ul>\n<li><strong>Subject:<\/strong> El\/los artefacto(s) a los que se refiere la attestation (identificados por digest).<\/li>\n<li><strong>Predicate type:<\/strong> El tipo de attestation (provenance SLSA, resultado de escaneo de vulnerabilidades, SBOM, etc.).<\/li>\n<li><strong>Predicate:<\/strong> Los datos reales de la attestation.<\/li>\n<\/ul>\n<p>Se pueden adjuntar m\u00faltiples attestations a un solo artefacto, creando un conjunto rico de metadata que los motores de pol\u00edticas pueden evaluar en el momento del despliegue.<\/p>\n<p>Para una gu\u00eda detallada sobre generaci\u00f3n y verificaci\u00f3n de provenance y attestations, consulta: <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/artifact-provenance-attestations-slsa-in-toto\/\">Artifact Provenance y Attestations: SLSA e in-toto<\/a>.<\/p>\n<h2>Software Bills of Materials (SBOMs)<\/h2>\n<p>Un <strong>SBOM<\/strong> (Software Bill of Materials) es un inventario completo de todos los componentes, bibliotecas y dependencias en un artefacto de software. Piensa en ello como una etiqueta nutricional para el software \u2014 le dice a los consumidores exactamente qu\u00e9 hay dentro. Los SBOMs se han convertido en un requisito regulatorio en muchos contextos y son esenciales para la gesti\u00f3n de vulnerabilidades y la respuesta a incidentes.<\/p>\n<h3>Por Qu\u00e9 los SBOMs Importan<\/h3>\n<p>Cuando Log4Shell impact\u00f3 en diciembre de 2021, las organizaciones que pudieron determinar r\u00e1pidamente si usaban Log4j \u2014 y d\u00f3nde \u2014 pudieron responder en horas. Las organizaciones sin esta visibilidad tardaron semanas o meses. Los SBOMs proporcionan esta visibilidad de forma proactiva, antes de que ocurra un incidente.<\/p>\n<p>Los SBOMs sirven para m\u00faltiples prop\u00f3sitos:<\/p>\n<ul>\n<li><strong>Gesti\u00f3n de vulnerabilidades:<\/strong> Monitorea continuamente los componentes contra bases de datos de vulnerabilidades. Cuando se publica un nuevo CVE, identifica inmediatamente los artefactos afectados.<\/li>\n<li><strong>Cumplimiento de licencias:<\/strong> Rastrea las licencias de todos los componentes incluidos para asegurar el cumplimiento con las pol\u00edticas organizacionales y requisitos legales.<\/li>\n<li><strong>Cumplimiento regulatorio:<\/strong> La Orden Ejecutiva 14028 y varias regulaciones de la industria ahora requieren SBOMs para el software vendido al gobierno de EE.UU.<\/li>\n<li><strong>Respuesta a incidentes:<\/strong> Determina r\u00e1pidamente el radio de impacto de una vulnerabilidad reci\u00e9n descubierta en todo tu portafolio de software.<\/li>\n<\/ul>\n<h3>Formatos de SBOM<\/h3>\n<p>Dos formatos principales de SBOM dominan la industria:<\/p>\n<ul>\n<li><strong>SPDX (Software Package Data Exchange):<\/strong> Un est\u00e1ndar ISO\/IEC (ISO\/IEC 5962:2021) mantenido por la Linux Foundation. SPDX soporta m\u00faltiples formatos de serializaci\u00f3n (JSON, RDF, tag-value, YAML) y es ampliamente utilizado para el cumplimiento de licencias.<\/li>\n<li><strong>CycloneDX:<\/strong> Un proyecto de OWASP dise\u00f1ado espec\u00edficamente para casos de uso de seguridad. CycloneDX soporta inventarios de componentes, referencias de vulnerabilidades, definiciones de servicios y relaciones de composici\u00f3n. Est\u00e1 disponible en formatos JSON y XML.<\/li>\n<\/ul>\n<h3>Generaci\u00f3n de SBOMs<\/h3>\n<p>Los SBOMs deben generarse como parte del pipeline de CI\/CD, lo m\u00e1s cerca posible del paso de build. Las herramientas comunes para la generaci\u00f3n de SBOMs incluyen:<\/p>\n<ul>\n<li><strong>Syft:<\/strong> Una herramienta open-source de Anchore que genera SBOMs a partir de im\u00e1genes de contenedores, filesystems y archivos comprimidos. Soporta tanto formato SPDX como CycloneDX.<\/li>\n<li><strong>Trivy:<\/strong> El esc\u00e1ner integral de Aqua Security puede generar SBOMs adem\u00e1s del escaneo de vulnerabilidades, proporcionando una herramienta unificada para ambas funciones.<\/li>\n<li><strong>cdxgen:<\/strong> Un generador de CycloneDX que soporta una amplia gama de lenguajes y gestores de paquetes.<\/li>\n<\/ul>\n<h3>Attestation de SBOMs<\/h3>\n<p>Generar un SBOM es solo el primer paso. Para hacer los SBOMs confiables, deben ser firmados y adjuntados a los artefactos como attestations. Usando Cosign, puedes hacer attest de un SBOM a una imagen de contenedor:<\/p>\n<pre><code>cosign attest --predicate sbom.spdx.json --type spdxjson &lt;image&gt;<\/code><\/pre>\n<p>Esto crea una attestation firmada que vincula el SBOM a un digest de artefacto espec\u00edfico, asegurando que el SBOM no pueda ser separado o falsificado para el artefacto que describe. Los consumidores pueden entonces verificar tanto la firma del artefacto como la attestation del SBOM antes del despliegue.<\/p>\n<p>Para un laboratorio pr\u00e1ctico sobre generaci\u00f3n, escaneo y attestation de SBOMs, consulta nuestro <a href=\"\/es\/ci-cd-security\/\">laboratorio de SBOMs en la serie de CI\/CD Security<\/a>.<\/p>\n<h2>Frameworks y Est\u00e1ndares<\/h2>\n<p>Varios frameworks y est\u00e1ndares proporcionan enfoques estructurados para la seguridad de la supply chain. Comprender estos frameworks ayuda a las organizaciones a priorizar inversiones y demostrar cumplimiento.<\/p>\n<h3>SLSA (Supply-chain Levels for Software Artifacts)<\/h3>\n<p>SLSA define cuatro niveles de madurez creciente en seguridad de la supply chain:<\/p>\n<ul>\n<li><strong>SLSA Level 1 \u2014 El provenance existe:<\/strong> El proceso de build genera provenance describiendo c\u00f3mo se construy\u00f3 el artefacto. Este es el nivel base \u2014 simplemente tener provenance es una mejora significativa respecto a no tener ninguno.<\/li>\n<li><strong>SLSA Level 2 \u2014 Build hospedado, provenance firmado:<\/strong> El build se ejecuta en un servicio de build hospedado, y el provenance es firmado por la plataforma de build. Esto previene que los desarrolladores falsifiquen provenance en sus m\u00e1quinas locales.<\/li>\n<li><strong>SLSA Level 3 \u2014 Builds endurecidos:<\/strong> La plataforma de build proporciona fuerte aislamiento entre jobs de build, entornos ef\u00edmeros y generaci\u00f3n de provenance resistente a manipulaciones. Este es el nivel que previene la mayor\u00eda de los ataques pr\u00e1cticos a la supply chain.<\/li>\n<li><strong>SLSA Level 4 \u2014 Herm\u00e9tico, reproducible:<\/strong> El build es completamente herm\u00e9tico (sin acceso a red, sin inputs no declarados) e idealmente reproducible. Este es el est\u00e1ndar de oro, proporcionando el m\u00e1s alto nivel de aseguramiento.<\/li>\n<\/ul>\n<p>Para una checklist pr\u00e1ctica de cumplimiento y gu\u00eda de implementaci\u00f3n para cada nivel SLSA, consulta: <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/slsa-levels-explained-practical-compliance-checklist\/\">Niveles SLSA Explicados: Una Checklist Pr\u00e1ctica de Cumplimiento<\/a>.<\/p>\n<h3>NIST SSDF (Secure Software Development Framework)<\/h3>\n<p>El <strong>SSDF<\/strong> (SP 800-218) proporciona un conjunto de pr\u00e1cticas de alto nivel y agn\u00f3sticas de tecnolog\u00eda para el desarrollo seguro de software. Est\u00e1 organizado en cuatro grupos:<\/p>\n<ul>\n<li><strong>Preparar la Organizaci\u00f3n (PO):<\/strong> Establecer pol\u00edticas de seguridad, roles y capacitaci\u00f3n.<\/li>\n<li><strong>Proteger el Software (PS):<\/strong> Proteger el c\u00f3digo fuente, los entornos de build y los artefactos contra acceso no autorizado y manipulaci\u00f3n.<\/li>\n<li><strong>Producir Software Bien Asegurado (PW):<\/strong> Dise\u00f1ar, implementar y probar software con la seguridad en mente.<\/li>\n<li><strong>Responder a Vulnerabilidades (RV):<\/strong> Identificar, analizar y remediar vulnerabilidades en software publicado.<\/li>\n<\/ul>\n<p>El SSDF es particularmente relevante para organizaciones que suministran software al gobierno federal de EE.UU., ya que es referenciado por la Orden Ejecutiva 14028 y los memorandos relacionados de la OMB.<\/p>\n<h3>OWASP Software Component Verification Standard (SCVS)<\/h3>\n<p>El <strong>OWASP SCVS<\/strong> proporciona un framework enfocado espec\u00edficamente en el an\u00e1lisis de componentes de software y la gesti\u00f3n de riesgos de la supply chain. Define requisitos de verificaci\u00f3n en seis categor\u00edas: BOM, identidad del software, provenance, integridad de paquetes, an\u00e1lisis de componentes y pedigree. SCVS es \u00fatil como una checklist detallada para evaluar las pr\u00e1cticas de seguridad de la supply chain de tu organizaci\u00f3n.<\/p>\n<h3>OpenSSF Scorecard<\/h3>\n<p>El proyecto <strong>OpenSSF Scorecard<\/strong> eval\u00faa autom\u00e1ticamente proyectos open-source contra un conjunto de heur\u00edsticas de seguridad \u2014 branch protection, pinning de dependencias, releases firmados, tests de CI y m\u00e1s. Ejecutar Scorecard contra tus dependencias te ayuda a evaluar su postura de seguridad e identificar riesgos. Integrar Scorecard en tu proceso de revisi\u00f3n de dependencias agrega una capa adicional de defensa.<\/p>\n<h2>Hoja de Ruta de Implementaci\u00f3n<\/h2>\n<p>Asegurar una software supply chain es un viaje, no un proyecto \u00fanico. La siguiente hoja de ruta por fases proporciona un camino pr\u00e1ctico desde la higiene fundacional hasta posturas de seguridad avanzadas.<\/p>\n<h3>Fase 1: Fundaci\u00f3n (Semanas 1-4)<\/h3>\n<p>Enfoque en visibilidad y controles b\u00e1sicos:<\/p>\n<ul>\n<li><strong>Inventaria tu supply chain:<\/strong> Mapea todos los repositorios, sistemas de build, registros de artefactos y objetivos de despliegue. Identifica todas las dependencias de terceros en tus proyectos.<\/li>\n<li><strong>Habilita el escaneo de dependencias:<\/strong> Integra Trivy, Grype o Dependabot en todos los pipelines de CI\/CD. Configura alertas automatizadas para vulnerabilidades cr\u00edticas y de alta severidad.<\/li>\n<li><strong>Haz commit de los lockfiles:<\/strong> Asegura que todos los proyectos usen y hagan commit de lockfiles. Fija las dependencias a versiones exactas.<\/li>\n<li><strong>Aplica branch protection:<\/strong> Requiere code review y status checks para todos los merges a branches principales. Protege los archivos de configuraci\u00f3n de CI\/CD.<\/li>\n<li><strong>Genera SBOMs:<\/strong> Agrega generaci\u00f3n de SBOMs a tus pipelines de build. Almacena los SBOMs junto con los artefactos en tu registro.<\/li>\n<\/ul>\n<h3>Fase 2: Integridad (Semanas 5-12)<\/h3>\n<p>Agrega controles de integridad criptogr\u00e1fica:<\/p>\n<ul>\n<li><strong>Implementa firma de artefactos:<\/strong> Despliega Cosign con firma keyless usando la identidad OIDC de tu plataforma de CI\/CD. Firma todas las im\u00e1genes de contenedores y artefactos cr\u00edticos.<\/li>\n<li><strong>Genera build provenance:<\/strong> Habilita la generaci\u00f3n de provenance SLSA en tus pipelines de build. Los usuarios de GitHub Actions pueden usar los workflows reutilizables de <code>slsa-github-generator<\/code>.<\/li>\n<li><strong>Configura registros privados:<\/strong> Configura Artifactory o Nexus como proxy para registros p\u00fablicos. Configura los gestores de paquetes para resolver primero desde registros privados para prevenir dependency confusion.<\/li>\n<li><strong>Alcanza SLSA Level 2:<\/strong> Con builds hospedados y provenance firmado, la mayor\u00eda de los equipos pueden alcanzar SLSA Level 2 al final de esta fase.<\/li>\n<\/ul>\n<h3>Fase 3: Verificaci\u00f3n (Semanas 13-20)<\/h3>\n<p>Aplica pol\u00edticas en el momento del despliegue:<\/p>\n<ul>\n<li><strong>Despliega admission controllers:<\/strong> Usa admission controllers de Kubernetes (Kyverno, OPA Gatekeeper, Sigstore Policy Controller) para aplicar verificaci\u00f3n de firmas y provenance antes del despliegue.<\/li>\n<li><strong>Haz attest de SBOMs:<\/strong> Firma SBOMs y adj\u00fantalos a los artefactos como attestations in-toto. Verifica las attestations de SBOM como parte de las pol\u00edticas de despliegue.<\/li>\n<li><strong>Endurece los entornos de build:<\/strong> Migra a runners de build ef\u00edmeros y aislados. Minimiza los privilegios del entorno de build. Alcanza SLSA Level 3.<\/li>\n<li><strong>Automatiza el cumplimiento:<\/strong> Usa herramientas de policy-as-code para verificar continuamente el cumplimiento con SLSA, SSDF y las pol\u00edticas de seguridad organizacionales.<\/li>\n<\/ul>\n<h3>Fase 4: Avanzado (Continuo)<\/h3>\n<p>Persigue defensa en profundidad y mejora continua:<\/p>\n<ul>\n<li><strong>Builds herm\u00e9ticos:<\/strong> Investiga Bazel, Buck2 u otros sistemas de build que soporten builds completamente herm\u00e9ticos sin acceso a red.<\/li>\n<li><strong>Builds reproducibles:<\/strong> Trabaja hacia la reproducibilidad del build para artefactos cr\u00edticos. La verificaci\u00f3n independiente de builds proporciona el m\u00e1s alto nivel de aseguramiento.<\/li>\n<li><strong>Modelado de amenazas de la supply chain:<\/strong> Realiza ejercicios regulares de modelado de amenazas enfocados espec\u00edficamente en vectores de ataque de la supply chain.<\/li>\n<li><strong>Planificaci\u00f3n de respuesta a incidentes:<\/strong> Desarrolla y ensaya procedimientos de respuesta a incidentes para compromisos de la supply chain, incluyendo compromisos de dependencias, brechas en sistemas de build y manipulaci\u00f3n de artefactos.<\/li>\n<\/ul>\n<h2>Laboratorios Pr\u00e1cticos<\/h2>\n<p>La teor\u00eda es importante, pero la pr\u00e1ctica es esencial. Los siguientes laboratorios proporcionan experiencia pr\u00e1ctica con las herramientas y t\u00e9cnicas cubiertas en esta gu\u00eda:<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/?p=645\"><strong>Laboratorio: Dependency Confusion y Artifact Poisoning<\/strong><\/a> \u2014 Simula ataques de dependency confusion e implementa defensas incluyendo paquetes con scope, configuraci\u00f3n de registro y verificaci\u00f3n de integridad.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/?p=646\"><strong>Laboratorio: Integridad del Build y Builds Reproducibles<\/strong><\/a> \u2014 Configura builds de contenedores reproducibles, elimina el no-determinismo y verifica los outputs del build entre entornos.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/signing-verifying-container-images-sigstore-cosign\/\"><strong>Laboratorio: Firma y Verificaci\u00f3n de Im\u00e1genes de Contenedores con Sigstore<\/strong><\/a> \u2014 Implementa firma keyless con Cosign y Fulcio, registra firmas en Rekor y verifica firmas en el momento del despliegue.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/artifact-provenance-attestations-slsa-in-toto\/\"><strong>Laboratorio: Artifact Provenance y Attestations<\/strong><\/a> \u2014 Genera provenance SLSA con GitHub Actions, crea attestations in-toto y verifica provenance antes del despliegue.<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/slsa-levels-explained-practical-compliance-checklist\/\"><strong>Laboratorio: Checklist de Cumplimiento SLSA<\/strong><\/a> \u2014 Recorre los requisitos de SLSA en cada nivel e implem\u00e9ntalos en un pipeline real de CI\/CD.<\/li>\n<li><a href=\"\/es\/ci-cd-security\/\"><strong>Laboratorio: Generaci\u00f3n de SBOMs y Escaneo de Vulnerabilidades<\/strong><\/a> \u2014 Genera SBOMs con Syft, escanea vulnerabilidades con Grype y haz attest de SBOMs a im\u00e1genes de contenedores.<\/li>\n<\/ul>\n<h2>Herramientas y Comparaciones<\/h2>\n<p>Elegir las herramientas correctas es cr\u00edtico para una seguridad efectiva de la supply chain. Las siguientes gu\u00edas de comparaci\u00f3n te ayudan a evaluar opciones en categor\u00edas clave:<\/p>\n<table>\n<thead>\n<tr>\n<th>Categor\u00eda<\/th>\n<th>Herramientas<\/th>\n<th>Caso de Uso<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Esc\u00e1neres de Vulnerabilidades<\/strong><\/td>\n<td>Trivy, Grype, Snyk, Clair<\/td>\n<td>Escaneo de dependencias e im\u00e1genes de contenedores en busca de vulnerabilidades conocidas<\/td>\n<\/tr>\n<tr>\n<td><strong>Firma de Artefactos<\/strong><\/td>\n<td>Cosign, Notation, GPG<\/td>\n<td>Firma criptogr\u00e1fica de artefactos para asegurar integridad y autenticidad<\/td>\n<\/tr>\n<tr>\n<td><strong>Generaci\u00f3n de SBOMs<\/strong><\/td>\n<td>Syft, Trivy, cdxgen, CycloneDX CLI<\/td>\n<td>Creaci\u00f3n de inventarios de componentes de software en formato SPDX o CycloneDX<\/td>\n<\/tr>\n<tr>\n<td><strong>Provenance<\/strong><\/td>\n<td>SLSA GitHub Generator, Witness, in-toto<\/td>\n<td>Generaci\u00f3n de provenance de build verificable y attestations<\/td>\n<\/tr>\n<tr>\n<td><strong>Aplicaci\u00f3n de Pol\u00edticas<\/strong><\/td>\n<td>Kyverno, OPA Gatekeeper, Sigstore Policy Controller<\/td>\n<td>Aplicaci\u00f3n de pol\u00edticas de supply chain en el momento del despliegue mediante admission de Kubernetes<\/td>\n<\/tr>\n<tr>\n<td><strong>Gesti\u00f3n de Dependencias<\/strong><\/td>\n<td>Dependabot, Renovate, Socket.dev<\/td>\n<td>Actualizaciones automatizadas de dependencias, monitoreo y detecci\u00f3n de paquetes maliciosos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Para comparaciones detalladas de estas herramientas, incluyendo matrices de caracter\u00edsticas y orientaci\u00f3n de recomendaciones, consulta nuestra <a href=\"\/es\/ci-cd-security\/\">serie de herramientas y comparaciones de CI\/CD Security<\/a>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>La seguridad de la software supply chain ya no es opcional \u2014 es un requisito fundamental para cualquier organizaci\u00f3n que construye y despliega software. Los ataques contra SolarWinds, Log4j y XZ Utils demostraron que la seguridad perimetral tradicional es insuficiente cuando la supply chain misma es el vector de ataque.<\/p>\n<p>La buena noticia es que el ecosistema de herramientas y est\u00e1ndares ha madurado r\u00e1pidamente. Sigstore ha hecho accesible la firma de artefactos para todos los equipos. SLSA proporciona un framework de madurez claro e incremental. Los SBOMs se est\u00e1n convirtiendo en pr\u00e1ctica est\u00e1ndar. Los motores de pol\u00edticas pueden aplicar requisitos de supply chain autom\u00e1ticamente en el momento del despliegue.<\/p>\n<p>Los principios clave a recordar:<\/p>\n<ul>\n<li><strong>Verifica, no conf\u00edes:<\/strong> Verifica criptogr\u00e1ficamente cada artefacto, dependencia y output de build. Asume que cualquier componente no verificado puede estar comprometido.<\/li>\n<li><strong>Automatiza todo:<\/strong> Los controles de seguridad de la supply chain deben ser automatizados y aplicados en el pipeline. Los procesos manuales no escalan y se eluden f\u00e1cilmente.<\/li>\n<li><strong>Defensa en profundidad:<\/strong> Ning\u00fan control individual es suficiente. Superp\u00f3n defensas en cada etapa de la supply chain \u2014 c\u00f3digo fuente, dependencias, build, artefacto y despliegue.<\/li>\n<li><strong>Comienza donde est\u00e1s:<\/strong> No necesitas alcanzar SLSA Level 4 de la noche a la ma\u00f1ana. Comienza con escaneo de dependencias y lockfiles, luego agrega incrementalmente firma, provenance, SBOMs y aplicaci\u00f3n de pol\u00edticas.<\/li>\n<li><strong>Mant\u00e9n la visibilidad:<\/strong> No puedes asegurar lo que no puedes ver. Los SBOMs, el provenance y los logs de auditor\u00eda proporcionan la visibilidad necesaria para una seguridad efectiva y respuesta a incidentes.<\/li>\n<\/ul>\n<p>Comienza con la <a href=\"#implementation-roadmap\">hoja de ruta de implementaci\u00f3n<\/a> anterior, trabaja con los <a href=\"#hands-on-labs\">laboratorios pr\u00e1cticos<\/a> y fortalece progresivamente tu supply chain. El viaje desde cero hasta una seguridad integral de la supply chain es incremental \u2014 y cada paso hace tu software significativamente m\u00e1s seguro.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n: Por Qu\u00e9 Importa la Seguridad de la Supply Chain de Software En diciembre de 2020, el mundo descubri\u00f3 que SolarWinds \u2014 una plataforma de gesti\u00f3n de TI ampliamente confiable \u2014 hab\u00eda sido comprometida. Los atacantes inyectaron c\u00f3digo malicioso en el proceso de build del software Orion, distribuyendo una actualizaci\u00f3n contaminada a aproximadamente 18.000 organizaciones, &#8230; <a title=\"Seguridad de la Cadena de Suministro de Software: Gu\u00eda Completa para Equipos de Ingenier\u00eda\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/es\/software-supply-chain\/software-supply-chain-security-comprehensive-guide\/\" aria-label=\"Leer m\u00e1s sobre Seguridad de la Cadena de Suministro de Software: Gu\u00eda Completa para Equipos de Ingenier\u00eda\">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":[59],"tags":[],"post_folder":[],"class_list":["post-592","post","type-post","status-publish","format-standard","hentry","category-software-supply-chain"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/592","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=592"}],"version-history":[{"count":4,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/592\/revisions"}],"predecessor-version":[{"id":695,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/592\/revisions\/695"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/media?parent=592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/categories?post=592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/tags?post=592"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/post_folder?post=592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}