العودة إلى التحديثات
New releaseJul 20, 2026

dockerscan v2.1.0

أكثر ماسح أمان لـ Docker شمولية

مشاركة

📑 جدول المحتويات


🎯 نظرة عامة

DockerScan v2.0 هو ماسح أمان من الجيل التالي لحاويات وصور Docker، أعيدت كتابته بالكامل بلغة Go. يجمع بين تقنيات متعددة لفحص الأمان بناءً على أحدث الأبحاث في 2024-2025 والمعايير الصناعية (CIS Benchmark, NIST SP 800-190) وأنماط الهجمات الحقيقية المكتشفة في بيئات الإنتاج.

لماذا DockerScan v2.0؟

  • الأكثر شمولاً: يجمع أكثر من 5 تقنيات لفحص الأمان في أداة واحدة
  • أحدث الأبحاث: يعتمد على هجمات سلسلة التوريد و CVEs لعام 2024-2025
  • جاهز للإنتاج: مخرجات SARIF للتكامل المستمر (CI/CD) ورموز الخروج للأتمتة
  • سريع للغاية: مكتوب بلغة Go مع فحص متزامن
  • قابل للتوسيع: هيكل إضافي لماسحات مخصصة
  • مجاني ومفتوح المصدر: ترخيص BSD-3

🌟 الميزات

🛡️ وحدات فحص الأمان

1. CIS Docker Benchmark v1.7.0

فحص امتثال كامل بأكثر من 80 ضابطًا آليًا:

  • ✅ أمان تكوين المضيف (13 فحصًا)
  • ✅ تعزيز خادم Docker (18 فحصًا)
  • ✅ صلاحيات الملفات والدلائل (9 فحوصات)
  • ✅ أفضل ممارسات صور الحاويات (13 فحصًا)
  • ✅ التحقق من أمان وقت التشغيل (31+ فحصًا)
  • ✅ الامتثال لعمليات الأمان

2. كشف هجمات سلسلة التوريد 🆕

بناءً على حملات هجمات حقيقية لعام 2024:

  • كشف الحاويات بدون صور - تحديد الحاويات الضارة بدون طبقات فعلية (تم العثور على 4 ملايين+ على Docker Hub)
  • كشف عملات التعدين الخبيثة - كشف برامج التعدين الضارة (تم اكتشاف أكثر من 120 ألف سحب صورة ضارة)
  • كشف المكتبات المخترقة - التعرف على التبعيات المخترقة (حوادث xz-utils, liblzma)
  • التحقق من توقيع الصور - التحقق من التوقيعات باستخدام Notary/Cosign
  • كشف المحتوى التصيدي - فحص التوثيق بحثًا عن الهندسة الاجتماعية
  • وجهات الشبكة الخبيثة - التعرف على خوادم القيادة والتحكم (C2) ومجموعات التعدين وعُقد Tor

3. كشف الأسرار المتقدم 🔑

أكثر من 40 نمطًا للأسرار بما في ذلك واجهات برمجة التطبيقات الحديثة (تحديث 2024):

  • مزوّدو الخدمات السحابية: بيانات اعتماد AWS، GCP، Azure
  • أنظمة التحكم بالإصدارات: رموز GitHub، GitLab، Bitbucket
  • واجهات الذكاء الاصطناعي/التعلم الآلي: مفاتيح 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-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
  • واجهة سطر أوامر جميلة - مستويات خطورة ملونة بالرموز التعبيرية
  • رموز الخروج - متوافقة مع CI/CD (0=نظيف، 1=تحذيرات، 2=حرج)

🚀 الأداء

  • أسرع بـ10 مرات من بدائل Python
  • 🔄 فحص متزامن باستخدام goroutines في 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 MB50-100 MB
التوزيعpip install + تبعياتملف ثنائي واحد
ماسحات الأمانوحدتان5 وحدات
CIS Benchmarkجزئيكامل v1.7.0 (أكثر من 80 فحصًا)
سلسلة التوريد❌ غير متوفرة✅ بناءً على أبحاث 2024
أنماط الأسرار10 أنماطأكثر من 40 نمطًا
كشف CVEأساسيCVEs لعام 2024-2025
أمان وقت التشغيل❌ غير متوفرة✅ مراجعة كاملة للقدرات
مخرجات 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)، علامات سطر الأوامر (اختبار)، ملف تكوين Docker (سلس)
  • 🎯 أولوية المصادقة الذكية - علامات سطر الأوامر > متغيرات البيئة > تكوين Docker (اختيار تلقائي)
  • 📝 رسائل خطأ محسّنة - تلميحات خاصة بالسجل (انتهاء صلاحية رمز ECR، حدود المعدل، الشهادات)
  • 🧪 اختبارات شاملة - 64 حالة اختبار، 91.2% تغطية، تم اختباره مع سجل خاص حقيقي
  • 📚 توثيق كامل - أمثلة لجميع السجلات السحابية الرئيسية وطرق المصادقة

