Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
dockerscan — El escáner de seguridad Docker más completo. | Kitploit
Herramientas/GitHubGitHub/cr0hn/dockerscan
Escáneres de VulnerabilidadesSeguridad de ContenedoresAuditoría de ConfiguraciónSeguridad en la NubeDevSecOpsDetección de SecretosSeguridad de Cadena de Suministro
GitHubcr0hn/dockerscan

dockerscan

El escáner de seguridad Docker más completo.

Ver Repositorio
1.7k247hace 11h 20mRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Logotipo de DockerScan

DockerScan v2.0

El escáner de seguridad Docker más completo

Licencia Versión de Go Versión CI/CD Cobertura de pruebas Informe Go Descargas

Por Daniel Garcia (cr0hn) | GitHub | Sitio web


Características • Instalación • Inicio rápido • Documentación • Casos de uso • Novedades • Contribuir


📑 Tabla de Contenidos

  • Resumen
  • Características
  • Novedades en v2.0
  • Instalación
  • Inicio rápido
  • Uso
    • Autenticación en registros privados
  • Escáneres de seguridad
  • Formatos de salida
  • Casos de uso
  • Comparativa
  • Arquitectura
  • Contribuir
  • Referencias
  • Licencia
  • Autor

🎯 Resumen

DockerScan v2.0 es un escáner de seguridad de última generación para contenedores e imágenes Docker, completamente reescrito en Go. Combina múltiples técnicas de escaneo de seguridad basadas en las investigaciones más recientes (2024-2025), estándares de la industria (CIS Benchmark, NIST SP 800-190) y patrones de ataques reales descubiertos en entornos de producción.

¿Por qué DockerScan v2.0?

  • ✅ Más completo: Combina 5+ técnicas de escaneo de seguridad en una sola herramienta
  • ✅ Últimas investigaciones: Basado en ataques a la cadena de suministro y CVEs de 2024-2025
  • ✅ Listo para producción: Salida SARIF para CI/CD, códigos de salida para automatización
  • ✅ Rápido como un rayo: Escrito en Go con escaneo concurrente
  • ✅ Extensible: Arquitectura de plugins para escáneres personalizados
  • ✅ Gratuito y de código abierto: Licencia BSD-3

🌟 Características

🛡️ Módulos de escaneo de seguridad

1. CIS Docker Benchmark v1.7.0

Verificación completa de cumplimiento con más de 80 controles automatizados:

  • ✅ Seguridad de configuración del host (13 comprobaciones)
  • ✅ Endurecimiento del demonio Docker (18 comprobaciones)
  • ✅ Permisos de archivos y directorios (9 comprobaciones)
  • ✅ Mejores prácticas de imágenes de contenedores (13 comprobaciones)
  • ✅ Validación de seguridad en tiempo de ejecución (31+ comprobaciones)
  • ✅ Cumplimiento de operaciones de seguridad

2. Detección de ataques a la cadena de suministro 🆕

Basado en campañas de ataque reales de 2024:

  • ✅ Detección de contenedores sin imagen - Identifica contenedores maliciosos sin capas reales (más de 4 millones encontrados en Docker Hub)
  • ✅ Detección de mineros de criptomonedas - Detecta malware de minería (más de 120K extracciones de imágenes maliciosas detectadas)
  • ✅ Detección de bibliotecas con puerta trasera - Captura dependencias comprometidas (incidentes xz-utils, liblzma)
  • ✅ Verificación de firmas de imágenes - Valida firmas usando Notary/Cosign
  • ✅ Detección de contenido de phishing - Escanea documentación en busca de ingeniería social
  • ✅ Destinos de red maliciosos - Identifica servidores C2, pools de minería, nodos Tor

3. Detección avanzada de secretos 🔑

Más de 40 patrones de secretos, incluyendo API modernas (actualización 2024):

  • ✅ Proveedores cloud: Credenciales de AWS, GCP, Azure
  • ✅ Control de versiones: Tokens de GitHub, GitLab, Bitbucket
  • ✅ APIs de IA/ML: Claves de OpenAI, Anthropic, Hugging Face
  • ✅ Pagos: Claves de Stripe, PayPal, Square
  • ✅ Comunicación: Slacks, SendGrid, Twilio, Mailchimp
  • ✅ Autenticación: Tokens JWT, tokens OAuth
  • ✅ Criptografía: Claves privadas (RSA, SSH, PGP, EC, DSA), certificados
  • ✅ Bases de datos: Cadenas de conexión de PostgreSQL, MySQL, MongoDB
  • ✅ Docker: Tokens de autenticación de registro
  • ✅ Análisis de entropía: Cálculo de entropía Shannon para secretos desconocidos (umbral >4.5)

4. Escaneo de CVE y vulnerabilidades 🚨

Detección de CVEs críticos de 2024-2025:

  • ✅ CVE-2024-21626 - Escape de contenedor runc (CVSS 8.6)
  • ✅ CVE-2024-23651 - Envenenamiento de caché BuildKit RCE (CVSS 9.1)
  • ✅ CVE-2024-23652 - Condición de carrera en BuildKit (CVSS 7.5)
  • ✅ CVE-2024-23653 - Escalada de privilegios en BuildKit
  • ✅ CVE-2024-8695/8696 - RCE en Docker Desktop (CVSS 8.8)
  • ✅ CVE-2025-9074 - Vulnerabilidad de acceso local en Docker Desktop
  • ✅ Detección de imágenes base al final de su vida útil
  • ✅ Escaneo de paquetes vulnerables conocidos

