Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 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.7k24751hace 13h 34mRevisado 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
<div align="center">

<img src="https://assets.kitploit.com/production/public/readmes/1309/3345979faae1cdabbe2912dfcaf46221df5cb53697630a8e8dcc5eebf814e949.png" alt="Logotipo de DockerScan" width="200">

# DockerScan v2.0

### *El escáner de seguridad Docker más completo*

[![Licencia](https://img.shields.io/badge/license-Proprietary-blue.svg)](LICENSE)
[![Versión de Go](https://img.shields.io/badge/go-1.21+-00ADD8.svg?logo=go)](https://golang.org/)
[![Versión](https://img.shields.io/github/v/release/cr0hn/dockerscan?label=version)](https://github.com/cr0hn/dockerscan/releases)
[![CI/CD](https://img.shields.io/badge/CI/CD-Manual-blue.svg)](https://github.com/cr0hn/dockerscan/actions/workflows/dockerscan.yml)
[![Cobertura de pruebas](https://img.shields.io/badge/coverage-92%25-brightgreen.svg)](https://github.com/cr0hn/dockerscan)
[![Informe Go](https://img.shields.io/badge/go%20report-A+-brightgreen.svg)](https://goreportcard.com/report/github.com/cr0hn/dockerscan)
[![Descargas](https://img.shields.io/github/downloads/cr0hn/dockerscan/total.svg)](https://github.com/cr0hn/dockerscan/releases)

**Por [Daniel Garcia (cr0hn)](https://cr0hn.com)** | [GitHub](https://github.com/cr0hn/dockerscan) | [Sitio web](https://cr0hn.com)

---

[Características](#-características) •
[Instalación](#-instalación) •
[Inicio rápido](#-inicio-rápido) •
[Documentación](#-documentación) •
[Casos de uso](#-casos-de-uso) •
[Novedades](#-novedades-en-v20) •
[Contribuir](#-contribuir)

</div>

---

## 📑 Tabla de Contenidos

- [Resumen](#-resumen)
- [Características](#-características)
- [Novedades en v2.0](#-novedades-en-v20)
- [Instalación](#-instalación)
- [Inicio rápido](#-inicio-rápido)
- [Uso](#-uso)
  - [Autenticación en registros privados](#-autenticación-en-registros-privados)
- [Escáneres de seguridad](#-escáneres-de-seguridad)
- [Formatos de salida](#-formatos-de-salida)
- [Casos de uso](#-casos-de-uso)
- [Comparativa](#-comparativa-con-otras-herramientas)
- [Arquitectura](#-arquitectura)
- [Contribuir](#-contribuir)
- [Referencias](#-referencias)
- [Licencia](#-licencia)
- [Autor](#-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

| Característica | v1.x (Python) | v2.0 (Go) |
|----------------|---------------|-----------|
| **Lenguaje** | Python 3.5+ | Go 1.21+ |
| **Rendimiento** | ~500 imágenes/hora | ~5000 imágenes/hora |
| **Uso de memoria** | 200-500 MB | 50-100 MB |
| **Distribución** | pip install + dependencias | Binario único |
| **Escáneres de seguridad** | 2 módulos | 5 módulos |
| **CIS Benchmark** | Parcial | Completo v1.7.0 (80+ comprobaciones) |
| **Cadena de suministro** | ❌ No disponible | ✅ Basado en investigación de 2024 |
| **Patrones de secretos** | 10 patrones | 40+ patrones |
| **Detección de CVE** | Básica | CVEs 2024-2025 |
| **Seguridad en tiempo de ejecución** | ❌ No disponible | ✅ Auditoría completa de capacidades |
| **Salida SARIF** | ❌ No disponible | ✅ Soporte completo |
| **Integración CI/CD** | Manual | Nativo (códigos de salida, SARIF) |

### 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/
```
#### 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/
```
#### 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"
```
#### 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
```
### 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
```
> **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
```
---

## 📖 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
```
### 🔐 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"
}
```
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 }}
```
#### 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
```
#### 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
```
#### 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=<service-principal-id>
export DOCKER_PASSWORD=<service-principal-password>
dockerscan myregistry.azurecr.io/myapp:v1.0
```
#### 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"]
# }
```
### 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
```
**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
```
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
```
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
    }
  }
}
```
### 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

      - 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
```
**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
  }
'
```
### 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/
```
### 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

| Característica | DockerScan v2.0 | Trivy | Clair | Snyk | Grype |
|---------|----------------|-------|-------|------|-------|
| **CIS Benchmark v1.7** | ✅ Completo (80+ verificaciones) | ❌ | ❌ | Parcial | ❌ |
| **Detección de cadena de suministro (2024)** | ✅ Sí | ❌ | ❌ | ❌ | ❌ |
| **Escaneo de secretos** | ✅ 40+ patrones | Bá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 plugins | Limitado | Limitado | ❌ | Limitado |
| **Códigos de salida** | ✅ Listo para CI/CD | ✅ | Parcial | ✅ | ✅ |
| **Costo** | 🆓 Gratuito | 🆓 Gratuito | 🆓 Gratuito | 💰 Planes de pago | 🆓 Gratuito |
| **Modo sin conexión** | ✅ | ✅ | ❌ | ❌ | ✅ |
| **Licencia** | Código fuente disponible propietario | Apache-2.0 | Apache-2.0 | Propietario | Apache-2.0 |

### ¿Por qué elegir DockerScan?

- **Más completo**: La única herramienta que combina CIS + Cadena de suministro + Secretos + CVE + Tiempo de ejecución

---

[Read more](https://github.com/cr0hn/dockerscan)
Descargar herramienta