الجديد في v2.0.4

  • 🗄️ تكامل قاعدة بيانات CVE - قاعدة بيانات SQLite محلية مع بيانات NVD (2.5 سنة من CVEs)
  • 🔄 تحديثات تلقائية يومية - إجراء GitHub Action يحدّث قاعدة بيانات CVE كل يوم
  • تنزيلات CVE متوازية - 4 عمال لبناء قواعد البيانات بشكل أسرع (nvd2sqlite)
  • 🔁 إعادة المحاولة مع التباطؤ - إعادة محاولة تلقائية لطلبات NVD المقيدة بالمعدل
  • 📦 علامة --from-file - تثبيت قاعدة بيانات CVE من ملف محلي (وضع عدم الاتصال/الهواء المغلق)
  • 🔇 الوضع الصامت (-q) - إخفاء الشعار لخطوط أنابيب CI/CD
  • 🧹 تقليل النتائج الإيجابية الخاطئة - تحسين كشف الأسرار مع تصفية الإنتروبيا

لماذا إعادة الكتابة؟

  1. الأداء - توفر Go فحصًا أسرع بـ10 مرات باستخدام goroutines
  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 (تُحدَّث يوميًا، حوالي 30 ميجابايت مضغوطة):```bash

Download latest CVE database from GitHub

dockerscan update-db

> **نصيحة**: يتم تحديث قاعدة البيانات يوميًا عبر إجراءات GitHub. قم بتشغيل `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

# 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 ثلاث طرق للمصادقة مع السجلات الخاصة:

#### الطريقة 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 — مساعد بيانات الاعتماد العام (مثل osxkeychain على macOS مع Docker Desktop، و wincred على Windows، و pass على Linux)
  • credHelpers — مساعدات بيانات الاعتماد لكل سجل (تأخذ الأولوية على credsStore)
  • التراجع التلقائي — إذا لم يتم تثبيت المساعد الثنائي المحدد، يتراجع DockerScan إلى كتلة auths النصية العادية في config.json

على macOS مع Docker Desktop، يعمل هذا مباشرة دون أي تكوين إضافي:```json { "credsStore": "osxkeychain" }

DockerScan سوف يستدعي `docker-credential-osxkeychain` بشكل شفاف لاسترداد الرموز المميزة، لذا لن تحتاج أبدًا إلى تمرير بيانات الاعتماد بشكل صريح.

#### الطريقة الثانية: متغيرات البيئة (موصى بها لـ 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 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 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

#### 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= export DOCKER_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

السجلات المستضافة ذاتيًا / الخاصة```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. خطأ "مطلوب المصادقة"**```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"

  • تحقق من صحة بيانات اعتمادك
  • تحقق مما إذا كانت صلاحية رمزك قد انتهت (خاصة لمزودي الخدمات السحابية)
  • تأكد من أن حسابك لديه أذونات pull للصورة

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**
- المصادقة لزيادة حدود المعدل (200 سحب/6 ساعات للحسابات المجانية)
- فكر في استخدام حساب Docker Hub Pro للحصول على حدود أعلى

**5. أخطاء الشهادة مع الشهادات الموقعة ذاتيًا**
- أضف شهادة CA إلى مخزن الثقة في نظامك
- أو قم بتكوين Docker للثقة في السجل (انظر وثائق Docker)

---

## 🔍 ماسحات الأمان

### CIS Docker Benchmark

فحص الامتثال التلقائي مقابل CIS Docker Benchmark v1.7.0:```bash
dockerscan --scanners cis nginx:latest

تشمل الفحوصات:

  • مستخدم الحاوية ليس root
  • عدم وجود حزم غير ضرورية مثبتة
  • وجود تعليمة HEALTHCHECK
  • إصدارات محددة (وليس :latest)
  • الحد الأدنى من المنافذ المكشوفة
  • عدم وجود حاويات مميزة (privileged)
  • تقييد إمكانيات Linux
  • تطبيق ملفات تعريف Seccomp/AppArmor
  • نظام ملفات الجذر للقراءة فقط
  • وأكثر من 70 فحصًا آخر...

أمان سلسلة التوريد

اكتشف هجمات سلسلة التوريد الواقعية:```bash dockerscan --scanners supplychain suspicious-image:1.0

يكتشف:
- حاويات بدون صور (هجمات تعتمد على التوثيق فقط)
- عمال منجم العملات الرقمية (xmrig, claymore, إلخ)
- مكتبات بها باب خلفي (حالة xz-utils)
- صور غير موقعة/غير موثقة
- محاولات تصيد في الوثائق
- اتصالات بمجمعات التعدين، خوادم القيادة والتحكم

### كشف الأسرار

ابحث عن الأسرار المضمنة في الكود:```bash
dockerscan --scanners secrets webapp:prod

