Dominio 8: Cadena de suministro de software segura

Por: Artiko
csslpisc2seguridadsdlccadena-de-suministrosbomslsaopen-source

Dominio 8: Cadena de suministro de software segura

El Dominio 8 (Secure Software Supply Chain) pesa 10% del examen y es el dominio que ISC2 reforzó de forma más notable en el refresh de septiembre de 2023. La razón es directa: hoy una aplicación típica está compuesta en un 70-90% de código que la organización no escribió — dependencias open source, librerías comerciales, contenedores base, modelos de IA, servicios de terceros. El riesgo ya no vive solo en tu código; vive en todo lo que confías e incorporas.

La mentalidad del dominio: cada componente externo es una relación de confianza que debe justificarse, verificarse y gobernarse durante todo el ciclo de vida, no solo en el momento de incorporarlo.

flowchart LR
    A[Desarrolladores/proveedores] -->|código fuente| B[Repositorio / VCS]
    B --> C[Build / CI-CD]
    D[Dependencias open source] --> C
    E[Registries: npm, PyPI, Maven] --> D
    C --> F[Artefacto firmado]
    F --> G[Registro de artefactos]
    G --> H[Despliegue]
    style D fill:#f88
    style E fill:#f88
    style C fill:#fb8
    style B fill:#fb8

Los nodos resaltados marcan los puntos de riesgo clásicos: dependencias comprometidas, registries envenenados, y el pipeline de build como blanco (SolarWinds).


8.1 Gestión de riesgos de la cadena de suministro (SCRM)

SCRM (Supply Chain Risk Management) es el proceso de identificar, evaluar y mitigar los riesgos introducidos por proveedores y componentes de terceros a lo largo de todo el ciclo de vida del software.

Fuentes de riesgo de terceros (third-party risk)

  • Riesgo de componente: la dependencia contiene una vulnerabilidad (conocida o de día cero).
  • Riesgo de proveedor: el proveedor tiene malas prácticas de seguridad, es insolvente, o es comprometido y se usa como vector (ataque a la cadena).
  • Riesgo de integridad: el componente fue manipulado entre su origen y tu build (typosquatting, artefacto envenenado).
  • Riesgo de mantenimiento / abandono: la dependencia deja de recibir soporte (EOL) o queda en manos de un único mantenedor sin sucesión (el caso xz-utils).
  • Riesgo transitivo: no solo tus dependencias directas, sino las dependencias de tus dependencias (a menudo docenas de niveles), que rara vez revisas.

El principio central

El SCRM aplica la gestión de riesgo estándar (identificar → evaluar → tratar → monitorear) al universo de terceros, y su punto conceptual es que la confianza debe ser explícita y verificable, no implícita. “Lo bajé de npm y funciona” no es una evaluación de riesgo.

💡 Tip de examen: El SCRM no es un evento de compra; es un proceso continuo que abarca selección, incorporación, operación y retiro del componente. Si una pregunta trata la evaluación de un proveedor como algo que se hace “una vez al firmar el contrato”, es distractor: el riesgo del tercero debe monitorearse durante toda la relación.


8.2 Analizar el perfil de seguridad de software de terceros

Antes de confiar en un componente o proveedor, se evalúa su postura de seguridad. ISC2 espera que sepas qué instrumentos existen y qué evidencia aporta cada uno.

Instrumentos de evaluación

InstrumentoQué esQué evidencia aporta
Cuestionario SIGStandardized Information Gathering (Shared Assessments)Autoevaluación estructurada del proveedor sobre sus controles
CAIQConsensus Assessments Initiative Questionnaire (Cloud Security Alliance)Autoevaluación específica para proveedores cloud
SOC 2 Type IIReporte de auditoría independiente (AICPA)Evidencia de terceros de controles operando en el tiempo. Más fuerte que una autoevaluación
ISO/IEC 27001Certificación de sistema de gestión de seguridad (ISMS)Certificación acreditada de que existe un programa de seguridad gestionado
Pruebas independientesPentest / auditoría de código por un terceroEvidencia técnica directa del estado de seguridad del producto

