>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Go

Docker-Container-Sicherheit prüfen ohne额外 Aufwand

DockerScan Logo

Kürzlich fanden Sicherheitsforscher über vier Millionen leere Placeholder-Container und Hunderttausende Images mit versteckten Krypto-Minern auf Docker Hub. Wir haben uns daran gewöhnt, Base-Images oder Drittanbieter-Abhängigkeiten mit einem einzigen docker pull-Befehl herunterzuladen, ohne darüber nachzudenken, was in den Layern verborgen sein könnte – nicht nur ein verwundbares Paket, sondern ein eingebetteter Access-Token für die Infrastruktur eines anderen oder ein Sandbox-Escape-Skript.

Für das Scannen von Images greifen die meisten zu Trivy, Grype oder Clair. Diese finden zuverlässig bekannte CVEs in Systempaketen, übersehen aber oft subtile Dinge wie schlechte Runtime-Konfiguration, durchgesickerte API-Keys und neue Angriffsvektoren, die auf Supply Chains abzielen.

Das dockerscan-Projekt von Daniel Garcia (cr0hn), einem spanischen Sicherheitsforscher, löst dieses Problem mit umfassendem Auditing. Die erste Version des Tools wurde 2017 in Python geschrieben und lief langsam, aber in der zweiten Version hat der Autor die Engine komplett in Go neu geschrieben, die Geschwindigkeit verzehnfacht und Schwachstellen-Scanning, Secret-Erkennung und Konfigurations-Auditing in einer einzigen Binary vereint.

Was steckt im neuen DockerScan

Statt drei verschiedene Utilities sequenziell zum Prüfen von Images auszuführen, führt dockerscan umfassende Diagnosen über mehrere Bereiche gleichzeitig durch.

Das Tool kombiniert fünf Analysemodule:

  • CIS Docker Benchmark v1.7.0. Prüft über 80 Sicherheitsparameter, einschließlich Root-Ausführung, unnötiger offener Ports, fehlender HEALTHCHECK-Direktive und korrekter System-Dateiberechtigungen.
  • Supply-Chain-Angriff-Detektor. Sucht nach Spuren beliebter Kampagnen der letzten Jahre: versteckte Miner (wie xmrig), Backdoors in Systembibliotheken (nach dem xz-utils-Vorfall), Phishing-Texte und Container ohne echte Layer.
  • Erkennung eingebetteter Secrets. Erkennt über 40 Key- und Token-Formate (AWS, GCP, OpenAI, Stripe, private SSH-Keys, Datenbank-Verbindungsstrings). Unbekannte Tokens werden durch Shannon-Entropie-Berechnung mit einem Schwellenwert über 4,5 erkannt.
  • CVE-Schwachstellendatenbank. Verfolgt gefährliche Container-Escape-Schwachstellen (CVE-2024-21626 in runc), BuildKit-Probleme und veraltete Base-Images. Die Datenbank wird aus dem offiziellen MITRE cvelistV5-Snapshot kompiliert, sodass das Tool keine NVD-API-Limits erreicht.
  • Runtime-Sicherheits-Auditing. Prüft gefährliche Linux-Capabilities (zum Beispiel CAP_SYS_ADMIN), Seccomp- und AppArmor-Profile sowie Namespace-Isolations-Flags.

In Version 2.1.0 hat der Autor einen wichtigen Bug in früheren v2.0.x-Builds behoben, der dazu führte, dass das Paket-Schwachstellen-Scanning stillschweigend null Ergebnisse zurückgab. Jetzt folgt die Paketversions-Abgleichung den dpkg-Regeln unter Berücksichtigung von Distribution-Backports.

Schneller Start und Durchführung von Prüfungen

Das Utility wird als gebrauchsfertige Binary für Linux, macOS und Windows verteilt. Keine Abhängigkeiten zum Herunterladen.

Die Installation auf Linux amd64 dauert drei Zeilen:

curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-linux-amd64 -o dockerscan
chmod +x dockerscan
sudo mv dockerscan /usr/local/bin/

