Reino: Environment
Esta sección incluye todo lo que está fuera del código fuente pero aun así es importante para la seguridad del producto que se está creando. Dado que todas las cuestiones incluidas en esta sección no están directamente relacionadas con el código fuente, las hemos separado de las demás secciones.
Dockerfile Misconfiguration: Dependency Confusion
Abstract
Recuperar dependencias de compilación utilizando una versión no específica puede dejar al sistema de compilación vulnerable a binarios malintencionados o hacer que el sistema experimente un comportamiento inesperado.
Explanation
Dockerfiles puede especificar un rango independiente de versiones para dependencias e imágenes base. Si un atacante puede agregar versiones malintencionadas de dependencias a un repositorio o engañar al sistema de compilación para que descargue dependencias de un repositorio bajo el control del atacante, si el docker está configurado sin versiones específicas de dependencias, el docker descargará y ejecutará silenciosamente la dependencia comprometida.
Este tipo de debilidad podría aprovecharse como resultado de un ataque a la cadena de suministro en el que los atacantes pueden aprovechar la configuración incorrecta de los desarrolladores, el error tipográfico y pueden agregar paquetes malintencionados a los repositorios de código abierto. Un ataque de este tipo aprovecha la confianza en los paquetes publicados para obtener acceso y extraer datos.
En Docker, la etiqueta
Ejemplo 1: La siguiente configuración indica a Docker que elija la imagen base con la última versión de
Docker no valida si el repositorio configurado para admitir el administrador de paquetes es de confianza.
Ejemplo 2: La siguiente configuración instruye al administrador de paquetes
En
Este tipo de debilidad podría aprovecharse como resultado de un ataque a la cadena de suministro en el que los atacantes pueden aprovechar la configuración incorrecta de los desarrolladores, el error tipográfico y pueden agregar paquetes malintencionados a los repositorios de código abierto. Un ataque de este tipo aprovecha la confianza en los paquetes publicados para obtener acceso y extraer datos.
En Docker, la etiqueta
latest
indica automáticamente el nivel de versión de una imagen que no usa un resumen o una etiqueta única para proporcionar una versión. Docker asigna automáticamente la etiqueta latest
como mecanismo para apuntar al archivo de archivo de manifiesto más reciente. Debido a que las etiquetas son mutables, un atacante puede reemplazar una imagen o capa usando una etiqueta latest
(o etiquetas débiles comoimagename-lst, imagename-last, myimage
).Ejemplo 1: La siguiente configuración indica a Docker que elija la imagen base con la última versión de
ubuntu
.
FROM ubuntu:Latest
...
Docker no valida si el repositorio configurado para admitir el administrador de paquetes es de confianza.
Ejemplo 2: La siguiente configuración instruye al administrador de paquetes
zypper
para que recupere la última versión del paquete dado.
...
zypper install package
...
En
Example 2
, si el repositorio está comprometido, un atacante podría simplemente cargar una versión que cumpla con los criterios dinámicos y provoque que zypper
descargue una versión malintencionada de la dependencia.References
[1] Best practices for writing Dockerfile
[2] Standards Mapping - Common Weakness Enumeration CWE ID 20
[3] Standards Mapping - Common Weakness Enumeration Top 25 2019 [3] CWE ID 020
[4] Standards Mapping - Common Weakness Enumeration Top 25 2020 [3] CWE ID 020
[5] Standards Mapping - Common Weakness Enumeration Top 25 2021 [4] CWE ID 020
[6] Standards Mapping - Common Weakness Enumeration Top 25 2022 [4] CWE ID 020
[7] Standards Mapping - Common Weakness Enumeration Top 25 2023 [6] CWE ID 020
[8] Standards Mapping - Common Weakness Enumeration Top 25 2024 [12] CWE ID 020
[9] Standards Mapping - FIPS200 CM
[10] Standards Mapping - General Data Protection Regulation (GDPR) Indirect Access to Sensitive Data
[11] Standards Mapping - OWASP Application Security Verification Standard 4.0 5.1.3 Input Validation Requirements (L1 L2 L3), 5.1.4 Input Validation Requirements (L1 L2 L3)
[12] Standards Mapping - OWASP Mobile 2014 M1 Weak Server Side Controls
[13] Standards Mapping - OWASP Mobile 2024 M2 Inadequate Supply Chain Security
[14] Standards Mapping - OWASP Top 10 2004 A10 Insecure Configuration Management
[15] Standards Mapping - OWASP Top 10 2010 A6 Security Misconfiguration
[16] Standards Mapping - OWASP Top 10 2013 A5 Security Misconfiguration
[17] Standards Mapping - OWASP Top 10 2017 A6 Security Misconfiguration
[18] Standards Mapping - OWASP Top 10 2021 A05 Security Misconfiguration
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.10
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.6
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.6
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.6
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.6
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection
[28] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection
[29] Standards Mapping - SANS Top 25 2009 Insecure Interaction - CWE ID 020
[30] Standards Mapping - Web Application Security Consortium Version 2.00 Application Misconfiguration (WASC-15)
desc.configuration.docker.dockerfile_misconfiguration_dependency_confusion