Jerarquía de confianza de la evidencia

No toda evidencia vale igual. De menor a mayor confianza:

  1. Autoevaluación (SIG/CAIQ rellenado por el propio proveedor) — útil pero es “confía en mi palabra”.
  2. Certificación acreditada (ISO 27001) — un tercero verificó que existe un sistema de gestión.
  3. Atestación de auditoría (SOC 2 Type II) — un auditor independiente verificó controles operando durante un periodo.
  4. Prueba técnica independiente (pentest reciente sobre el producto real) — evidencia directa.

💡 Tip de examen: Prefiere evidencia independiente sobre autoevaluación. Entre un cuestionario SIG que el proveedor rellenó y un SOC 2 Type II de un auditor externo, el SOC 2 es más fuerte porque es atestación independiente de controles operando en el tiempo (Type II) frente a un punto único (Type I) o una autodeclaración. ISC2 valora la verificación por un tercero acreditado.


8.3 Verificar pedigree y provenance

Dos términos que el examen distingue con precisión y que suelen confundirse:

TérminoDefiniciónPregunta que responde
PedigreeEl origen y la cadena de custodia/linaje de un componente: de dónde vino, qué componía originalmente, su historia”¿De dónde proviene y por qué manos pasó este componente?”
ProvenanceEl registro verificable de cómo se produjo un artefacto: qué fuente, qué build, qué proceso lo generó”¿Este artefacto fue construido a partir de esta fuente exacta por este proceso confiable?”

En términos simples: pedigree es la genealogía/procedencia del componente; provenance es la prueba criptográfica de cómo y desde qué fuente se construyó el artefacto que tienes en la mano.

Mecanismos para garantizar integridad y provenance

  • Firmas digitales de artefactos: garantizan integridad y autenticidad (el artefacto no cambió y viene de quien dice).
  • Attestations: declaraciones firmadas y verificables sobre cómo se produjo un artefacto (qué build, qué materiales, qué controles).
  • SLSA (Supply-chain Levels for Software Artifacts, “salsa”): framework de OpenSSF con niveles graduales de garantía de integridad de la build. Cada nivel exige más rigor:
Nivel SLSAGarantía principal
Nivel 1Provenance existe y está documentada (proceso de build genera metadatos)
Nivel 2Build en servicio hospedado con provenance firmada por el servicio
Nivel 3Build endurecida y resistente a manipulación (aislamiento, provenance no falsificable)
  • in-toto: framework que asegura la integridad de toda la cadena de pasos de la build; cada paso (checkout, test, compile, package) genera metadatos firmados que se verifican en conjunto, de modo que nadie insertó un paso no autorizado.
  • Sigstore: infraestructura open source para firmar artefactos sin gestionar llaves de larga vida (firma con identidad OIDC efímera, registro público transparente en Rekor, firma con Cosign para contenedores).

💡 Tip de examen: Memoriza el par: pedigree = de dónde vino (linaje/origen); provenance = cómo y desde qué fuente se construyó (evidencia verificable de la build). SLSA es el framework de niveles que formaliza garantías de provenance; in-toto protege la cadena completa de pasos; Sigstore/Cosign firma sin gestionar llaves. Si preguntan “¿cómo pruebo que este binario fue construido desde este código fuente por un proceso confiable?”, la respuesta es provenance/attestations (SLSA).


8.4 Asegurar y verificar requisitos de seguridad de proveedores