Vor dem ersten Lauf die lokale CVE-Datenbank herunterladen:

dockerscan update-db

Die Datenbank wird täglich über GitHub Actions aktualisiert und wiegt komprimiert etwa 30 MB. Danach können Sie den Scanner auf jedes lokale oder Remote-Image ansetzen:

dockerscan nginx:latest

Wenn Sie nur an bestimmten Prüfungen interessiert sind, zum Beispiel Secret-Erkennung und CIS-Benchmark-Compliance, können Sie die Module mit dem --scanners-Flag einschränken:

dockerscan --scanners cis,secrets ubuntu:22.04

Für Automatisierungsskripte eignen sich der Quiet-Modus -q und die Severity-Filterung:

dockerscan -q --only-critical my-app:prod

Arbeit mit privaten Registries

Ein häufiges Problem vieler Scanner ist die umständliche Authentifizierung mit privaten Repositories. Dockerscan unterstützt alle gängigen Szenarien: Docker Hub, GHCR, AWS ECR, Google Artifact Registry, Azure ACR und GitLab.

Wenn Sie bereits über docker login authentifiziert sind, zieht das Utility automatisch Tokens aus ~/.docker/config.json. Es unterstützt auch System-Credential-Helper (osxkeychain unter macOS, wincred unter Windows und pass unter Linux).

Für CI/CD-Pipelines ist es praktischer, Credentials über Umgebungsvariablen zu übergeben:

export DOCKER_USERNAME=ci-bot
export DOCKER_PASSWORD=ghp_secret_token_here
dockerscan ghcr.io/my-org/private-service:v1.2.0

Das Utility gibt klare Exit-Codes zurück: 0 für einen sauberen Bericht, 1 wenn High-Level-Probleme gefunden wurden, und 2 wenn kritische Schwachstellen erkannt wurden. Dies ermöglicht das sofortige Stoppen des Pipeline-Builds beim Finden eines gefährlichen Bugs.

Integration in CI/CD und Reporting

Dockerscan-Ergebnisse werden im JSON- und SARIF-Format gespeichert. Das SARIF-Format wird nativ von GitHub Security, GitLab und Azure DevOps verstanden, sodass gefundene Probleme sofort in der Pull-Request-Oberfläche angezeigt werden.

Beispiel-Step für GitHub Actions:

name: Security Scan
  run: |
    ./dockerscan update-db
    ./dockerscan -q myapp:${{ github.sha }}

name: Upload SARIF report
  uses: github/codeql-action/upload-sarif@v2
  if: always()
  with:
    sarif_file: dockerscan-report.sarif

Lizenz und Einschränkungen

Die Projektlizenz verdient besondere Aufmerksamkeit. Der Autor wählte ein Source-Available-Modell. Der Quellcode ist vollständig offen, das Utility kann kostenlos für interne Unternehmenszwecke, in persönlichen CI/CD-Pipelines und bei Audits und Pentests verwendet werden. Nur eines ist verboten: dockerscan in einen kommerziellen SaaS zu verpacken und als bezahlten Cloud-Scanning-Service ohne Genehmigung des Autors zu verkaufen.

Lohnt sich der Umstieg auf DockerScan

Wenn Sie schnelle statische Analyse von Images in Kombination mit Container-Berechtigungsprüfungen und Erkennung durchgesickerter Tokens benötigen, deckt dockerscan all diese Aufgaben mit einem einzigen Befehl ab. Das Utility verbraucht etwa 50-100 MB RAM und läuft spürbar schneller als alte Python-Lösungen.

Das Tool eignet sich hervorragend für DevOps-Ingenieure und Sicherheitsspezialisten für regelmäßige Production-Image-Audits und das Hinzufügen strenger Prüfungen zu Deployment-Pipelines. Der beste Weg zu starten ist, es gegen ein paar eigene aktive Container laufen zu lassen, um die echte Anzahl versteckter CIS-Benchmark-Warnungen zu sehen.

Ähnliche Projekte