Saltar al contenido
Lectura13 minPreview

Qué es el OWASP Docker Top 10 y cómo usarlo

En Docker: fundamentos y seguridad usted aprendió a construir imágenes, levantar servicios con Compose y endurecer un contenedor. Este curso ordena esa base con una lista de referencia para cualquier revisión: el OWASP Docker Top 10. Antes de D01, vea qué es, de dónde sale y qué vocabulario usará.

Qué es OWASP y qué es esta lista

OWASP (Open Worldwide Application Security Project) es una fundación sin fines de lucro que publica guías, herramientas y listas de riesgos de uso libre. La más conocida es el OWASP Top 10 de aplicaciones web, pero existen otras para móviles, API, Kubernetes o CI/CD.

El OWASP Docker Top 10 no es una lista de vulnerabilidades concretas. Es una lista de diez áreas de control que, si se descuidan, dejan expuesto un entorno de contenedores. Cada punto se identifica con un código de D01 a D10:

CódigoNombre oficial (en inglés)Idea central
D01Secure User MappingNo correr procesos como root
D02Patch Management StrategyActualizar host, motor e imágenes
D03Network Segmentation and FirewallingSeparar redes y filtrar tráfico
D04Secure Defaults and HardeningEndurecer host y daemon, no exponer servicios
D05Maintain Security ContextsNo mezclar cargas de distinta confianza
D06Protect SecretsSacar los secretos de imágenes y variables
D07Resource ProtectionLimitar memoria, CPU y procesos
D08Container Image Integrity and OriginUsar imágenes confiables y verificadas
D09Follow Immutable ParadigmContenedores de solo lectura que se reemplazan
D10LoggingRegistrar y centralizar eventos

Breve historia y contexto

AñoHito
1979Unix agrega chroot, la primera forma de encerrar un proceso en una parte del disco
2001Nace OWASP como comunidad abierta de seguridad de aplicaciones
2002 a 2008El kernel Linux incorpora los namespaces y los cgroups, las piezas que aíslan y limitan procesos
2013Se presenta Docker, que hace fácil empaquetar y ejecutar contenedores
2015Se crea la Open Container Initiative para estandarizar imágenes y runtimes, y aparece el CIS Docker Benchmark
2019La falla CVE-2019-5736 en runc recuerda que un contenedor no es una máquina virtual

Docker no inventó el aislamiento, pero lo volvió tan cómodo que muchos equipos usan contenedores sin revisar su configuración. A finales de la década de 2010, miembros de OWASP ordenaron los errores que se repetían en revisiones reales en esta lista.

Por qué una lista de controles y no de ataques

Docker trae valores por defecto pensados para la comodidad: el proceso corre como root, el contenedor puede usar toda la memoria del host y un puerto publicado queda abierto en todas las interfaces. No son fallas de Docker; son decisiones que el equipo debe revisar.

Por eso cada riesgo se responde con preguntas: ¿con qué usuario corre?, ¿quién parchea el host?, ¿de dónde viene la imagen? Si el equipo contesta con evidencia, el control existe; si responde "creo que sí", todavía no. Hacen estas preguntas a diario analistas de seguridad en la nube, ingenieros DevSecOps, administradores de plataforma y auditores.

Dónde se usa

  • Servidores y VMs en la nube con Docker Engine y Compose.
  • Pipelines de integración continua, donde se construyen y escanean imágenes.
  • Registros de imágenes, donde se publican y firman versiones.
  • Kubernetes, que ejecuta las mismas imágenes: casi todos estos controles siguen valiendo allí.
  • Estaciones de desarrollo con Docker Desktop, donde nacen los Dockerfiles.

Conceptos clave

ConceptoQué significa
ImagenPlantilla de solo lectura, hecha de capas, con todo lo que necesita una aplicación
ContenedorUna imagen en ejecución: un proceso aislado con su propia vista del sistema
Daemon (dockerd)El servicio del host que crea y administra los contenedores; corre como root
HostLa máquina, física o virtual, cuyo kernel comparten todos sus contenedores
RegistroServidor que almacena y distribuye imágenes, como Docker Hub
DigestHuella sha256 que identifica un contenido exacto de imagen
Capacidad (capability)Fracción de los poderes de root que el kernel puede dar o quitar a un proceso

Ficha de docker

  • Nombre: docker es la palabra inglesa para "estibador", el trabajador que carga y descarga contenedores en un puerto.
  • Qué hace: es el cliente de línea de comandos que habla con el daemon dockerd a través del socket /var/run/docker.sock, en Linux, macOS o Windows. Cada orden es un subcomando.

Sintaxis

docker [OPCIONES_GLOBALES] SUBCOMANDO [OPCIONES] [ARGUMENTOS...]

Así se leen las sintaxis de este curso: lo que está entre corchetes es opcional, lo que está en MAYÚSCULAS lo reemplaza usted por un valor real y los tres puntos indican que puede repetirse.

Subcomandos que usará

SubcomandoQué haceEjemplo
runCrea y arranca un contenedordocker run --rm alpine:3.20 id
psLista contenedoresdocker ps -a
inspectMuestra la configuración completa en JSONdocker inspect api
execEjecuta un comando dentro de un contenedor en marchadocker exec api id
info / versionDatos del daemon y versionesdocker info
build / historyConstruye una imagen y muestra sus capasdocker history cafetal/api:0.6.0
network / composeRedes y servicios de varios contenedoresdocker network ls

Cómo pedir ayuda

Escriba docker --help para ver todos los subcomandos y docker SUBCOMANDO --help para las opciones de uno, por ejemplo docker inspect --help. La referencia completa está en docs.docker.com.

Errores frecuentes

docker: 'inspec' is not a docker command.

El subcomando está mal escrito. Revise la lista con docker --help.

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

Su usuario no puede usar el socket. Use sudo en su VM. Ojo: agregar un usuario al grupo docker equivale a darle root en el host, como verá en D04.