GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So finden Sie Schwachstellen in Containern und Dateien mit Grype

Grype ist ein Open-Source-Schwachstellenscanner, der Schwachstellen in Container-Images und Dateisystemverzeichnissen findet. Grype wurde von Anchore entwickelt, funktioniert aber als eigenständige Binärdatei, die einfacher zu handhaben ist als die Anchore Engine.

Bekannte Schwachstellen gelangen über veraltete Betriebssystempakete, kompromittierte Programmiersprachenabhängigkeiten und unsichere Basisimages in Ihre Software. Das aktive Scannen Ihrer Artefakte hält Sie über Probleme auf dem Laufenden, bevor böswillige Akteure sie finden. So verwenden Sie Grype, um Probleme in Ihrem Code und Containern zu finden.

Installieren von Grype

Grype wird als vorkompilierte Binärdatei in deb verteilt , rpm , Linux-Quelle und Mac-Formate. Sie können die neueste Version von GitHub herunterladen und mit dem Paketmanager Ihres Systems installieren oder die Binärdatei an einen Ort in Ihrem Pfad kopieren. Verwenden Sie alternativ das Installationsskript, um den Vorgang zu automatisieren:

curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

Überprüfen Sie, ob Ihre Binärdatei funktioniert, indem Sie grype ausführen Befehl. Eine Dokumentation zu den verfügbaren Befehlen wird angezeigt.

Einfache Scans

In seiner einfachsten Form nimmt Grype ein einzelnes Argument, das das zu scannende Container-Image oder den Dateisystempfad angibt. Um ein Image zu scannen, geben Sie ein gültiges Registrierungs-Tag an. Grype verwendet verfügbare Docker-Anmeldeinformationen, um Images aus Docker Hub und privaten Registrierungen abzurufen.

grype alpine:latest

Sie können auch ein aus Docker exportiertes Bildarchiv scannen:

grype saved-image.tar

Grype lädt seine Schwachstellendatenbank herunter, wenn es zum ersten Mal ausgeführt wird. Dies wiegt derzeit etwa 90 MB. Sobald die Datenbank verfügbar ist, zieht Grype das Docker-Image, katalogisiert die darin enthaltene Software und parst bekannte Schwachstellen in der Datenbank.

Die Ergebnisse werden in einer Tabelle in Ihrem Terminal angezeigt. Jede Schwachstelle enthält ihre CVE-ID, den Namen des betroffenen Pakets und ihren Schweregrad. Wenn das Problem in einer späteren Version behoben wurde, sehen Sie die Versionsnummer dieses Updates im FIXED-IN Säule. Auf diese Weise können Sie feststellen, ob eine Schwachstelle mit einem einfachen Update des Paketmanagers behoben werden kann.

Grype kann mit Paketen für alle gängigen Linux-Distributionen arbeiten. Es unterstützt auch Ruby Gems, NPM- und Yarn-Pakete, Python Eggs, Wheels und Poetry-Abhängigkeiten sowie Java-Module in den Formaten JAR, WAR, EAR, JPI und HPI.

Dateisysteme scannen

Grype kann Dateisystempfade auf Ihrem Rechner scannen. Auf diese Weise können Sie Schwachstellen in Quellcode-Repositories entdecken, bevor Sie ein Image erstellt haben. Um diese Funktion zu verwenden, geben Sie einen Verzeichnispfad mit dir: an Schema:

grype dir:/example-dir

Grype sucht nach kompatiblen Dateien, die unter dem angegebenen Verzeichnisstamm verschachtelt sind. Jede gefundene Datei wird indiziert und auf Schwachstellen gescannt.

Dateisystem-Scans decken die gleichen Arten von Schwachstellen auf wie Container-Image-Scans. Der Scan kann einige Minuten dauern, wenn Sie mit einer großen Verzeichnisstruktur arbeiten.

Schwachstellen filtern

Es werden zwei Filter-Flags unterstützt, um den Bericht nur auf die Schwachstellen oder Lösungsoptionen zu beschränken, an denen Sie interessiert sind:

  • --only-fixed – Nur Schwachstellen anzeigen, die in einer späteren Version des betroffenen Pakets gepatcht wurden.
  • --fail-on high – Beenden Sie sofort mit einem Fehlercode, wenn ein high -Level-Schwachstelle gefunden. Sie können jede unterstützte Fehlerstufe (kritisch, hoch, mittel oder niedrig) anstelle von high einsetzen .

Schwachstellen ignorieren

Schwachstellen können ignoriert werden, um Fehlalarme oder Probleme zu verbergen, die Sie nicht ansprechen möchten, vielleicht weil sie für Ihre Verwendung des Pakets nicht relevant sind.

Um eine Schwachstelle zu ignorieren, müssen Sie eine benutzerdefinierte Grype-Konfigurationsdatei im YAML-Format erstellen. Fügen Sie den CVE der Schwachstelle unter ignore der obersten Ebene hinzu Feld:

ignore:
  - vulnerability: CVE-2021-12345

Andere Felder werden ebenfalls unterstützt, wie diese Variante, um alle Probleme zu ignorieren, die von NPM-Paketen stammen:

ignore:
  - package:
      type: npm

Speichern Sie Ihre Konfigurationsdatei unter .grype.yaml oder .grype/config.yaml in Ihrem Arbeitsverzeichnis. Es wird automatisch verwendet, wenn Sie das nächste Mal einen Grype-Scan ausführen. Die globale Konfigurationsdatei ~/.grype.yaml wird ebenfalls unterstützt. Die Datei in Ihrem Arbeitsverzeichnis wird zur Laufzeit mit der globalen zusammengeführt.

