Skip to main content

Übersicht

  • Funktion: Container-Image-Scanning erkennt bekannte Schwachstellen in den von Ihrem Projekt verwendeten Container-Images. Dazu gehören Schwachstellen in Paketen des Basisbetriebssystems, Systembibliotheken und Anwendungspaketen in den Image-Layern. Wenn Sie Images vor dem Deployment scannen, erkennen Sie Sicherheitsrisiken in containerisierten Anwendungen frühzeitig.
  • Zielgruppe: Security-Teams, Entwickler und DevOps Engineers, die containerisierte Anwendungen bereitstellen und die aus Basis-Images übernommenen Schwachstellen nachvollziehen möchten.

So funktioniert es

Corgea erkennt automatisch die in Ihrem Projekt referenzierten Container-Images und gleicht jedes Image mit bekannten Schwachstellendatenbanken ab.
1

Erkennung von Images

Corgea durchsucht Ihr Projekt nach Dockerfile- und Docker-Compose-Dateien und extrahiert die darin enthaltenen Image-Referenzen:
  • Dockerfiles: Basis-Images, die mit FROM deklariert sind (zum Beispiel FROM python:3.11-slim)
  • Docker Compose: Images, die für jeden Service unter image: deklariert sind (zum Beispiel image: postgres:15)
Doppelte Images werden zusammengeführt und der jeweils referenzierenden Datei zugeordnet.
2

Image-Analyse

Jedes Image wird abgerufen und seine Layer werden analysiert, um ein Inventar der installierten Software zu erstellen. Dazu gehören Betriebssystem- und Distributionspakete (Debian, Ubuntu, Alpine und weitere) sowie im Image installierte Anwendungspakete.
3

Abgleich von Schwachstellen

Die entdeckten Pakete werden gegen bekannte Schwachstellendatenbanken abgeglichen, und alle Übereinstimmungen werden zusammen mit Ihren anderen Scan-Ergebnissen gemeldet.

Ein vollständig gebautes Image scannen

Der oben beschriebene Erkennungsablauf scannt die Basis-Images, die Ihr Projekt referenziert. Um stattdessen ein vollständig gebautes Image zu scannen – etwa eines, das Sie gerade in der CI gebaut haben und das nie in eine Registry gepusht wurde –, übergeben Sie es der CLI mit --include-image:
Ihre lokale Container-Engine (docker oder podman) exportiert das Image, und die CLI lädt es mit Ihrem Projekt hoch. Das Image wird damit genau so gescannt, wie es ausgeliefert wird. Wenn Sie --include-image verwenden, scannt Corgea die übergebenen Images, anstatt Basis-Images aus Ihrem Quellcode zu ermitteln. --include-image wird nur vom BLAST-Scanner unterstützt. Container-Scanning muss für Ihr Konto aktiviert sein. Das vollständige Verhalten der Option beschreibt Container-Images scannen in der CLI-Referenz.

Befunde über Scans hinweg verfolgen

Corgea verfolgt einen Container-Befund anhand von Image, Paket und Schwachstellenhinweis. Triage-Entscheidungen bleiben bei Änderungen der Paketversion erhalten, während unterschiedliche Pakete, die vom selben Hinweis betroffen sind, getrennte Befunde bleiben.

Unterstützte Registries

Corgea scannt Images, die in öffentlichen Registries gehostet werden:
  • Docker Hub
  • GitHub Container Registry (GHCR)
  • Google Container Registry (GCR)
  • Quay.io
  • Microsoft Container Registry (MCR)
  • Amazon ECR Public
  • GitLab Container Registry
Die automatische Image-Erkennung wird aktiviert, sobald Corgea Docker-Dateien in Ihrem Projekt erkennt, und benötigt keine Konfiguration. Für das Scannen eines vollständig gebauten Images mit --include-image muss Container-Scanning für Ihr Konto aktiviert sein.

Einschränkungen

Diese Grenzen gelten für Images, die Corgea selbst erkennt und pullt:
  • Nur öffentliche Registries: Images in privaten Registries werden übersprungen. Um ein privates Image zu scannen, pullen oder bauen Sie es auf Ihrem eigenen Runner und übergeben es mit --include-image. Das Image wird dann aus Ihrer Container-Engine hochgeladen, anstatt dass Corgea es abruft.
  • Maximale Image-Größe: Images über 1000 MB (1 GB) werden übersprungen.
  • Es werden nur Images erkannt, die in Dockerfile- oder Docker-Compose-Dateien referenziert sind. Mit --include-image scannen Sie ein Image, das in keiner der beiden Dateien vorkommt.

Best Practices

Verwenden Sie spezifische Image-Tags (zum Beispiel python:3.11.5-slim) anstelle von latest für konsistente, reproduzierbare Scannergebnisse.
  • Spezifische Tags verwenden: Vermeiden Sie latest-Tags; fixieren Sie genaue Versionen, damit Scans reproduzierbar sind.
  • Minimale Basis-Images bevorzugen: Verwenden Sie Slim-, Alpine- oder Distroless-Varianten, um die Angriffsfläche zu reduzieren.
  • Regelmäßige Updates: Halten Sie Basis-Images auf dem neuesten Stand, um Sicherheitsupdates zu übernehmen.
  • Multi-Stage-Builds: Minimieren Sie die Größe des finalen Images und die Anzahl der enthaltenen Pakete.

Verwandt