Los requisitos de seguridad no nacen en el D8: fluyen desde el Dominio 3 (requisitos). Lo que el D8 hace es imponerlos y verificarlos en la relación con el proveedor.

  • Flujo desde el D3: los requisitos de seguridad de la organización (clasificación de datos, cumplimiento, controles) se traducen en requisitos contractuales exigibles al proveedor. El proveedor debe cumplir el mismo estándar que se exigiría internamente para datos equivalentes.
  • Derecho a auditar (right to audit): cláusula que reserva a la organización la facultad de auditar (o exigir evidencia de auditoría) los controles del proveedor. Sin este derecho, la verificación depende de la buena voluntad del proveedor.
  • Gestión durante el contrato: la verificación es continua, no un chequeo único. Se revisan periódicamente reportes SOC 2 renovados, resultados de escaneos, notificaciones de incidentes y cambios de subprocesadores.
  • Cuarta parte (fourth-party risk): los proveedores de tus proveedores. La cadena de confianza se extiende más allá del contrato directo.

💡 Tip de examen: Los requisitos de seguridad del proveedor derivan de los requisitos del negocio (D3) y se hacen exigibles vía contrato. El derecho a auditar es la palanca que convierte una exigencia escrita en algo verificable. Si una pregunta plantea que “el proveedor dice cumplir pero no hay forma de comprobarlo”, la falla de origen es que faltó el right to audit o la exigencia de evidencia independiente en el contrato.


8.5 Apoyar requisitos contractuales

El contrato es el instrumento donde el riesgo de la cadena de suministro se transfiere, distribuye y hace exigible. ISC2 espera que conozcas las cláusulas de seguridad típicas.

Cláusula contractualQué establece
Requisitos de seguridadControles mínimos que el proveedor debe implementar y mantener
SLAs de seguridadCompromisos medibles (tiempo de parcheo, tiempo de notificación de brecha)
Responsabilidad por vulnerabilidadesQuién responde y remedia cuando aparece una vuln en el componente del proveedor
Notificación de brechasObligación de notificar incidentes en un plazo definido (a menudo regulatorio)
Software escrowDepósito del código fuente con un tercero neutral, liberado si el proveedor quiebra, es adquirido o incumple. Protege continuidad
EOL / EOSEnd-of-Life / End-of-Support: cuándo el proveedor dejará de dar soporte/parches, para planificar migración
Derecho a auditar(Ver 8.4) facultad de verificar el cumplimiento

Software escrow y EOL/EOS

  • Software escrow mitiga el riesgo de dependencia de un proveedor: si desaparece, la organización obtiene el código fuente depositado y puede mantener el sistema. Es una salvaguarda de continuidad, no de confidencialidad.
  • EOL/EOS es crítico para la gestión de riesgo porque un componente sin soporte ya no recibe parches de seguridad, convirtiéndose en deuda de riesgo creciente. Debe planificarse la migración antes de la fecha de fin de soporte.

💡 Tip de examen: Software escrow protege la continuidad del negocio ante la desaparición del proveedor (te da acceso al código fuente), no la confidencialidad ni la calidad. Y EOL/EOS debe planificarse con antelación: usar un componente después de su End-of-Support significa correr sin parches de seguridad, un riesgo que ISC2 considera inaceptable sin una mitigación compensatoria.


SBOM: Software Bill of Materials en profundidad

El SBOM es un inventario formal y legible por máquina de todos los componentes de una pieza de software, incluidas dependencias transitivas, versiones y licencias. Es la analogía de la “lista de ingredientes” de un alimento: no puedes gestionar el riesgo de lo que no sabes que tienes.

El impulso regulatorio vino de la Executive Order 14028 (EE.UU., 2021), que exige SBOM a los proveedores del gobierno federal tras SolarWinds.

Formatos estándar

FormatoOrigenEnfoque
SPDXLinux Foundation (ISO/IEC 5962)Estándar amplio, fuerte en licencias y cumplimiento; formato ISO
CycloneDXOWASPOrientado a seguridad; soporta VEX, SaaSBOM, y extensiones ML/AI BOM

Casos de uso del SBOM

  • Respuesta rápida a nuevas vulnerabilidades: cuando aparece un Log4Shell, con SBOM puedes responder en minutos “¿estoy afectado y dónde?” en vez de auditar manualmente durante días.
  • Cumplimiento de licencias: identificar licencias incompatibles o restrictivas.
  • Debida diligencia en adquisiciones y contratos.
  • Detección de componentes EOL o sin mantenimiento.

