Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dockerscan — 가장 포괄적인 Docker 보안 스캐너 | Kitploit
도구/GitHubGitHub/cr0hn/dockerscan
Vulnerability ScannersContainer SecurityConfiguration AuditingCloud SecurityDevSecOpsSecret DetectionSupply Chain Security
GitHubcr0hn/dockerscan

dockerscan

가장 포괄적인 Docker 보안 스캐너

저장소 보기
1.7k24713시간 55분 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
DockerScan 로고

DockerScan v2.0

가장 포괄적인 Docker 보안 스캐너

License Go Version Version CI/CD Test Coverage Go Report Card Downloads

작성자: Daniel Garcia (cr0hn) | GitHub | 웹사이트


기능 • 설치 • 빠른 시작 • 문서 • 사용 사례 • 새로운 기능 • 기여하기


📑 목차

  • 개요
  • 기능
  • v2.0의 새로운 기능
  • 설치
  • 빠른 시작
  • 사용법
    • 프라이빗 레지스트리 인증
  • 보안 스캐너
  • 출력 형식
  • 사용 사례
  • 비교
  • 아키텍처
  • 기여하기
  • 참고 자료
  • 라이선스
  • 저자

🎯 개요

DockerScan v2.0은 Go로 완전히 다시 작성된 차세대 Docker 컨테이너 및 이미지 보안 스캐너입니다. 최신 2024-2025 연구, 업계 표준(CIS Benchmark, NIST SP 800-190), 그리고 프로덕션 환경에서 발견된 실제 공격 패턴을 기반으로 여러 보안 스캐닝 기술을 결합합니다.

DockerScan v2.0을 선택해야 하는 이유는?

  • ✅ 가장 포괄적: 하나의 도구에 5개 이상의 보안 스캐닝 기술 결합
  • ✅ 최신 연구: 2024-2025 공급망 공격 및 CVE 기반
  • ✅ 프로덕션 준비 완료: CI/CD를 위한 SARIF 출력, 자동화를 위한 종료 코드
  • ✅ 번개처럼 빠름: Go로 작성되어 동시 스캐닝 지원
  • ✅ 확장 가능: 사용자 정의 스캐너를 위한 플러그인 아키텍처
  • ✅ 무료 및 오픈 소스: BSD-3 라이선스

🌟 기능

🛡️ 보안 스캐닝 모듈

1. CIS Docker Benchmark v1.7.0

80개 이상의 자동화된 제어 항목을 통한 완전한 규정 준수 검사:

  • ✅ 호스트 구성 보안 (13개 검사)
  • ✅ Docker 데몬 강화 (18개 검사)
  • ✅ 파일 및 디렉터리 권한 (9개 검사)
  • ✅ 컨테이너 이미지 모범 사례 (13개 검사)
  • ✅ 런타임 보안 검증 (31개 이상 검사)
  • ✅ 보안 운영 규정 준수

2. 공급망 공격 탐지 🆕

2024년 실제 공격 캠페인 기반:

  • ✅ 이미지 없는 컨테이너 탐지 - 실제 레이어가 없는 악성 컨테이너 식별 (Docker Hub에서 400만 개 이상 발견)
  • ✅ 암호화폐 채굴기 탐지 - 채굴 악성 코드 탐지 (12만 개 이상의 악성 이미지 풀 감지)
  • ✅ 백도어 라이브러리 탐지 - 손상된 종속성 포착 (xz-utils, liblzma 사고)
  • ✅ 이미지 서명 검증 - Notary/Cosign을 사용한 서명 검증
  • ✅ 피싱 콘텐츠 탐지 - 사회 공학을 위한 문서 스캔
  • ✅ 악성 네트워크 대상 - C2 서버, 채굴 풀, Tor 노드 식별

3. 고급 시크릿 탐지 🔑

