📑 목차
🎯 개요
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 (Python) | v2.0 (Go) |
|---|
| 언어 | Python 3.5+ | Go 1.21+ |
| 성능 | ~500 이미지/시간 | ~5000 이미지/시간 |
| 메모리 사용량 | 200-500 MB | 50-100 MB |
| 배포 | pip install + 종속성 | 단일 바이너리 |
| 보안 스캐너 | 2개 모듈 | 5개 모듈 |
| CIS Benchmark | 부분 지원 | 전체 v1.7.0 (80개 이상 검사) |
| 공급망 | ❌ 사용 불가 | ✅ 2024 연구 기반 |
| 시크릿 패턴 | 10개 패턴 | 40개 이상 패턴 |
| CVE 탐지 | 기본 | 2024-2025 CVE |
| 런타임 보안 | ❌ 사용 불가 | ✅ 전체 능력 감사 |
| SARIF 출력 | ❌ 사용 불가 | ✅ 완전 지원 |
| CI/CD 통합 | 수동 | 네이티브 (종료 코드, SARIF) |
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 파이프라인을 위한 배너 출력 억제
- 🧹 거짓 긍정 감소 - 엔트로피 필터링으로 시크릿 탐지 개선
재작성 이유
- 성능 - Go는 고루틴을 통해 10배 빠른 스캐닝 제공
- 최신 위협 - 2024-2025 공격 패턴 통합
- 엔터프라이즈 준비 - SARIF 출력, 종료 코드, 단일 바이너리 배포
- 확장성 - 사용자 정의 스캐너를 위한 깔끔한 플러그인 아키텍처
- 유지보수성 - 타입 안전성, 더 나은 오류 처리, 기여 용이성
📦 설치
옵션 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/
#### 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/
윈도우 (PowerShell)```powershell
Invoke-WebRequest -Uri "https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-windows-amd64.exe" -OutFile "dockerscan.exe"
#### 다운로드 확인 (선택 사항이지만 권장됨)```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