VEX (Vulnerability Exploitability eXchange)

El SBOM te dice qué componentes tienes; VEX complementa diciendo si una vulnerabilidad conocida en un componente es realmente explotable en tu contexto. Un componente puede contener un CVE pero la función vulnerable nunca se invoca — VEX comunica ese estado (“not affected”, “affected”, “fixed”, “under investigation”), reduciendo el ruido y evitando remediaciones innecesarias.

💡 Tip de examen: El SBOM responde “¿qué tengo?”; el VEX responde “¿me afecta realmente?”. Son complementarios. El caso de uso estrella del SBOM en el examen es la respuesta rápida ante una nueva vulnerabilidad divulgada (tipo Log4Shell): sin inventario no puedes saber tu exposición. SPDX = fuerte en licencias (ISO); CycloneDX = fuerte en seguridad (OWASP, soporta VEX y ML-BOM).


Ataques históricos como lecciones

ISC2 usa incidentes reales para anclar los conceptos. No memorices trivia; entiende qué punto de la cadena falló en cada uno.

AtaqueQué pasóLección de cadena de suministro
SolarWinds (2020)Atacantes comprometieron el pipeline de build de Orion e inyectaron backdoor en actualizaciones firmadas y legítimasEl build system es un blanco; la firma no ayuda si el proceso de build está comprometido. Motivó SLSA y provenance de build
Log4Shell (2021)Vulnerabilidad crítica (RCE) en Log4j, una dependencia ubicua y transitivaNecesidad de SBOM para conocer la exposición; el riesgo de dependencias transitivas invisibles
xz-utils (2024)Un mantenedor malicioso ganó confianza durante años e insertó un backdoor en una librería de compresión de LinuxRiesgo del mantenedor único y de la ingeniería social contra proyectos open source; salud del proyecto importa
Typosquatting / dependency confusionPaquetes maliciosos con nombres parecidos a los legítimos, o paquetes internos suplantados por versiones públicas de mayor versión en registriesRiesgo del registry; necesidad de verificar nombres, fijar fuentes y usar scopes privados

Puntos que estos ataques enseñan

  • SolarWinds: la firma digital garantiza que el artefacto no cambió después del build, pero no protege si el compromiso ocurre dentro del build. De ahí la importancia de provenance verificable (SLSA nivel 3), builds aisladas e in-toto.
  • Log4Shell: no fue un ataque a la cadena en sentido estricto (fue una vuln), pero enseñó que no puedes responder a lo que no sabes que usas → SBOM.
  • xz-utils: la confianza en open source no puede ser ciega; hay que evaluar la salud del proyecto (número de mantenedores, actividad, respuesta a vulnerabilidades).
  • Dependency confusion: configurar correctamente los registries privados y verificar la procedencia de los paquetes.

💡 Tip de examen: El mensaje de SolarWinds para el examen es que firmar el artefacto no basta si el pipeline de build está comprometido — por eso importan la integridad del build y la provenance (SLSA/in-toto). El de Log4Shell es que sin SBOM no conoces tu exposición. No los confundas: SolarWinds = compromiso del build; Log4Shell = dependencia vulnerable; xz-utils = mantenedor malicioso/ingeniería social.


Frameworks regulatorios y de referencia

NIST SSDF (SP 800-218)

El Secure Software Development Framework es un conjunto de prácticas de desarrollo seguro agrupadas en cuatro categorías, que se ha vuelto la referencia para el cumplimiento derivado de la EO 14028:

  • PO — Prepare the Organization: gente, procesos y tecnología listos para desarrollar seguro.
  • PS — Protect the Software: proteger el software y sus artefactos de manipulación (integridad, provenance).
  • PW — Produce Well-Secured Software: producir software con mínimas vulnerabilidades.
  • RV — Respond to Vulnerabilities: identificar y remediar vulnerabilidades de forma continua.