최신 API(2024 업데이트)를 포함한 40개 이상의 시크릿 패턴:

  • ✅ 클라우드 제공업체: AWS, GCP, Azure 자격 증명
  • ✅ 버전 관리: GitHub, GitLab, Bitbucket 토큰
  • ✅ AI/ML API: OpenAI, Anthropic, Hugging Face 키
  • ✅ 결제: Stripe, PayPal, Square 키
  • ✅ 커뮤니케이션: Slack, SendGrid, Twilio, Mailchimp
  • ✅ 인증: JWT 토큰, OAuth 토큰
  • ✅ 암호화: 개인 키 (RSA, SSH, PGP, EC, DSA), 인증서
  • ✅ 데이터베이스: PostgreSQL, MySQL, MongoDB 연결 문자열
  • ✅ Docker: 레지스트리 인증 토큰
  • ✅ 엔트로피 분석: 알려지지 않은 시크릿에 대한 Shannon 엔트로피 계산 (임계값 >4.5)

4. CVE 및 취약점 스캐닝 🚨

2024-2025 주요 CVE 탐지:

  • ✅ CVE-2024-21626 - runc 컨테이너 탈출 (CVSS 8.6)
  • ✅ CVE-2024-23651 - BuildKit 캐시 중독 RCE (CVSS 9.1)
  • ✅ CVE-2024-23652 - BuildKit 경쟁 조건 (CVSS 7.5)
  • ✅ CVE-2024-23653 - BuildKit 권한 상승
  • ✅ CVE-2024-8695/8696 - Docker Desktop RCE (CVSS 8.8)
  • ✅ CVE-2025-9074 - Docker Desktop 로컬 액세스 취약점
  • ✅ 수명 종료 기본 이미지 탐지
  • ✅ 알려진 취약 패키지 스캐닝

5. 런타임 보안 분석 ⚙️

컨테이너 런타임 강화 검사:

  • ✅ Linux Capabilities 감사 - 위험한 능력 탐지 (CAP_SYS_ADMIN, CAP_NET_ADMIN 등)
  • ✅ Seccomp 프로필 검증 - 시스템 호출 필터링 활성화 확인
  • ✅ AppArmor/SELinux 검사 - 강제 접근 제어 검증
  • ✅ 권한 있는 컨테이너 탐지 - 전체 호스트 접근 권한이 있는 컨테이너 식별
  • ✅ 네임스페이스 격리 - PID, IPC, 네트워크, 사용자 네임스페이스 검사
  • ✅ 컨테이너 탈출 징후 - 일반적인 탈출 기술 탐지

📊 보고 및 통합

  • JSON - 자동화를 위한 기계 판독 가능 출력
  • SARIF - 다음과의 기본 통합:
    • GitHub 보안 탭
    • Azure DevOps
    • VS Code 확장
    • GitLab 보안 대시보드
  • 아름다운 CLI - 이모지가 포함된 색상 코드 심각도 수준
  • 종료 코드 - CI/CD 친화적 (0=깨끗함, 1=경고, 2=심각)

🚀 성능

  • ⚡ Python 대안보다 10배 빠름
  • 🔄 Go 고루틴을 사용한 동시 스캐닝
  • 💾 낮은 메모리 사용량 (~50-100MB)
  • 📦 단일 바이너리 - 종속성 없음

🆕 v2.0의 새로운 기능?

DockerScan v2.0은 완전히 처음부터 다시 작성된 버전입니다. v1.x에서 변경된 사항은 다음과 같습니다:

주요 변경 사항

v1.x에서 유지된 기능

  • ✅ 공격 도구 - 이미지 트로이목마화 기능 (v2.1에서 곧 제공)
  • ✅ 레지스트리 작업 - Push, Pull, 삭제 작업 (v2.1에서 곧 제공)
  • ✅ 네트워크 스캐닝 - Docker 레지스트리 검색 (v2.1에서 곧 제공)