Schwachstellen wirken sich nicht auf den Exit-Code von Grype aus, wenn sie ignoriert werden. Der JSON-Bericht verschiebt sie in separate ignoredMatches Feld, während Terminal-Tabellenberichte sie vollständig ausschließen. Wenn Sie eine Schwachstelle ignorieren, denken Sie daran, zu dokumentieren, warum sie akzeptiert wurde, damit jeder Mitwirkende das Risiko versteht.

SBOMs verwenden

Grype kann mit SBOMs arbeiten, die von Syft, einem weiteren Projekt von Anchore, generiert wurden. Syft indiziert Ihre Container-Images, um eine Liste der darin enthaltenen Abhängigkeiten zu erstellen.

Verwenden Sie Syft, um eine SBOM für Ihr Bild im JSON-Format zu erstellen:

syft alpine:latest -o json > alpine-sbom.json

Führen Sie dann einen Grype-Scan mit dem SBOM:

durch
grype sbom:/alpine-sbom.json

Grype untersucht das referenzierte Image auf neue Schwachstellen, die sich aus seiner Materialliste ergeben. Verwenden Sie Grype weiterhin mit Ihrem SBOM, um Bildabhängigkeiten, die Sie bereits geprüft und indiziert haben, auf neu auftretende Probleme zu überwachen.

Grype-Ausgabe anpassen

Grype bietet vier verschiedene Ausgabeformatierer, zwischen denen Sie mit -o umschalten können CLI-Flag:

  • table – Die vom Menschen lesbare Standardtabelle für den Konsum im Terminal.
  • json – Ein Bericht im JSON-Format, der viel umfassendere Informationen zu jeder Schwachstelle sowie Details zur zum Scannen verwendeten Grype-Datenbank enthält. JSON-Dateien eignen sich zur Langzeitarchivierung und zum Vergleich oder zur Verwendung als CI-Build-Artefakte.
  • cyclonedx – Ein CycloneDX-kompatibler Bericht im XML-Format, der in andere Tools eingespeist werden kann, die SBOMs und Schwachstellenlisten unterstützen.
  • template – Mit diesem erweiterten Formatierer können Sie Ihre eigenen Berichte in beliebigen Formaten erstellen.

Die template formatter akzeptiert eine Go-Vorlage, die zum Rendern der Berichtsausgabe verwendet wird. Um diesen Formatierer zu verwenden, geben Sie ihn nicht namentlich an – übergeben Sie stattdessen den Pfad zu einer Datei, die Ihre Go-Vorlage enthält:

grype alpine:latest -o output-template.tmpl

Die Vorlage sollte die Go-Vorlagensyntax verwenden, um auf Variablen zu verweisen, die Grype bereitstellt. Sie können jedes gewünschte Dateiformat erstellen, z. B. eine HTML-Seite, eine Markdown-Datei oder eine benutzerdefinierte JSON-Struktur. Die Grype-Dokumentation enthält ein Beispiel für die Erstellung einer CSV-Datei aus den verfügbaren Variablen.

Schwachstellendatenbank

Die Schwachstellendatenbank speichert Details aller Schwachstellen, die Grype bekannt sind. Nach dem Herunterladen wird die zwischengespeicherte Version wiederverwendet, bis ein Update verfügbar ist. Manuelle Interaktionen mit der Datenbank sind normalerweise nicht erforderlich.

In einigen Situationen müssen Sie möglicherweise einen Datenbankdownload erzwingen. Dies könnte daran liegen, dass Sie einen Air-Gap-Server einrichten, bevor Sie einen Scan ausführen. Verwenden Sie die grype db check und grype db update Befehle, um nach einer neueren Version der Datenbank zu suchen und diese herunterzuladen.

Sobald die Datenbank verfügbar ist, funktionieren Scans, während Ihr System offline ist. Sie können Grypes automatische Datenbankaktualisierungsprüfungen deaktivieren, indem Sie GRYPE_DB_AUTO_UPDATE festlegen Umgebungsvariable auf false in deiner Shell.

Zusammenfassung

Grype warnt Sie vor Schwachstellen in Ihren Containern und in Ihrem Dateisystem. Als eigenständige CLI-Binärdatei ist der Einstieg einfacher als mit einer vollständigen Anchore-Installation.

Wenn Sie sich fragen, welche Sie wählen sollten, liegt der Wert von Anchore in seiner Erweiterbarkeit und den erweiterten Konfigurationsoptionen. Mit Anchore Engine können Sie Ihre eigenen Richtliniensätze basierend auf Gates, Triggern und Aktionen definieren. Damit können Sie Ihre Scans genau an Ihre spezifische Umgebung anpassen. Grype bietet eine optimierte Erfahrung, wenn Sie nur eine Liste bekannter Schwachstellen in Ihrem Image wünschen.

Wofür Sie sich auch entscheiden, eine Form des aktiven Schwachstellen-Scannens wird Sie über Schwachstellen in Ihrer Softwarelieferkette auf dem Laufenden halten. Verwenden Sie für einen vollständig integrierten Ansatz Grype als Teil Ihrer CI-Pipeline, damit Sie bei der Übertragung von Code auf neue Schwachstellen aufmerksam gemacht werden.


Docker
  1. So finden Sie Dateien mit dem fd-Befehl in Linux

  2. Wie finde ich alle Dateien mit der Endung .rb unter Linux?

  3. Dateien finden und taren (mit Leerzeichen)

  4. Entfernen von Dateien mit rm unter Verwendung von find und xargs

  5. Wie finde ich Dateien und summiere ihre Größe?

So finden Sie Dateien in Linux mit dem Find-Befehl

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

So finden und löschen Sie doppelte Dateien in Linux

So finden Sie Dateien mit dem fd-Befehl in Linux

So finden Sie doppelte Dateien in Linux und entfernen sie

So verwenden Sie Docker Cp zum Kopieren von Dateien zwischen Host und Containern