El SSDF es agnóstico de metodología (funciona con cualquier SDLC) y es la base contra la que los proveedores del gobierno de EE.UU. atestan cumplimiento.

EO 14028

La Executive Order 14028 (“Improving the Nation’s Cybersecurity”, 2021), respuesta directa a SolarWinds, impuso requisitos como SBOM obligatorio, prácticas de desarrollo seguro (via SSDF) y atestaciones a los proveedores del gobierno federal. Es el motor regulatorio detrás del auge de SBOM y provenance.


Salud de proyectos open source: OpenSSF Scorecard

Para evaluar el riesgo de una dependencia open source, no basta con “es popular”. El OpenSSF Scorecard automatiza una evaluación de la salud y prácticas de seguridad de un proyecto, puntuando señales como:

  • ¿Tiene revisión de código obligatoria (branch protection)?
  • ¿Usa dependencias fijadas (pinned) y firma sus releases?
  • ¿Corre análisis estático (SAST) y escaneo de dependencias en CI?
  • ¿Responde a vulnerabilidades y tiene política de seguridad?
  • ¿Hay actividad reciente y varios mantenedores (no un solo punto de fallo como xz-utils)?

Estas señales permiten decidir con datos si adoptar, monitorear o evitar una dependencia.

💡 Tip de examen: Al evaluar una dependencia open source, ISC2 quiere evaluación de salud del proyecto basada en señales objetivas (mantenimiento activo, múltiples mantenedores, respuesta a vulnerabilidades, prácticas de build seguras) — no la popularidad ni el número de estrellas. OpenSSF Scorecard es la herramienta que automatiza esa evaluación. El caso xz-utils es el ejemplo canónico de por qué el mantenedor único es una señal de riesgo.


Gestión práctica de dependencias

Más allá de la teoría de riesgo, el examen espera que reconozcas los controles operativos concretos para gestionar dependencias con seguridad.

ControlQué haceRiesgo que mitiga
Lockfiles (package-lock, poetry.lock)Fijan versiones y hashes exactos de todas las dependencias, incluidas transitivasInstalaciones no reproducibles; sustitución silenciosa de versiones
Pinning por hashDepender de un hash de contenido, no solo de un número de versiónQue un atacante republique una versión con el mismo número pero contenido distinto
Registries privados / proxyEspejo interno controlado (Artifactory, Nexus) entre el registry público y el buildDependency confusion, indisponibilidad del registry público, paquetes no aprobados
Allowlists de dependenciasSolo se permiten componentes previamente aprobadosIntroducción de librerías no evaluadas
SCA en CI/CDSoftware Composition Analysis: escanea dependencias contra bases de vulns y licenciasUso de componentes con CVE conocidos o licencias incompatibles
Actualización controladaRenovate/Dependabot con revisión, no auto-merge ciegoQuedarse en versiones EOL; pero también actualizar a versiones comprometidas

La tensión de las actualizaciones

Actualizar es un arma de doble filo que el examen adora plantear: no actualizar deja vulnerabilidades sin parchear (deuda de riesgo), pero actualizar ciegamente puede introducir una versión comprometida (como en varios ataques a npm) o romper compatibilidad. La respuesta correcta casi siempre es un proceso controlado: actualizaciones evaluadas, probadas y aprobadas — ni parálisis ni auto-merge sin revisión.

💡 Tip de examen: Los lockfiles con hashes garantizan builds reproducibles y detectan sustitución de contenido; un registry proxy privado es la defensa canónica contra dependency confusion. Ante “¿cómo aseguras que el componente que descargas es exactamente el que evaluaste?”, la respuesta combina pinning por hash + registry controlado, no confiar en el número de versión.


SCA vs. otras técnicas de análisis

El Software Composition Analysis (SCA) es la herramienta central del D8 en la práctica, y conviene ubicarlo frente a las técnicas del D5/D6 para no confundirlas en el examen.