v2.0.5 새로운 기능 🔐

  • 🔑 프라이빗 레지스트리 인증 - 프라이빗 레지스트리 이미지 스캔 완전 지원 (#24 수정)
  • 🌐 멀티 레지스트리 지원 - Docker Hub, GHCR, ECR, GCR, ACR, GitLab 및 자체 호스팅 레지스트리
  • 🔐 다양한 인증 방법 - 환경 변수 (CI/CD), CLI 플래그 (테스트), Docker 설정 파일 (원활함)
  • 🎯 스마트 인증 우선순위 - CLI 플래그 > ENV 변수 > Docker 설정 (자동 선택)
  • 📝 향상된 오류 메시지 - 레지스트리별 힌트 (ECR 토큰 만료, 속도 제한, 인증서)
  • 🧪 포괄적인 테스트 - 64개 테스트 케이스, 91.2% 커버리지, 실제 프라이빗 레지스트리로 테스트 완료
  • 📚 완전한 문서 - 모든 주요 클라우드 레지스트리 및 인증 방법 예제 포함

v2.0.4 새로운 기능

  • 🗄️ CVE 데이터베이스 통합 - NVD 데이터를 포함한 로컬 SQLite 데이터베이스 (2.5년 분량의 CVE)
  • 🔄 매일 자동 업데이트 - GitHub Action이 매일 CVE 데이터베이스 업데이트
  • ⚡ 병렬 CVE 다운로드 - 더 빠른 데이터베이스 생성을 위한 4개 워커 (nvd2sqlite)
  • 🔁 백오프 재시도 - 속도 제한된 NVD API 요청에 대한 자동 재시도
  • 📦 --from-file 플래그 - 로컬 파일에서 CVE 데이터베이스 설치 (오프라인/에어갭 환경)
  • 🔇 자동 모드 (-q) - CI/CD 파이프라인을 위한 배너 출력 억제
  • 🧹 거짓 긍정 감소 - 엔트로피 필터링으로 시크릿 탐지 개선

재작성 이유

  1. 성능 - Go는 고루틴을 통해 10배 빠른 스캐닝 제공
  2. 최신 위협 - 2024-2025 공격 패턴 통합
  3. 엔터프라이즈 준비 - SARIF 출력, 종료 코드, 단일 바이너리 배포
  4. 확장성 - 사용자 정의 스캐너를 위한 깔끔한 플러그인 아키텍처
  5. 유지보수성 - 타입 안전성, 더 나은 오류 처리, 기여 용이성

📦 설치

옵션 1: 사전 빌드된 바이너리 다운로드 (권장)

사전 컴파일된 바이너리는 모든 버전 태그에 대해 GitHub Actions를 통해 자동으로 빌드 및 릴리스됩니다.

지원 플랫폼:

  • 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/

윈도우 (PowerShell)```powershell

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

root@kitploit:~
#### 다운로드 확인 (선택 사항이지만 권장됨)```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

옵션 2: 소스에서 빌드```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:~
### 옵션 3: Go Install```bash
go install github.com/cr0hn/dockerscan/v2/cmd/dockerscan@latest

🚀 빠른 시작

첫 번째 설정

스캔하기 전에 CVE 데이터베이스를 다운로드하세요 (매일 업데이트, ~30MB 압축):```bash

Download latest CVE database from GitHub

dockerscan update-db

root@kitploit:~
> **Tip**: 데이터베이스는 GitHub Actions를 통해 매일 업데이트됩니다. 최신 CVE 데이터를 얻으려면 주기적으로 `update-db`를 실행하세요.

### 기본 스캔```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

예제 출력```

╔══════════════════════════════════════════════════════════════════════════╗ ║ ██████╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗ ███████╗ ██████╗ █████╗ ███╗ ██╗ ║ ██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗██╔════╝██╔════╝██╔══██╗████╗ ██║ ║ ██║ ██║██║ ██║██║ █████╔╝ █████╗ ██████╔╝███████╗██║ ███████║██╔██╗ ██║ ║ ██║ ██║██║ ██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗╚════██║██║ ██╔══██║██║╚██╗██║ ║ ██████╔╝╚██████╔╝╚██████╗██║ ██╗███████╗██║ ██║███████║╚██████╗██║ ██║██║ ╚████║ ║ ║ ║ 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:~
---

## 📖 사용법

### 명령줄 옵션```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

예제```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:~
### 🔐 개인 레지스트리 인증

DockerScan은 개인 레지스트리 인증을 위한 세 가지 방법을 지원합니다:

#### 방법 1: Docker 구성 파일 (로컬 사용에 권장)

가장 편리한 방법 - 기존 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은 ~/.docker/config.json에서 자격 증명을 자동으로 읽습니다. 이는 docker login으로 로그인한 모든 레지스트리에서 작동합니다.

자격 증명 헬퍼가 완전히 지원됩니다. DockerScan은 다음을 통해 자격 증명을 기본적으로 확인합니다:

  • credsStore — 전역 자격 증명 헬퍼 (예: macOS Docker Desktop의 osxkeychain, Windows의 wincred, Linux의 pass)
  • credHelpers — 레지스트리별 자격 증명 헬퍼 (credsStore보다 우선함)
  • 자동 대체 — 지정된 헬퍼 바이너리가 설치되지 않은 경우 DockerScan은 config.json의 일반 텍스트 auths 블록으로 대체합니다.

macOS에서 Docker Desktop을 사용하는 경우 추가 구성 없이 즉시 작동합니다:```json { "credsStore": "osxkeychain" }

root@kitploit:~
#### 방법 2: 환경 변수 (CI/CD에 권장)

자동화 환경 및 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

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:~
#### 방법 3: 명령줄 플래그 (권장되지 않음)

빠른 테스트 전용 (자격 증명이 프로세스 목록에 노출됨):```bash
dockerscan --registry-user myuser --registry-password mytoken ghcr.io/myorg/app:v1

보안 경고: 이 방법은 셸 기록과 프로세스 목록에 자격 증명을 노출합니다. 대신 환경 변수나 Docker 구성을 사용하세요.

레지스트리별 예제

Docker Hub (비공개 리포지토리)```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:~
#### GitHub Container Registry (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

자체 호스팅/비공개 레지스트리```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:~
### 인증 문제 해결

#### 일반적인 문제

**1. "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. "unauthorized: authentication failed" 오류

  • 자격 증명이 올바른지 확인하세요
  • 토큰이 만료되었는지 확인하세요 (특히 클라우드 제공업체의 경우)
  • 계정에 이미지 풀 권한이 있는지 확인하세요

3. AWS ECR "authorization token has expired"```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. Docker Hub의 속도 제한**
- 인증하여 속도 제한 증가 (무료 계정은 6시간에 200회 풀)
- 더 높은 제한을 위해 Docker Hub Pro 계정 사용 고려

**5. 자체 서명 인증서의 인증서 오류**
- 시스템 신뢰 저장소에 CA 인증서 추가
- 또는 Docker가 레지스트리를 신뢰하도록 구성 (Docker 문서 참조)

---

## 🔍 보안 스캐너

### CIS Docker 벤치마크

CIS Docker 벤치마크 v1.7.0에 대한 자동화된 규정 준수 검사:```bash
dockerscan --scanners cis nginx:latest

검사 항목은 다음과 같습니다:

  • 컨테이너 사용자가 root가 아님
  • 불필요한 패키지가 설치되지 않음
  • HEALTHCHECK 명령어가 포함됨
  • 특정 버전 태그 사용 (:latest 미사용)
  • 최소한의 포트 노출
  • 권한이 있는 컨테이너 없음
  • Linux 역량 제한
  • Seccomp/AppArmor 프로필 적용
  • 읽기 전용 루트 파일시스템
  • 70개 이상의 추가 검사...

공급망 보안

실제 공급망 공격 탐지:```bash dockerscan --scanners supplychain suspicious-image:1.0

root@kitploit:~
감지 대상:
- 이미지 없는 컨테이너 (문서 전용 공격)
- 암호화폐 채굴기 (xmrig, claymore 등)
- 백도어 라이브러리 (xz-utils 사례)
- 서명되지 않음/확인되지 않은 이미지
- 문서 내 피싱 시도
- 채굴 풀, C2 서버로의 연결

### 비밀 탐지

하드코딩된 비밀 찾기:```bash
dockerscan --scanners secrets webapp:prod

찾는 항목:

  • 클라우드 자격 증명 (AWS, GCP, Azure)
  • API 키 (40개 이상 서비스)
  • 개인 키 및 인증서
  • 데이터베이스 자격 증명
  • Docker 레지스트리 인증
  • 높은 엔트로피 문자열 (잠재적 알 수 없는 비밀)

취약점 스캐닝

알려진 CVE 탐지:```bash dockerscan --scanners vulnerabilities node:16

root@kitploit:~
다음 항목을 검사합니다:
- 중요 Docker CVE (2024-2025)
- 컨테이너 탈출 취약점
- BuildKit RCE 취약점
- 수명이 종료된 기본 이미지
- 취약한 패키지

### Runtime Security

런타임 구성을 감사합니다:```bash
dockerscan --scanners runtime running-container

Analyzes:

  • Linux capabilities (CAP_SYS_ADMIN 등)
  • Seccomp 프로필
  • AppArmor/SELinux 정책
  • 네임스페이스 격리
  • Privileged 모드 사용

📁 출력 형식

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 출력

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": [...]
    }
  ]
}

💼 사용 사례

1. 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. 보안 감사```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. **배포 전 검증**```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. 규정 준수 보고```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. **개발자 워크플로우**```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

📊 다른 도구와 비교

DockerScan을 선택해야 하는 이유

  • 가장 포괄적: CIS + 공급망 + 시크릿 + CVE + 런타임을 결합한 유일한 도구
  • 최신 연구: 2024-2025 실제 공격 기반
  • 제로 구성: 기본 설정으로 즉시 사용 가능
  • 개발자 친화적: 실행 가능한 수정 조치와 함께 아름다운 CLI 출력
  • 엔터프라이즈 준비: SARIF + 종료 코드 + JSON 출력

🏗️ 아키텍처

프로젝트 구조```

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:~
### CVE 데이터베이스 및 nvd2sqlite 도구

DockerScan은 CVE 조회를 위해 로컬 SQLite 데이터베이스를 사용합니다. 데이터베이스는 GitHub Actions를 통해 **매일 자동으로 업데이트**되며 리포지토리에 호스팅되므로 항상 최신 CVE 데이터에 접근할 수 있습니다.

#### 데이터베이스 기능

- 🗄️ **사전 구축된 데이터베이스** - 바로 사용 가능, 수동 설정 불필요
- 🔄 **매일 업데이트** - GitHub Action이 매일 UTC 00:00에 데이터베이스를 업데이트합니다
- 📅 **2.5년의 CVE 데이터** - 2022년 중반부터 현재까지의 CVE를 포함
- ⚡ **빠른 조회** - 최적화된 인덱스가 있는 SQLite
- 🌐 **GitHub에서 호스팅** - `update-db` 명령으로 자동 다운로드

#### 데이터베이스 업데이트```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

참고: dockerscan을 처음 실행하면 데이터베이스를 다운로드하라는 메시지가 표시됩니다. 그 후에는 update-db로 주기적으로 업데이트할 수 있습니다.

데이터베이스 수동 구축 (nvd2sqlite)

고급 사용자의 경우 NVD에서 직접 CVE 데이터베이스를 구축할 수 있습니다:```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:~
**nvd2sqlite 기능:**
- ⚡ **4개의 병렬 다운로드 작업자**로 더 빠른 다운로드
- 🔄 **속도 제한(HTTP 429)에 대한 지수 백오프를 사용한 자동 재시도**
- 📦 **임시 디렉토리로 다운로드한 후**, 순차적으로 처리
- 🗄️ **빠른 조회를 위한 인덱스 테이블이 있는 SQLite 출력**

---

### 확장성

새 스캐너를 추가하는 것은 간단합니다:```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())

