Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
dockerscan — 最も包括的なDockerセキュリティスキャナー | Kitploit
ツール/GitHubGitHub/cr0hn/dockerscan
脆弱性スキャナーコンテナセキュリティ構成監査クラウドセキュリティDevSecOpsシークレット検出サプライチェーンセキュリティ
GitHubcr0hn/dockerscan

dockerscan

最も包括的なDockerセキュリティスキャナー

リポジトリを見る
1.7k2475113時間35分前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
<div align="center">

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

# DockerScan v2.0

### *最も包括的なDockerセキュリティスキャナー*

[![License](https://img.shields.io/badge/license-Proprietary-blue.svg)](LICENSE)
[![Go Version](https://img.shields.io/badge/go-1.21+-00ADD8.svg?logo=go)](https://golang.org/)
[![Version](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)
[![Test Coverage](https://img.shields.io/badge/coverage-92%25-brightgreen.svg)](https://github.com/cr0hn/dockerscan)
[![Go Report Card](https://img.shields.io/badge/go%20report-A+-brightgreen.svg)](https://goreportcard.com/report/github.com/cr0hn/dockerscan)
[![Downloads](https://img.shields.io/github/downloads/cr0hn/dockerscan/total.svg)](https://github.com/cr0hn/dockerscan/releases)

**著者: [Daniel Garcia (cr0hn)](https://cr0hn.com)** | [GitHub](https://github.com/cr0hn/dockerscan) | [Webサイト](https://cr0hn.com)

---

[機能](#-features) •
[インストール](#-installation) •
[クイックスタート](#-quick-start) •
[ドキュメント](#-documentation) •
[ユースケース](#-use-cases) •
[新機能](#-whats-new-in-v20) •
[コントリビューション](#-contributing)

</div>

---

## 📑 目次

- [概要](#-overview)
- [機能](#-features)
- [v2.0の新機能](#-whats-new-in-v20)
- [インストール](#-installation)
- [クイックスタート](#-quick-start)
- [使用方法](#-usage)
  - [プライベートレジストリ認証](#-private-registry-authentication)
- [セキュリティスキャナー](#-security-scanners)
- [出力形式](#-output-formats)
- [ユースケース](#-use-cases)
- [比較](#-comparison-with-other-tools)
- [アーキテクチャ](#-architecture)
- [コントリビューション](#-contributing)
- [参考文献](#-references)
- [ライセンス](#-license)
- [著者](#-author)

---

## 🎯 概要

**DockerScan v2.0** は、Dockerコンテナとイメージ向けの次世代セキュリティスキャナーで、Goで完全に書き直されました。これは、最新の2024〜2025年の研究、業界標準(CIS Benchmark、NIST SP 800-190)、および本番環境で発見された実際の攻撃パターンに基づいた、複数のセキュリティスキャン技術を組み合わせています。

### DockerScan v2.0を選ぶ理由

- ✅ **最も包括的**:1つのツールで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を含む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キャッシュポイズニング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ローカルアクセス脆弱性
- ✅ サポート終了(EOL)ベースイメージの検出
- ✅ 既知の脆弱性パッケージのスキャン

#### 5. **ランタイムセキュリティ分析** ⚙️
コンテナランタイムの堅牢化チェック:
- ✅ **Linuxケイパビリティ監査** - 危険なケイパビリティ(CAP_SYS_ADMIN、CAP_NET_ADMINなど)を検出
- ✅ **Seccompプロファイル検証** - システムコールフィルタリングが有効であることを確認
- ✅ **AppArmor/SELinuxチェック** - 強制アクセス制御の検証
- ✅ **特権コンテナ検出** - ホストへのフルアクセスを持つコンテナを特定
- ✅ **名前空間分離** - PID、IPC、ネットワーク、ユーザー名前空間のチェック
- ✅ **コンテナエスケープ兆候** - 一般的なエスケープ手法を検出

### 📊 **レポートと統合**

- **JSON** - 自動化のための機械可読出力
- **SARIF** - ネイティブ統合:
  - GitHub Securityタブ
  - Azure DevOps
  - VS Code拡張機能
  - GitLabセキュリティダッシュボード
- **美しいCLI** - 絵文字付きの色分けされた重大度レベル
- **終了コード** - CI/CDフレンドリー(0=クリーン、1=警告、2=クリティカル)

### 🚀 **パフォーマンス**

- ⚡ **Python製の代替品より10倍高速**
- 🔄 **Goのgoroutineによる同時スキャン**
- 💾 **低メモリ消費**(〜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で近日公開予定)
- ✅ **レジストリ操作** - プッシュ、プル、削除操作(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はgoroutineにより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/
```
#### 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
```
### オプション 3: 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により毎日更新されています。最新の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
```
---

## 📖 使い方

### コマンドラインオプション```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
```
### 🔐 プライベートレジストリ認証

DockerScanはプライベートレジストリへの認証に3つの方法をサポートしています:

#### 方法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"
}
```
DockerScanは透過的に`docker-credential-osxkeychain`を呼び出してトークンを取得するため、資格情報を明示的に渡す必要はありません。

#### 方法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 }}
```
#### 方法3: コマンドラインフラグ (非推奨)

簡単なテスト専用です(プロセスリストに認証情報が表示されます):```bash
dockerscan --registry-user myuser --registry-password mytoken ghcr.io/myorg/app:v1
```
**セキュリティ警告:** この方法では、シェルの履歴やプロセス一覧に認証情報が露出します。代わりに環境変数またはDocker configを使用してください。

### レジストリ固有の例

#### 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
```
#### 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 コンテナー レジストリ (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 コンテナレジストリ```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"]
# }
```
### 認証のトラブルシューティング

#### よくある問題

**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
```
**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以上のチェック...

### Supply Chain Security

実際のサプライチェーン攻撃を検出:```bash
dockerscan --scanners supplychain suspicious-image:1.0
```
検出:
- イメージなしコンテナ(ドキュメントのみの攻撃)
- 暗号通貨マイナー(xmrig、claymoreなど)
- バックドア化されたライブラリ(xz-utilsのケース)
- 署名なし/未検証のイメージ
- ドキュメント内のフィッシング試行
- マイニングプール、C2サーバーへの接続

### シークレット検出

ハードコードされたシークレットを見つける:```bash
dockerscan --scanners secrets webapp:prod
```
検出:
- クラウド認証情報(AWS、GCP、Azure)
- APIキー(40以上のサービス)
- 秘密鍵と証明書
- データベース認証情報
- Dockerレジストリ認証
- 高エントロピー文字列(潜在的な未知のシークレット)

### 脆弱性スキャン

既知のCVEを検出:```bash
dockerscan --scanners vulnerabilities node:16
```
チェック対象:
- 重大なDocker CVE(2024-2025年)
- コンテナエスケープ脆弱性
- BuildKit RCE脆弱性
- サポート終了ベースイメージ
- 脆弱なパッケージ

### 実行時セキュリティ

実行時設定を監査する:```bash
dockerscan --scanners runtime running-container
```
分析:
- Linux ケーパビリティ (CAP_SYS_ADMIN など)
- Seccomp プロファイル
- AppArmor/SELinux ポリシー
- 名前空間の分離
- 特権モードの使用

---

## 📁 出力形式

### 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 出力

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

      - 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. **セキュリティ監査**```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. **デプロイ前の検証**```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/
```
### 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
```
---

## 📊 他のツールとの比較

---

[Read more](https://github.com/cr0hn/dockerscan)
ツールをダウンロード