TécnicaQué analizaDominio principal
SCADependencias de terceros (componentes, versiones, licencias, CVEs)D8 / D5
SASTTu código fuente en busca de vulnerabilidadesD5 / D6
DASTLa aplicación en ejecución desde fueraD6
Secret scanningSecretos filtrados en el códigoD5

El SCA es lo que consume y produce SBOMs: identifica qué componentes tienes (genera el inventario) y los correlaciona con bases de vulnerabilidades (CVE/NVD) y licencias. Es la implementación práctica del “conoce tu cadena de suministro”.


Escenario integrado: respuesta a una nueva vulnerabilidad crítica

Cuando se divulga una vulnerabilidad crítica en una dependencia ubicua (el patrón Log4Shell), el valor de haber preparado la cadena de suministro se vuelve tangible:

sequenceDiagram
    participant CVE as Divulgación de CVE crítico
    participant SBOM as Inventario SBOM
    participant VEX
    participant Team as Equipo de seguridad
    participant Ops as Operaciones
    CVE->>SBOM: ¿Uso este componente y dónde?
    SBOM->>Team: Lista de sistemas afectados en minutos
    Team->>VEX: ¿La función vulnerable se invoca realmente?
    VEX->>Team: 3 sistemas "affected", 5 "not affected"
    Team->>Ops: Prioriza remediación de los 3 realmente explotables
    Ops->>Ops: Actualiza componente / virtual patching temporal
    Ops->>SBOM: Actualiza inventario con la nueva versión

Sin SBOM, el paso “¿dónde lo uso?” toma días de auditoría manual. Sin VEX, se remedian sistemas que no estaban realmente expuestos, malgastando esfuerzo. Juntos convierten una emergencia caótica en una respuesta priorizada por riesgo.

💡 Tip de examen: El escenario “acaba de salir un CVE crítico en una librería muy usada, ¿qué te permite responder rápido?” tiene como respuesta el SBOM (saber dónde lo usas) complementado con VEX (saber si realmente te afecta). Es el argumento de valor número uno del SBOM en el examen.


Puntos clave

  • El Dominio 8 (10%) es el más reforzado del refresh 2023: la mayor parte del software moderno es código de terceros, y el riesgo vive en todo lo que confías e incorporas.
  • SCRM es gestión de riesgo continua sobre proveedores y componentes, incluyendo dependencias transitivas y el riesgo de cuarta parte. La confianza debe ser explícita y verificable.
  • Al evaluar terceros, prefiere evidencia independiente (SOC 2 Type II, pentest) sobre autoevaluaciones (SIG, CAIQ); ISO 27001 certifica que existe un programa de gestión.
  • Pedigree = origen/linaje del componente; provenance = prueba verificable de cómo y desde qué fuente se construyó. SLSA formaliza niveles de garantía de build; in-toto protege la cadena de pasos; Sigstore/Cosign firma sin llaves de larga vida.
  • Los requisitos de seguridad del proveedor fluyen del D3 y se hacen exigibles por contrato; el derecho a auditar los vuelve verificables. Software escrow protege continuidad; EOL/EOS obliga a planear migración antes de perder soporte.
  • El SBOM (SPDX = licencias/ISO; CycloneDX = seguridad/OWASP) responde “¿qué tengo?” y su caso estrella es la respuesta rápida a nuevas vulnerabilidades (Log4Shell). VEX añade “¿me afecta realmente?”.
  • Lecciones de ataques: SolarWinds = el build system es un blanco y firmar no basta; Log4Shell = sin SBOM no conoces tu exposición; xz-utils = riesgo del mantenedor único y la ingeniería social; dependency confusion = riesgo del registry.
  • NIST SSDF (PO/PS/PW/RV) y la EO 14028 son el contexto regulatorio que impulsó SBOM, provenance y atestaciones de desarrollo seguro.
  • Para dependencias open source, evalúa la salud del proyecto con señales objetivas (OpenSSF Scorecard), no la popularidad.