🤝 기여하기

기여를 환영합니다! DockerScan은 확장 가능하도록 설계되었습니다.

기여 방법

  1. Fork 저장소
  2. Create 기능 브랜치 (git checkout -b feature/amazing-scanner)
  3. Add 스캐너를 internal/scanner/에 추가
  4. Write 테스트 (저희는 90% 이상의 커버리지를 유지합니다)
  5. Commit 변경 사항 (git commit -am 'Add amazing scanner')
  6. Push 브랜치로 (git push origin feature/amazing-scanner)
  7. Open Pull Request

개발```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:~
### 새로운 스캐너 추가하기

특히 다음과 같은 부분을 환영합니다:
- 취약점 데이터베이스(NVD, GitHub Security Advisories)와의 통합
- Kubernetes 보안 스캐닝
- 컨테이너 레지스트리 보안
- Docker Compose 보안 분석
- IaC 스캐닝(Dockerfile)

---

## 📚 참고 자료

### 표준 및 벤치마크

- [CIS Docker Benchmark v1.7.0](https://www.cisecurity.org/benchmark/docker) - 인터넷 보안 센터
- [NIST SP 800-190](https://csrc.nist.gov/publications/detail/sp/800-190/final) - 애플리케이션 컨테이너 보안 가이드
- [OWASP Docker Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html)

### 연구 및 CVE

- [4M Malicious Imageless Containers](https://thehackernews.com/2024/04/millions-of-malicious-imageless.html) - The Hacker News, 2024년 4월
- [Supply Chain Attacks Using Container Images](https://www.aquasec.com/blog/supply-chain-threats-using-container-images/) - Aqua Security
- [CVE-2024-21626: runc 컨테이너 탈출](https://nvd.nist.gov/vuln/detail/CVE-2024-21626) - NIST NVD
- [CVE-2024-23651: BuildKit RCE](https://nvd.nist.gov/vuln/detail/CVE-2024-23651) - NIST NVD
- [xz-utils 백도어 (2024년 3월)](https://www.openwall.com/lists/oss-security/2024/03/29/4) - OpenWall

### 도구 및 프로젝트

- [Trivy](https://github.com/aquasecurity/trivy) - 취약점 스캐너
- [Docker Bench Security](https://github.com/docker/docker-bench-security) - CIS 벤치마크 스크립트
- [Cosign](https://github.com/sigstore/cosign) - 컨테이너 서명 및 검증
- [SARIF Specification](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html) - 정적 분석 결과 형식

---

## 📄 라이선스

이 프로젝트는 **DockerScan 독점 소스 제공 라이선스**에 따라 라이선스가 부여됩니다.

### 의미

✅ **무료로 가능한 사항:**
- 내부 보안 스캐닝을 위해 DockerScan을 **무료로** 사용
- **CI/CD 파이프라인** 및 보안 워크플로우에서 사용
- **수정, 포크 및 커뮤니티에 기여**
- **교육 및 연구** 목적으로 사용
- **전문 서비스 도구**로 사용 (컨설팅, 보안 감사, 모의 침투)
- 다른 제품에 **통합** (부가 구성 요소로)

❌ **허용되지 않는 사항 (명시적 서면 허가 또는 상업 라이선스 없이):**
- **Docker 스캐닝을 상업용 SaaS로 제공**
- DockerScan의 **호스팅 인스턴스 판매**
- DockerScan을 기반으로 한 **상업 플랫폼 구축**
- DockerScan이 주요 제공 사항인 **유료 관리 서비스 생성**

### 이 라이선스의 이유

이 라이선스는 다음과 같은 방식으로 프로젝트의 지속 가능성을 보호합니다:
- ✅ 합법적인 목적으로 소프트웨어를 사용할 **자유** 부여
- ❌ 기여 없이 서비스로 제공하여 이익을 얻는 **유해한 무임승차** 방지
- 💰 경쟁적 사용에 대한 상업 라이선스를 통해 프로젝트의 **지속 가능성** 보장
- 🔓 투명성과 커뮤니티 기여를 위해 **소스 코드 공개** 유지

**이것은 오픈 소스가 아닙니다** - 상업적 경쟁 사용에 제한이 있는 **소스 제공** 라이선스입니다.

### 상업 라이선스

**필요한 경우:**
- SaaS 또는 호스팅 제공
- DockerScan을 주요 기능으로 사용하는 상업 플랫폼
- 상업 제품으로 재판매 또는 재배포
- DockerScan이 핵심 제공 사항인 관리 서비스

**상업 라이선스 문의:**

📧 Email: cr0hn [at] cr0hn.com
🌐 Website: https://cr0hn.com
💼 기업 및 스타트업을 위한 유연한 라이선스 조건 제공

전체 법적 조건은 [LICENSE](https://github.com/cr0hn/dockerscan/blob/HEAD/LICENSE) 파일을 참조하십시오.

---

## 👤 저자

<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)

**보안 연구원 | 오픈 소스 개발자 | Docker 보안 전문가**

</div>

---

## 🙏 감사의 말

특별히 감사드립니다:
- Docker 보안 커뮤니티
- Docker 벤치마크를 제공한 CIS
- SP 800-190을 제공한 NIST
- 2024년 공급망 공격을 발견한 보안 연구자들
- DockerScan의 모든 기여자와 사용자

---

## 📞 지원

- **이슈**: [GitHub Issues](https://github.com/cr0hn/dockerscan/issues)
- **토론**: [GitHub Discussions](https://github.com/cr0hn/dockerscan/discussions)
- **보안**: 취약점을 [email protected]으로 신고해 주세요.

---

<div align="center">

**⭐ DockerScan이 유용하다면 저장소에 별표를 눌러주세요! ⭐**

*모두를 위한 Docker 보안 접근성 향상*

[⬆ 맨 위로](#-dockerscan-v20)

</div>
도구 다운로드
기능v1.x (Python)v2.0 (Go)
언어Python 3.5+Go 1.21+
성능~500 이미지/시간~5000 이미지/시간
메모리 사용량200-500 MB50-100 MB
배포pip install + 종속성단일 바이너리
보안 스캐너2개 모듈5개 모듈
CIS Benchmark부분 지원전체 v1.7.0 (80개 이상 검사)
공급망❌ 사용 불가✅ 2024 연구 기반
시크릿 패턴10개 패턴40개 이상 패턴
CVE 탐지기본2024-2025 CVE
런타임 보안❌ 사용 불가✅ 전체 능력 감사
SARIF 출력❌ 사용 불가✅ 완전 지원
CI/CD 통합수동네이티브 (종료 코드, SARIF)
기능DockerScan v2.0TrivyClairSnykGrype
CIS 벤치마크 v1.7✅ 전체 (80+ 검사)❌❌부분❌
공급망 탐지 (2024)✅ 예❌❌❌❌
시크릿 스캐닝✅ 40+ 패턴기본❌✅❌
CVE 데이터베이스✅ 2024-2025 CVE✅✅✅✅
런타임 보안✅ 전체❌❌❌❌
SARIF 출력✅✅❌✅✅
속도 (Go)⚡ 매우 빠름⚡ 매우 빠름🐌 느림⚡ 빠름⚡ 매우 빠름
확장성✅ 플러그인 시스템제한적제한적❌제한적
종료 코드✅ CI/CD 준비✅부분✅✅
비용🆓 무료🆓 무료🆓 무료💰 유료 등급🆓 무료
오프라인 모드✅✅❌❌✅
라이선스독점 소스 제공Apache-2.0Apache-2.0독점Apache-2.0