5. Análisis de seguridad en tiempo de ejecución ⚙️

Comprobaciones de endurecimiento de contenedores en ejecución:

  • ✅ Auditoría de capacidades de Linux - Detecta capacidades peligrosas (CAP_SYS_ADMIN, CAP_NET_ADMIN, etc.)
  • ✅ Validación de perfiles Seccomp - Asegura que el filtrado de llamadas al sistema esté habilitado
  • ✅ Comprobaciones AppArmor/SELinux - Verificación de control de acceso obligatorio
  • ✅ Detección de contenedores privilegiados - Identifica contenedores con acceso completo al host
  • ✅ Aislamiento de espacios de nombres - Comprobaciones de espacio de nombres PID, IPC, red, usuario
  • ✅ Indicadores de escape de contenedores - Detecta técnicas comunes de escape

📊 Informes e integración

  • JSON - Salida legible por máquina para automatización
  • SARIF - Integración nativa con:
    • Pestaña de seguridad de GitHub
    • Azure DevOps
    • Extensiones de VS Code
    • Paneles de seguridad de GitLab
  • CLI atractivo - Niveles de gravedad codificados por colores con emojis
  • Códigos de salida - Amigable con CI/CD (0=limpio, 1=advertencias, 2=crítico)

🚀 Rendimiento

  • ⚡ 10x más rápido que alternativas en Python
  • 🔄 Escaneo concurrente con goroutines de Go
  • 💾 Bajo consumo de memoria (~50-100MB)
  • 📦 Binario único - Sin dependencias

🆕 Novedades en v2.0

DockerScan v2.0 es una reescritura completa desde cero. Esto es lo que cambió respecto a v1.x:

Cambios principales

Lo que se conserva de v1.x

  • ✅ Herramientas ofensivas - Capacidades de troyanización de imágenes (próximamente en v2.1)
  • ✅ Operaciones de registro - Operaciones de push, pull, delete (próximamente en v2.1)
  • ✅ Escaneo de red - Descubrimiento de registros Docker (próximamente en v2.1)