اكتشافات:

  • بيانات اعتماد السحابة (AWS, GCP, Azure)
  • مفاتيح API (أكثر من 40 خدمة)
  • المفاتيح الخاصة والشهادات
  • بيانات اعتماد قاعدة البيانات
  • مصادقة سجل Docker
  • سلاسل عالية الإنتروبيا (أسرار محتملة غير معروفة)

فحص الثغرات الأمنية

اكتشف CVEs المعروفة:```bash dockerscan --scanners vulnerabilities node:16

يتحقق من:
- ثغرات Docker الحرجة (2024-2025)
- ثغرات الهروب من الحاوية
- ثغرات تنفيذ الأوامر عن بُعد في BuildKit
- صور أساسية منتهية الصلاحية
- الحزم المعرضة للخطر

### أمان وقت التشغيل

مراجعة إعدادات وقت التشغيل:```bash
dockerscan --scanners runtime running-container

يحلل:

  • قدرات Linux (مثل CAP_SYS_ADMIN، إلخ.)
  • ملفات تعريف Seccomp
  • سياسات AppArmor/SELinux
  • عزل Namespace
  • استخدام الوضع المميز

📁 تنسيقات الإخراج

إخراج 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

متوافق مع 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

📊 مقارنة مع الأدوات الأخرى

الميزةDockerScan v2.0TrivyClairSnykGrype
معيار CIS الإصدار 1.7✅ كامل (أكثر من 80 فحصًا)جزئي
كشف سلسلة التوريد (2024)✅ نعم
فحص الأسرار✅ أكثر من 40 نمطًاأساسي
قاعدة بيانات الثغرات✅ ثغرات 2024-2025
أمان وقت التشغيل✅ كامل
مخرجات SARIF
السرعة (Go)⚡ سريع جدًا⚡ سريع جدًا🐌 بطيء⚡ سريع⚡ سريع جدًا
قابلية التوسع✅ نظام إضافاتمحدودمحدودمحدود
رموز الخروج✅ جاهز للتكامل المستمرجزئي
التكلفة🆓 مجاني🆓 مجاني🆓 مجاني💰 مستويات مدفوعة🆓 مجاني
وضع عدم الاتصال
الترخيصخاص – متاح المصدرApache-2.0Apache-2.0خاصApache-2.0

لماذا تختار DockerScan؟

  • الأشمل: الأداة الوحيدة التي تجمع معيار CIS + سلسلة التوريد + الأسرار + الثغرات + وقت التشغيل
  • أحدث الأبحاث: مرتكزة على هجمات العالم الحقيقي 2024-2025
  • بدون أي تهيئة: تعمل فورًا
  • صديقة للمطورين: واجهة سطر أوامر جميلة مع إصلاحات قابلة للتنفيذ
  • جاهزة للمؤسسات: 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

### قاعدة بيانات CVE وأداة nvd2sqlite

يستخدم DockerScan قاعدة بيانات SQLite محلية للبحث عن CVEs. يتم **تحديث قاعدة البيانات تلقائياً يومياً** عبر GitHub Actions واستضافتها في المستودع، بحيث يكون لديك دائماً إمكانية الوصول إلى أحدث بيانات CVE.

#### ميزات قاعدة البيانات

- 🗄️ **قاعدة بيانات جاهزة** - جاهزة للاستخدام، لا حاجة لإعداد يدوي
- 🔄 **تحديثات يومية** - يقوم GitHub Action بتحديث قاعدة البيانات يومياً عند الساعة 00:00 UTC
- 📅 **2.5 سنة من بيانات CVE** - تغطي CVEs من منتصف 2022 حتى الآن
- ⚡ **بحث سريع** - 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)

للمستخدمين المتقدمين، يمكنك بناء قاعدة بيانات CVE من NVD مباشرة:```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

**ميزات 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

### إضافة ماسحات ضوئية جديدة

نرحب بشكل خاص بـ:
- التكامل مع قواعد بيانات الثغرات (NVD، إشعارات أمان GitHub)
- فحص أمان Kubernetes
- أمان سجل الحاويات
- تحليل أمان Docker Compose
- فحص البنية التحتية كرمز (IaC) (ملفات Dockerfiles)

---

## 📚 المراجع

### المعايير والمقاييس

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

### الأبحاث و CVEs

- [4M Malicious Imageless Containers](https://thehackernews.com/2024/04/millions-of-malicious-imageless.html) - The Hacker News, أبريل 2024
- [Supply Chain Attacks Using Container Images](https://www.aquasec.com/blog/supply-chain-threats-using-container-images/) - Aqua Security
- [CVE-2024-21626: runc Container Escape](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 Backdoor (March 2024)](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
- CIS على معيار Docker Benchmark
- NIST على SP 800-190
- الباحثين الأمنيين الذين اكتشفوا هجمات سلسلة التوريد لعام 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>

الفئات