📑 目录
🎯 概述
DockerScan v2.0 是一款面向 Docker 容器和镜像的下一代安全扫描器,完全用 Go 语言重写。它基于最新 2024-2025 年的研究成果、行业标准(CIS Benchmark、NIST SP 800-190)以及生产环境中发现的真实攻击模式,整合了多种安全扫描技术。
为什么选择 DockerScan v2.0?
- ✅ 最全面:在一个工具中整合 5 种以上安全扫描技术
- ✅ 最新研究:基于 2024-2025 年的供应链攻击和 CVE
- ✅ 生产就绪:支持 SARIF 输出用于 CI/CD,提供退出码用于自动化
- ✅ 极速:采用 Go 语言编写,支持并发扫描
- ✅ 可扩展:插件架构,支持自定义扫描器
- ✅ 免费开源:BSD-3 许可证
🌟 功能
🛡️ 安全扫描模块
1. CIS Docker 基准 v1.7.0
包含 80 多项自动化检查的完整合规性检测:
- ✅ 主机配置安全(13 项检查)
- ✅ Docker 守护进程加固(18 项检查)
- ✅ 文件和目录权限(9 项检查)
- ✅ 容器镜像最佳实践(13 项检查)
- ✅ 运行时安全验证(31 项以上检查)
- ✅ 安全操作合规性
2. 供应链攻击检测 🆕
基于真实的 2024 年攻击活动:
- ✅ 无层容器检测 - 识别没有实际层的恶意容器(在 Docker Hub 上发现超过 400 万个)
- ✅ 加密货币挖矿程序检测 - 检测挖矿恶意软件(发现超过 12 万次恶意镜像拉取)
- ✅ 后门库检测 - 捕获受污染的依赖(xz-utils、liblzma 事件)
- ✅ 镜像签名验证 - 使用 Notary/Cosign 验证签名
- ✅ 钓鱼内容检测 - 扫描文档中的社会工程学攻击
- ✅ 恶意网络目标 - 识别 C2 服务器、矿池、Tor 节点
3. 高级密钥检测 🔑
包含 40 多种密钥模式(2024 年更新):
- ✅ 云提供商: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:仓库认证令牌
- ✅ 熵分析:未知密钥的香农熵计算(阈值 > 4.5)
4. CVE 与漏洞扫描 🚨
关键 2024-2025 年 CVE 检测:
- ✅ CVE-2024-21626 - runc 容器逃逸(CVSS 8.6)
- ✅ CVE-2024-23651 - BuildKit 缓存中毒远程代码执行(CVSS 9.1)
- ✅ CVE-2024-23652 - BuildKit 竞态条件(CVSS 7.5)
- ✅ CVE-2024-23653 - BuildKit 权限提升
- ✅ CVE-2024-8695/8696 - Docker Desktop 远程代码执行(CVSS 8.8)
- ✅ CVE-2025-9074 - Docker Desktop 本地访问漏洞
- ✅ 生命周期终止的基础镜像检测
- ✅ 已知易受攻击的软件包扫描
5. 运行时安全分析 ⚙️
容器运行时加固检查:
- ✅ Linux 能力审计 - 检测危险能力(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 基准 | 部分 | 完整 v1.7.0(80 项以上检查) |
| 供应链 | ❌ 不支持 | ✅ 基于 2024 年研究 |
| 密钥模式 | 10 种模式 | 40 种以上模式 |
| CVE 检测 | 基础 | 2024-2025 年 CVE |
| 运行时安全 | ❌ 不支持 | ✅ 完整能力审计 |
| SARIF 输出 | ❌ 不支持 | ✅ 完全支持 |
| CI/CD 集成 | 手动 | 原生(退出码、SARIF) |
v1.x 保留的功能
- ✅ 攻击性工具 - 镜像木马化功能(即将在 v2.1 中推出)
- ✅ 仓库操作 - 推送、拉取、删除操作(即将在 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/
Windows (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
Or build manually
go build -o bin/dockerscan ./cmd/dockerscan
### 选项三:Go 安装```bash
go install github.com/cr0hn/dockerscan/v2/cmd/dockerscan@latest
🚀 快速开始
首次设置
在扫描之前,下载CVE数据库(每日更新,压缩后约30MB):```bash
Download latest CVE database from GitHub
dockerscan update-db
> **提示**: 数据库每天通过 GitHub Actions 更新。请定期运行 `update-db` 以获取最新的 CVE 数据。
### 基本扫描```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