Nuevo en v2.0.5 🔐

  • 🔑 Autenticación en registros privados - Soporte completo para escanear imágenes de registros privados (soluciona #24)
  • 🌐 Soporte multi-registro - Docker Hub, GHCR, ECR, GCR, ACR, GitLab y registros autogestionados
  • 🔐 Múltiples métodos de autenticación - Variables de entorno (CI/CD), flags de CLI (pruebas), archivo de configuración Docker (sin interrupciones)
  • 🎯 Prioridad de autenticación inteligente - Flags de CLI > Variables de entorno > Configuración Docker (selección automática)
  • 📝 Mensajes de error mejorados - Sugerencias específicas por registro (vencimiento de token ECR, límites de tasa, certificados)
  • 🧪 Pruebas exhaustivas - 64 casos de prueba, 91.2% de cobertura, probado con registro privado real
  • 📚 Documentación completa - Ejemplos para todos los registros cloud principales y métodos de autenticación

Nuevo en v2.0.4

  • 🗄️ Integración de base de datos CVE - Base de datos SQLite local con datos NVD (2.5 años de CVEs)
  • 🔄 Actualización automática diaria - Acción de GitHub actualiza la base de datos CVE cada día
  • ⚡ Descarga paralela de CVEs - 4 trabajadores para compilaciones de base de datos más rápidas (nvd2sqlite)
  • 🔁 Reintento con retroceso - Reintento automático para solicitudes limitadas por tasa de la API NVD
  • 📦 Flag --from-file - Instalar base de datos CVE desde archivo local (sin conexión / aire aislado)
  • 🔇 Modo silencioso (-q) - Suprimir banner para pipelines CI/CD
  • 🧹 Menos falsos positivos - Detección de secretos mejorada con filtrado de entropía

¿Por qué la reescritura?

  1. Rendimiento - Go proporciona escaneo 10x más rápido con goroutines
  2. Amenazas modernas - Incorpora patrones de ataque de 2024-2025
  3. Listo para empresas - Salida SARIF, códigos de salida, distribución binaria única
  4. Extensibilidad - Arquitectura de plugins limpia para escáneres personalizados
  5. Mantenibilidad - Seguridad de tipos, mejor manejo de errores, más fácil de contribuir

📦 Instalación

Opción 1: Descargar binario precompilado (Recomendado)

Los binarios precompilados se construyen y publican automáticamente mediante GitHub Actions para cada etiqueta de versión.

Plataformas compatibles:

  • Linux: amd64, arm64, 386
  • macOS: amd64 (Intel), arm64 (Apple Silicon)
  • Windows: amd64, arm64, 386
  • FreeBSD: amd64

Linux (amd64)```bash

curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-linux-amd64 -o dockerscan chmod +x dockerscan sudo mv dockerscan /usr/local/bin/

root@kitploit:~
#### Linux (arm64)```bash
curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-linux-arm64 -o dockerscan
chmod +x dockerscan
sudo mv dockerscan /usr/local/bin/

macOS (Intel)```bash

curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-darwin-amd64 -o dockerscan chmod +x dockerscan sudo mv dockerscan /usr/local/bin/

root@kitploit:~
#### macOS (Apple Silicon)```bash
curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-darwin-arm64 -o dockerscan
chmod +x dockerscan
sudo mv dockerscan /usr/local/bin/

Windows (PowerShell)```powershell

Invoke-WebRequest -Uri "https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-windows-amd64.exe" -OutFile "dockerscan.exe"

root@kitploit:~
#### Verificar descarga (Opcional pero recomendado)```bash
# Download checksums
curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/checksums.txt -o checksums.txt

# Verify (Linux/macOS)
sha256sum -c checksums.txt --ignore-missing

Opción 2: Compilar desde el código fuente```bash

Clone repository

git clone https://github.com/cr0hn/dockerscan cd dockerscan/dockerscan-v2

Build

make build

Install

sudo make install

Or build manually

go build -o bin/dockerscan ./cmd/dockerscan

root@kitploit:~
### Opción 3: Go Install```bash
go install github.com/cr0hn/dockerscan/v2/cmd/dockerscan@latest

🚀 Inicio rápido

Configuración inicial

Antes de escanear, descarga la base de datos de CVE (actualizada a diario, ~30 MB comprimidos):```bash

Download latest CVE database from GitHub

dockerscan update-db

root@kitploit:~
> **Consejo**: La base de datos se actualiza diariamente mediante GitHub Actions. Ejecuta `update-db` periódicamente para obtener los últimos datos de CVE.

### Escaneo básico```bash
# Scan a Docker image
dockerscan nginx:latest

# Scan with specific scanners
dockerscan --scanners cis,secrets ubuntu:22.04

# Scan and save reports
dockerscan alpine:latest --output /tmp/reports

# Quiet mode (suppress banner)
dockerscan -q nginx:latest

Salida de ejemplo```

╔══════════════════════════════════════════════════════════════════════════╗ ║ ██████╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗ ███████╗ ██████╗ █████╗ ███╗ ██╗ ║ ██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗██╔════╝██╔════╝██╔══██╗████╗ ██║ ║ ██║ ██║██║ ██║██║ █████╔╝ █████╗ ██████╔╝███████╗██║ ███████║██╔██╗ ██║ ║ ██║ ██║██║ ██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗╚════██║██║ ██╔══██║██║╚██╗██║ ║ ██████╔╝╚██████╔╝╚██████╗██║ ██╗███████╗██║ ██║███████║╚██████╗██║ ██║██║ ╚████║ ║ ║ ║ Advanced Docker Security Scanner v2.0.0 ║ ║ ║ ║ Author: Daniel Garcia (cr0hn) ║ ║ Website: https://cr0hn.com ║ ╚══════════════════════════════════════════════════════════════════════════════════════╝

🔍 Scanning image: nginx:latest

═══════════════════════════════════════════════════════════════════ SCAN RESULTS ═══════════════════════════════════════════════════════════════════

📊 Summary: Total Findings: 47 Duration: 2.3s

🔴 By Severity: Critical: 8 High: 15 Medium: 18 Low: 6

📁 By Category: CIS-Benchmark: 12 Secrets: 8 Supply-Chain: 5 Vulnerability: 10 Runtime-Security: 12

📄 JSON report saved to: dockerscan-report.json 📄 SARIF report saved to: dockerscan-report.sarif

root@kitploit:~
---

## 📖 Uso

### Opciones de la línea de comandos```bash
dockerscan [COMMAND] [OPTIONS] <IMAGE>

Commands:
  scan        Scan a Docker image (default)
  update-db   Download or update the CVE database
              Options: --from-file <path>  Install from local SQLite file
  version     Show version information
  help        Show help message

Options:
  -h, --help              Show help message
  -v, --version           Show version
  -q, --quiet             Suppress banner output (quiet mode)
  --scanners SCANNERS     Comma-separated list of scanners to run
                          (default: all)
                          Options: cis,secrets,supplychain,vulnerabilities,runtime
  --output DIR            Output directory for reports (default: .)
  --only-critical         Show only critical/high severity findings
  --verbose, -v           Show scan progress (scanner names, findings count, image pull status). Output to stderr.
  --debug                 Show verbose output plus internal errors and technical details. Output to stderr.

Authentication (for private registries):
  --registry-user <username>       Registry username
  --registry-password <password>   Registry password (not recommended, use env vars)
  --registry <url>                 Registry URL (optional, auto-detected from image)
  --docker-config <path>           Path to Docker config file (default: ~/.docker/config.json)

  Environment variables (recommended for CI/CD):
    DOCKER_USERNAME or REGISTRY_USERNAME     Registry username
    DOCKER_PASSWORD or REGISTRY_PASSWORD     Registry password or token
    DOCKER_REGISTRY or REGISTRY             Registry URL (optional)

Exit Codes:
  0   No issues found
  1   HIGH severity issues found
  2   CRITICAL severity found

Ejemplos```bash

Scan with all scanners (default)

dockerscan myapp:latest

Only run specific scanners

dockerscan --scanners secrets,supplychain redis:7

Save reports to specific directory

dockerscan --output /var/reports postgres:14

Only show critical issues

dockerscan --only-critical production-app:v1.0

Ver progreso del scan (scanner names, findings count, image pull status)

dockerscan --verbose ubuntu:22.04

Debug detallado (errores internos, detalles técnicos)

dockerscan --debug ubuntu:22.04

Scan private registry images (see Authentication section below)

dockerscan ghcr.io/myorg/private-app:v1.0

root@kitploit:~
### 🔐 Autenticación de Registro Privado

DockerScan admite tres métodos para autenticarse con registros privados:

#### Método 1: Archivo de Configuración de Docker (Recomendado para Uso Local)

El método más conveniente - utiliza sus credenciales existentes de Docker:```bash
# First, authenticate with your registry using Docker
docker login ghcr.io
# Username: your-username
# Password: ghp_your-token-here

# Now DockerScan can use these credentials automatically
dockerscan ghcr.io/myorg/private-app:latest

DockerScan lee automáticamente las credenciales de ~/.docker/config.json. Esto funciona con todos los registros en los que haya iniciado sesión con docker login.

Los asistentes de credenciales son totalmente compatibles. DockerScan resuelve de forma nativa las credenciales a través de:

  • credsStore — asistente de credenciales global (p. ej., osxkeychain en macOS con Docker Desktop, wincred en Windows, pass en Linux)
  • credHelpers — asistentes de credenciales por registro (tiene prioridad sobre credsStore)
  • Retroceso automático — si el binario del asistente especificado no está instalado, DockerScan recurre al bloque auths en texto plano en config.json

En macOS con Docker Desktop, esto funciona de inmediato sin configuración adicional:```json { "credsStore": "osxkeychain" }

root@kitploit:~
DockerScan llamará a `docker-credential-osxkeychain` de forma transparente para recuperar tokens, por lo que nunca necesitarás pasar credenciales explícitamente.

#### Método 2: Variables de Entorno (Recomendado para CI/CD)

Ideal para entornos automatizados y pipelines de CI/CD:```bash
# Set environment variables
export DOCKER_USERNAME=myusername
export DOCKER_PASSWORD=mytoken

# Scan private image
dockerscan ghcr.io/myorg/private-app:latest

# Or use alternative variable names
export REGISTRY_USERNAME=myusername
export REGISTRY_PASSWORD=mytoken
dockerscan myregistry.example.com/app:v1.0

Ejemplo de CI/CD (GitHub Actions):```yaml

  • name: Scan private image env: DOCKER_USERNAME: ${{ secrets.REGISTRY_USERNAME }} DOCKER_PASSWORD: ${{ secrets.REGISTRY_TOKEN }} run: dockerscan ghcr.io/${{ github.repository }}:${{ github.sha }}
root@kitploit:~
#### Método 3: Banderas de línea de comandos (No recomendado)

Solo para pruebas rápidas (las credenciales son visibles en la lista de procesos):```bash
dockerscan --registry-user myuser --registry-password mytoken ghcr.io/myorg/app:v1

Advertencia de seguridad: Este método expone las credenciales en el historial del shell y en la lista de procesos. Use variables de entorno o la configuración de Docker en su lugar.

Ejemplos específicos de registro

Docker Hub (Repositorios privados)```bash

Using Docker config

docker login docker.io dockerscan myusername/private-repo:latest

Using environment variables

export DOCKER_USERNAME=myusername export DOCKER_PASSWORD=dckr_pat_XXXXXXXXXXXXX dockerscan myusername/private-repo:latest

root@kitploit:~
#### Registro de Contenedores de GitHub (GHCR)```bash
# Using Docker config
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
dockerscan ghcr.io/myorg/myapp:v1.0

# Using environment variables
export DOCKER_USERNAME=myusername
export DOCKER_PASSWORD=ghp_XXXXXXXXXXXXXXXXXXXX
dockerscan ghcr.io/myorg/myapp:v1.0

AWS Elastic Container Registry (ECR)```bash

Get login credentials from AWS

aws ecr get-login-password --region us-east-1 |
docker login --username AWS --password-stdin
123456789012.dkr.ecr.us-east-1.amazonaws.com

Scan ECR image

dockerscan 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest

Or use environment variables with ECR credentials

export DOCKER_USERNAME=AWS export DOCKER_PASSWORD=$(aws ecr get-login-password --region us-east-1) dockerscan 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest

root@kitploit:~
#### Google Container Registry (GCR) / Artifact Registry```bash
# Authenticate with gcloud
gcloud auth configure-docker gcr.io

# Scan GCR image
dockerscan gcr.io/my-project/myapp:latest

# For Artifact Registry
gcloud auth configure-docker us-docker.pkg.dev
dockerscan us-docker.pkg.dev/my-project/my-repo/myapp:latest

# Or use service account JSON key
export DOCKER_USERNAME=_json_key
export DOCKER_PASSWORD="$(cat service-account-key.json)"
dockerscan gcr.io/my-project/myapp:latest

Azure Container Registry (ACR)```bash

Login with Azure CLI

az acr login --name myregistry

Scan ACR image

dockerscan myregistry.azurecr.io/myapp:v1.0

Or use service principal credentials

export DOCKER_USERNAME= export DOCKER_PASSWORD= dockerscan myregistry.azurecr.io/myapp:v1.0

root@kitploit:~
#### GitLab Container Registry```bash
# Using Docker config
docker login registry.gitlab.com
dockerscan registry.gitlab.com/mygroup/myproject/myapp:latest

# Using environment variables with deploy token
export DOCKER_USERNAME=gitlab+deploy-token-1
export DOCKER_PASSWORD=DEPLOY_TOKEN_HERE
dockerscan registry.gitlab.com/mygroup/myproject/myapp:latest

Registros Autoalojados/Privados```bash

Standard authentication

docker login myregistry.example.com:5000 dockerscan myregistry.example.com:5000/myapp:latest

With environment variables

export DOCKER_USERNAME=admin export DOCKER_PASSWORD=secret dockerscan myregistry.example.com:5000/myapp:latest

Insecure registries (not recommended for production)

Add to Docker daemon config: /etc/docker/daemon.json

{

"insecure-registries": ["myregistry.example.com:5000"]

}

root@kitploit:~
### Solución de problemas de autenticación

#### Problemas comunes

**1. Error "authentication required"**```bash
# Make sure you're logged in
docker login <registry>

# Or set environment variables
export DOCKER_USERNAME=your-username
export DOCKER_PASSWORD=your-token

2. Error "no autorizado: autenticación fallida"

  • Verifica que tus credenciales sean correctas
  • Comprueba si tu token ha expirado (especialmente para proveedores en la nube)
  • Asegúrate de que tu cuenta tenga permisos de extracción para la imagen

3. AWS ECR "el token de autorización ha expirado"```bash

ECR tokens expire after 12 hours - refresh them

aws ecr get-login-password --region us-east-1 |
docker login --username AWS --password-stdin
123456789012.dkr.ecr.us-east-1.amazonaws.com

root@kitploit:~
**4. Límite de tasa en Docker Hub**
- Autentícate para aumentar los límites de tasa (200 descargas/6 horas para cuentas gratuitas)
- Considera usar una cuenta Docker Hub Pro para límites más altos

**5. Errores de certificados con certificados autofirmados**
- Agrega el certificado de CA al almacén de confianza del sistema
- O configura Docker para confiar en el registro (consulta la documentación de Docker)

---

## 🔍 Escáneres de seguridad

### CIS Docker Benchmark

Verificación automatizada de cumplimiento contra CIS Docker Benchmark v1.7.0:```bash
dockerscan --scanners cis nginx:latest

Las verificaciones incluyen:

  • El usuario del contenedor no es root
  • No hay paquetes innecesarios instalados
  • Instrucción HEALTHCHECK presente
  • Etiquetas de versión específicas (no :latest)
  • Puertos expuestos mínimos
  • Sin contenedores privilegiados
  • Capacidades de Linux restringidas
  • Perfiles Seccomp/AppArmor aplicados
  • Sistema de archivos raíz de solo lectura
  • Y más de 70 verificaciones adicionales...

Seguridad de la Cadena de Suministro

Detecta ataques reales a la cadena de suministro:```bash dockerscan --scanners supplychain suspicious-image:1.0

root@kitploit:~
Detecta:
- Contenedores sin imagen (ataques solo con documentación)
- Minadores de criptomonedas (xmrig, claymore, etc.)
- Bibliotecas con puerta trasera (caso xz-utils)
- Imágenes sin firmar/verificar
- Intentos de phishing en documentación
- Conexiones a pools de minería, servidores C2

### Detección de Secretos

Encuentra secretos codificados:```bash
dockerscan --scanners secrets webapp:prod

Encuentra:

  • Credenciales de nube (AWS, GCP, Azure)
  • Claves API (más de 40 servicios)
  • Claves privadas y certificados
  • Credenciales de base de datos
  • Autenticación de registro Docker
  • Cadenas de alta entropía (posibles secretos desconocidos)

Escaneo de Vulnerabilidades

Detectar CVEs conocidos:```bash dockerscan --scanners vulnerabilities node:16

root@kitploit:~
Checks for:
- CVEs críticas de Docker (2024-2025)
- Vulnerabilidades de escape de contenedores
- Vulnerabilidades RCE de BuildKit
- Imágenes base al final de su vida útil
- Paquetes vulnerables

### Seguridad en tiempo de ejecución

Auditar configuraciones en tiempo de ejecución:```bash
dockerscan --scanners runtime running-container

Analiza:

  • Capacidades de Linux (CAP_SYS_ADMIN, etc.)
  • Perfiles de Seccomp
  • Políticas de AppArmor/SELinux
  • Aislamiento de namespaces
  • Uso de modo privilegiado

📁 Formatos de Salida

Salida JSON```json

{ "target": { "image_name": "nginx:latest" }, "start_time": "2024-11-22T10:30:00Z", "findings": [ { "id": "CIS-4.1", "title": "Container should not run as root", "severity": "HIGH", "category": "CIS-Benchmark", "description": "Running containers as root increases attack surface...", "remediation": "Use USER instruction in Dockerfile..." } ], "summary": { "total_findings": 47, "by_severity": { "CRITICAL": 8, "HIGH": 15 } } }

root@kitploit:~
### SARIF Output

Compatible con GitHub Security, Azure DevOps, VS Code:```json
{
  "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
  "version": "2.1.0",
  "runs": [
    {
      "tool": {
        "driver": {
          "name": "DockerScan",
          "version": "2.0.0"
        }
      },
      "results": [...]
    }
  ]
}

💼 Casos de Uso

1. Integración en el pipeline de CI/CD

GitHub Actions:```yaml name: Docker Security Scan

on: [push]

jobs: security-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3

root@kitploit:~
  - name: Build Docker image
    run: docker build -t myapp:${{ github.sha }} .

  - name: Install DockerScan
    run: |
      curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-linux-amd64 -o dockerscan
      chmod +x dockerscan

  - name: Update CVE Database
    run: ./dockerscan update-db

  - name: Run Security Scan
    run: ./dockerscan -q myapp:${{ github.sha }}

  - name: Upload SARIF results
    uses: github/codeql-action/upload-sarif@v2
    with:
      sarif_file: dockerscan-report.sarif
root@kitploit:~
**GitLab CI:**```yaml
docker-security-scan:
  stage: test
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - wget https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-linux-amd64 -O dockerscan
    - chmod +x dockerscan
    - ./dockerscan update-db
    - ./dockerscan -q $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  artifacts:
    reports:
      sast: dockerscan-report.sarif

2. Auditorías de Seguridad```bash

Comprehensive audit of production images

for image in $(docker images --format "{{.Repository}}:{{.Tag}}"); do echo "Scanning $image..." dockerscan $image --output /audit-reports/ done

Generate summary report

cat /audit-reports/*.json | jq -s ' { total_images: length, total_findings: map(.summary.total_findings) | add, critical_findings: map(.summary.by_severity.CRITICAL // 0) | add } '

root@kitploit:~
### 3. **Validación previa al despliegue**```bash
# Fail deployment if critical issues found
dockerscan production-app:v2.0
exit_code=$?

if [ $exit_code -eq 2 ]; then
  echo "❌ Critical vulnerabilities found. Deployment blocked."
  exit 1
elif [ $exit_code -eq 1 ]; then
  echo "⚠️  High severity issues found. Manual review required."
  # Send notification...
else
  echo "✅ No critical issues. Proceeding with deployment."
fi

4. Informes de Cumplimiento```bash

Generate CIS compliance report

dockerscan --scanners cis --only-critical all-production-images:* > cis-compliance-report.txt

Weekly security scan for compliance

0 0 * * 0 /usr/local/bin/dockerscan --scanners cis,vulnerabilities production-images:latest --output /compliance/weekly/

root@kitploit:~
### 5. **Flujo de trabajo del desarrollador**```bash
# Pre-commit hook
#!/bin/bash
# .git/hooks/pre-commit

docker build -t local-test:latest .
dockerscan --only-critical local-test:latest

if [ $? -ne 0 ]; then
  echo "❌ Docker security scan failed. Fix issues before committing."
  exit 1
fi

📊 Comparación con otras herramientas

¿Por qué elegir DockerScan?

  • Más completo: La única herramienta que combina CIS + Cadena de suministro + Secretos + CVE + Tiempo de ejecución
  • Investigación más reciente: Basado en ataques del mundo real de 2024-2025
  • Cero configuración: Funciona directamente
  • Amigable para desarrolladores: Salida CLI hermosa con remediación procesable
  • Listo para empresas: SARIF + códigos de salida + salida JSON

🏗️ Arquitectura

Estructura del proyecto```

dockerscan/ ├── logo.png # Project logo ├── cmd/ │ ├── dockerscan/ # Main CLI application │ │ └── main.go │ └── nvd2sqlite/ # CVE database builder tool │ └── main.go ├── data/ # CVE database (auto-updated daily) │ ├── latest.db.gz # Compressed SQLite database │ └── metadata.json # Database version info ├── internal/ │ ├── scanner/ # Extensible scanner framework │ │ ├── scanner.go # Scanner interface & registry │ │ ├── cis/ # CIS Benchmark implementation │ │ ├── secrets/ # Secrets detection │ │ ├── supplychain/ # Supply chain attacks │ │ ├── vulnerabilities/ # CVE scanning │ │ └── runtime/ # Runtime security │ ├── report/ # Report generators │ │ ├── json.go # JSON reporter │ │ └── sarif.go # SARIF reporter │ ├── models/ # Data models │ │ └── models.go # Findings, scan results, etc. │ └── config/ # Configuration │ └── config.go # App config & banner └── pkg/docker/ # Docker client wrapper └── client.go

root@kitploit:~
### Base de datos CVE y herramienta nvd2sqlite

DockerScan utiliza una base de datos SQLite local para consultas CVE. La base de datos se **actualiza automáticamente a diario** mediante GitHub Actions y se aloja en el repositorio, por lo que siempre tiene acceso a los últimos datos CVE.

#### Características de la base de datos

- 🗄️ **Base de datos preconstruida** - Lista para usar, no requiere configuración manual
- 🔄 **Actualizaciones diarias** - La acción de GitHub actualiza la base de datos cada día a las 00:00 UTC
- 📅 **2.5 años de datos CVE** - Cubre CVE desde mediados de 2022 hasta el presente
- ⚡ **Consultas rápidas** - SQLite con índices optimizados
- 🌐 **Alojado en GitHub** - Se descarga automáticamente con el comando `update-db`

#### Actualización de la base de datos```bash
# Download latest database from GitHub (recommended)
dockerscan update-db

# Install from local file (for air-gapped/offline environments)
dockerscan update-db --from-file /path/to/cve-db.sqlite

Nota: La primera vez que ejecutes dockerscan, te pedirá descargar la base de datos. Después, puedes actualizarla periódicamente con update-db.

Construyendo la base de datos manualmente (nvd2sqlite)

Para usuarios avanzados, puedes construir la base de datos CVE desde NVD directamente:```bash

Build the tool

make build # Builds both dockerscan and nvd2sqlite

Download CVEs (last 2.5 years by default)

./bin/nvd2sqlite --output data/cve-db.sqlite --verbose

With NVD API key (10x faster - 50 req/30sec vs 5 req/30sec)

NVD_API_KEY=your-key ./bin/nvd2sqlite --output data/cve-db.sqlite --verbose

Custom date range

./bin/nvd2sqlite --output data/cve-db.sqlite
--start-date 2023-01-01
--end-date 2024-12-31

root@kitploit:~
**Características de nvd2sqlite:**
- ⚡ **4 trabajadores de descarga en paralelo** para descargas más rápidas
- 🔄 **Reintento automático con retroceso exponencial** para límite de tasa (HTTP 429)
- 📦 **Descargas al directorio temporal**, luego procesa secuencialmente
- 🗄️ **Salida SQLite** con tablas indexadas para búsquedas rápidas

---

### Extensibilidad

Añadir un nuevo escáner es simple:```go
package myscan

import (
    "context"
    "github.com/cr0hn/dockerscan/v2/internal/models"
    "github.com/cr0hn/dockerscan/v2/internal/scanner"
)

type MyScanner struct {
    scanner.BaseScanner
}

func NewMyScanner() *MyScanner {
    return &MyScanner{
        BaseScanner: scanner.NewBaseScanner(
            "my-scanner",
            "Description of my scanner",
            true, // enabled
        ),
    }
}

func (s *MyScanner) Scan(ctx context.Context, target models.ScanTarget) ([]models.Finding, error) {
    var findings []models.Finding

    // Your scanning logic here...

    return findings, nil
}

// Register in main.go:
// registry.Register(myscan.NewMyScanner())

🤝 Contributing

¡Las contribuciones son bienvenidas! DockerScan está diseñado para ser extensible.

Cómo Contribuir

  1. Haz un fork del repositorio
  2. Crea una rama de funcionalidad (git checkout -b feature/amazing-scanner)
  3. Agrega tu escáner en internal/scanner/
  4. Escribe pruebas (mantenemos más del 90% de cobertura)
  5. Confirma tus cambios (git commit -am 'Add amazing scanner')
  6. Empuja a la rama (git push origin feature/amazing-scanner)
  7. Abre un Pull Request

Desarrollo```bash

Clone and setup

git clone https://github.com/cr0hn/dockerscan cd dockerscan/dockerscan-v2

Install dependencies

make deps

Run tests

make test

Run with coverage

make coverage

Build

make build

Format code

make fmt

Lint

make lint

root@kitploit:~
### Agregando Nuevos Escáneres

Especialmente damos la bienvenida a:
- Integración con bases de datos de vulnerabilidades (NVD, GitHub Security Advisories)
- Escaneo de seguridad de Kubernetes
- Seguridad de registros de contenedores
- Análisis de seguridad de Docker Compose
- Escaneo de IaC (Dockerfiles)

---

## 📚 Referencias

### Estándares y Benchmarks

- [CIS Docker Benchmark v1.7.0](https://www.cisecurity.org/benchmark/docker) - Center for Internet Security
- [NIST SP 800-190](https://csrc.nist.gov/publications/detail/sp/800-190/final) - Guía de Seguridad de Contenedores de Aplicaciones
- [OWASP Docker Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html)

### Investigación y CVEs

- [4 Millones de Contenedores Maliciosos sin Imagen](https://thehackernews.com/2024/04/millions-of-malicious-imageless.html) - The Hacker News, Abril 2024
- [Ataques a la Cadena de Suministro Usando Imágenes de Contenedores](https://www.aquasec.com/blog/supply-chain-threats-using-container-images/) - Aqua Security
- [CVE-2024-21626: Escape de Contenedor runc](https://nvd.nist.gov/vuln/detail/CVE-2024-21626) - NIST NVD
- [CVE-2024-23651: RCE en BuildKit](https://nvd.nist.gov/vuln/detail/CVE-2024-23651) - NIST NVD
- [Backdoor en xz-utils (Marzo 2024)](https://www.openwall.com/lists/oss-security/2024/03/29/4) - OpenWall

### Herramientas y Proyectos

- [Trivy](https://github.com/aquasecurity/trivy) - Escáner de vulnerabilidades
- [Docker Bench Security](https://github.com/docker/docker-bench-security) - Script de benchmark CIS
- [Cosign](https://github.com/sigstore/cosign) - Firma y verificación de contenedores
- [Especificación SARIF](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) - Formato de Resultados de Análisis Estático

---

## 📄 Licencia

Este proyecto está licenciado bajo la **DockerScan Proprietary Source-Available License**.

### Lo que esto significa

✅ **PUEDES (Gratuitamente):**
- Usar DockerScan **gratis** para escaneo de seguridad interno
- Usarlo en tus **tuberías CI/CD** y flujos de trabajo de seguridad
- **Modificar, bifurcar y contribuir** de vuelta a la comunidad
- Usarlo para **fines educativos y de investigación**
- Usarlo como **herramienta en servicios profesionales** (consultoría, auditorías de seguridad, pruebas de penetración)
- **Integrarlo** en otros productos donde sea un componente auxiliar

❌ **NO PUEDES (sin permiso expreso por escrito o licencia comercial):**
- Ofrecer **escaneo Docker como SaaS comercial**
- **Vender instancias alojadas** de DockerScan
- Construir una **plataforma comercial** basada principalmente en DockerScan
- Crear un **servicio administrado de pago** donde DockerScan sea la oferta principal

### ¿Por qué esta licencia?

Esta licencia protege la sostenibilidad del proyecto al:
- ✅ Conceder **libertad** para usar el software con fines legítimos
- ❌ Prevenir el **aprovechamiento dañino** donde empresas se benefician ofreciéndolo como servicio sin contribuir
- 💰 Asegurar que el proyecto siga siendo **sostenible** a través de licencias comerciales para usos competidores
- 🔓 Mantener el **código fuente disponible** para transparencia y contribuciones de la comunidad

**Esto NO es código abierto** - es **código disponible** con restricciones en uso comercial competitivo.

### Licencia Comercial

**Requerido para:**
- Ofertas SaaS o alojadas
- Plataformas comerciales que usen DockerScan como característica principal
- Reventa o redistribución como producto comercial
- Servicios administrados donde DockerScan sea la oferta central

**Contacto para licencias comerciales:**

📧 Correo electrónico: cr0hn [arroba] cr0hn.com
🌐 Sitio web: https://cr0hn.com
💼 Términos de licencia flexibles disponibles para empresas y startups

Consulte el archivo [LICENSE](https://github.com/cr0hn/dockerscan/blob/HEAD/LICENSE) para los términos legales completos.

---

## 👤 Autor

<div align="center">

### **Daniel Garcia (cr0hn)**

[![Website](https://img.shields.io/badge/Website-cr0hn.com-blue?style=for-the-badge&logo=google-chrome)](https://cr0hn.com)
[![GitHub](https://img.shields.io/badge/GitHub-cr0hn-black?style=for-the-badge&logo=github)](https://github.com/cr0hn)
[![Twitter](https://img.shields.io/badge/Twitter-@ggdaniel-1DA1F2?style=for-the-badge&logo=twitter)](https://twitter.com/ggdaniel)

**Investigador de Seguridad | Desarrollador de Código Abierto | Experto en Seguridad Docker**

</div>

---

## 🙏 Agradecimientos

Agradecimientos especiales a:
- La comunidad de seguridad Docker
- CIS por el Docker Benchmark
- NIST por SP 800-190
- Los investigadores de seguridad que descubrieron los ataques a la cadena de suministro de 2024
- Todos los contribuyentes y usuarios de DockerScan

---

## 📞 Soporte

- **Incidencias**: [GitHub Issues](https://github.com/cr0hn/dockerscan/issues)
- **Discusiones**: [GitHub Discussions](https://github.com/cr0hn/dockerscan/discussions)
- **Seguridad**: Reportar vulnerabilidades a [email protected]

---

<div align="center">

**⭐ ¡Si encuentras útil DockerScan, por favor dale una estrella al repositorio! ⭐**

*Haciendo la Seguridad Docker Accesible para Todos*

[⬆ Volver Arriba](#-dockerscan-v20)

</div>
Descargar herramienta
Característicav1.x (Python)v2.0 (Go)
LenguajePython 3.5+Go 1.21+
Rendimiento~500 imágenes/hora~5000 imágenes/hora
Uso de memoria200-500 MB50-100 MB
Distribuciónpip install + dependenciasBinario único
Escáneres de seguridad2 módulos5 módulos
CIS BenchmarkParcialCompleto v1.7.0 (80+ comprobaciones)
Cadena de suministro❌ No disponible✅ Basado en investigación de 2024
Patrones de secretos10 patrones40+ patrones
Detección de CVEBásicaCVEs 2024-2025
Seguridad en tiempo de ejecución❌ No disponible✅ Auditoría completa de capacidades
Salida SARIF❌ No disponible✅ Soporte completo
Integración CI/CDManualNativo (códigos de salida, SARIF)
CaracterísticaDockerScan v2.0TrivyClairSnykGrype
CIS Benchmark v1.7✅ Completo (80+ verificaciones)❌❌Parcial❌
Detección de cadena de suministro (2024)✅ Sí❌❌❌❌
Escaneo de secretos✅ 40+ patronesBásico❌✅❌
Base de datos de CVE✅ CVEs 2024-2025✅✅✅✅
Seguridad en tiempo de ejecución✅ Completo❌❌❌❌
Salida SARIF✅✅❌✅✅
Velocidad (Go)⚡ Muy rápido⚡ Muy rápido🐌 Lento⚡ Rápido⚡ Muy rápido
Extensible✅ Sistema de pluginsLimitadoLimitado❌Limitado
Códigos de salida✅ Listo para CI/CD✅Parcial✅✅
Costo🆓 Gratuito🆓 Gratuito🆓 Gratuito💰 Planes de pago🆓 Gratuito
Modo sin conexión✅✅❌❌✅
LicenciaCódigo fuente disponible propietarioApache-2.0Apache-2.0PropietarioApache-2.0