Sammlung von Abhängigkeiten zu Programmiersprachen - Amazon Inspector

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sammlung von Abhängigkeiten zu Programmiersprachen

Der Amazon Inspector SBOM Generator unterstützt verschiedene Programmiersprachen und Frameworks, die eine robuste und detaillierte Sammlung von Abhängigkeiten bilden. Die Generierung einer SBOM hilft Ihnen dabei, die Zusammensetzung Ihrer Software zu verstehen, sodass Sie Schwachstellen identifizieren und die Einhaltung der Sicherheitsstandards sicherstellen können. Der Amazon Inspector SBOM Generator unterstützt die folgenden Programmiersprachen und Dateiformate.

Gehen Sie zum Scannen von Abhängigkeiten

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
Go Go

go.mod

go.sum

Go Binaries

GOMODCACHE

N/A

N/A

Ja

N/A

Ja

Ja

Ja

Nein

go.mod/go.sum

Verwenden Sie go.sum Dateien, um Abhängigkeiten in Projekten zu definieren go.mod und zu sperren. Go Der Amazon Inspector SBOM Generator verwaltet diese Dateien je nach Version der Go Toolchain unterschiedlich.

Schlüsselfeatures
  • Sammelt Abhängigkeiten von go.mod (wenn die Go Toolketten-Version 1.17 oder höher ist)

  • Sammelt Abhängigkeiten von go.sum (wenn die Go Toolketten-Version 1.17 oder niedriger ist)

  • Analysiertgo.mod, um alle deklarierten Abhängigkeiten und Abhängigkeitsversionen zu identifizieren

go.mod-Beispieldatei

Das Folgende ist ein Beispiel für eine go.mod Datei.

module example.com/project go 1.17 require ( github.com/gin-gonic/gin v1.7.2 golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123 )
go.sum-Beispieldatei

Das Folgende ist ein Beispiel für eine go.sum Datei.

github.com/gin-gonic/gin v1.7.2 h1:VZ7DdRl0sghbA6lVGSkX+UXO2+J0aH7RbsNugG+FA8Q= github.com/gin-gonic/gin v1.7.2/go.mod h1:ILZ1Ngh2f1pL1ASUj7gGk8lGFeNC8cRTaN2ZhsBNbXU= golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123 h1:b6rCu+qHze+BUsmC3CZzH8aNu8LzPZTVsNTo64OypSc= golang.org/x/crypto v0.0.0-20210616213533-5cf6c0f8e123/go.mod h1:K5Dkpb0Q4ewZW/EzWlQphgJcUMBCzoWrLfDOVzpTGVQ=
Anmerkung

Jede dieser Dateien erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Gehe zu Binärdateien

Der Amazon Inspector SBOM Generator extrahiert Abhängigkeiten aus kompilierten Go Binärdateien, um sicherzustellen, dass der verwendete Code verwendet wird.

Anmerkung

Der Amazon Inspector SBOM Generator unterstützt das Erfassen und Auswerten von Toolchainversionen aus Go Binärdateien, die mit dem offiziellen Compiler erstellt wurden. Go Weitere Informationen finden Sie auf der Website unter Herunterladen und Installieren. Go Wenn Sie beispielsweise die Go Toolchain eines anderen Anbieters verwenden, ist die Bewertung aufgrund möglicher Unterschiede bei der Verteilung und der Verfügbarkeit von Metadaten möglicherweise nicht korrekt. Red Hat

Schlüsselfeatures
  • Extrahiert Abhängigkeitsinformationen direkt aus Binärdateien Go

  • Sammelt in der Binärdatei eingebettete Abhängigkeiten

  • Erkennt und extrahiert die Version der Go Toolchain, die zum Kompilieren der Binärdatei verwendet wurde.

GOMODCACHE

Der Amazon Inspector SBOM Generator scannt den Go Modul-Cache, um Informationen über installierte Abhängigkeiten zu sammeln. In diesem Cache werden heruntergeladene Module gespeichert, um sicherzustellen, dass dieselben Versionen in verschiedenen Builds verwendet werden.

Schlüsselfeatures
  • Durchsucht das GOMODCACHE Verzeichnis, um zwischengespeicherte Module zu identifizieren

  • Extrahiert detaillierte Metadaten, einschließlich Modulnamen, Versionen und Quelle URLs

Beispiel für eine Struktur

Das Folgende ist ein Beispiel für die GOMODCACHE Struktur.

~/go/pkg/mod/ ├── github.com/gin-gonic/gin@v1.7.2 ├── golang.org/x/crypto@v0.0.0-20210616213533-5cf6c0f8e123
Anmerkung

Diese Struktur erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Scannen von Java-Abhängigkeiten

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
Java Maven

Kompilierte Java Anwendungen (.jar/.war/.ear)

pom.xml

N/A

N/A

Ja

Ja

N/A

Ja

Ja

Anmerkung

Unsere Funktion zur Bewertung von Sicherheitslücken unterstützt nur das Maven Central-Repository. Repositorys von Drittanbietern, wie z. B.JBoss Enterprise Maven Repository, werden derzeit nicht unterstützt.

Der Amazon Inspector SBOM Generator führt Java Abhängigkeitsscans durch, indem er kompilierte Java Anwendungen und pom.xml Dateien analysiert. Beim Scannen kompilierter Anwendungen generiert der Scanner SHA-1-Hashes zur Integritätsprüfung, extrahiert eingebettete pom.properties Dateien und analysiert verschachtelte Dateien. pom.xml

SHA-1-Hash-Sammlung (für kompilierte JAR-, .WAR-, .EAR-Dateien)

Der Amazon Inspector SBOM Generator versucht, SHA-1-Hashes für alle.ear,, und .war Dateien in einem Projekt zu sammeln.jar, um die Integrität und Rückverfolgbarkeit der kompilierten Artefakte zu gewährleisten. Java

Schlüsselfeatures
  • Generiert SHA—1-Hashes für alle kompilierten Artefakte Java

Beispiel für ein Artefakt

Das Folgende ist ein Beispiel für ein SHA-1-Artefakt.

{ "bom-ref": "comp-52", "type": "library", "name": "jul-to-slf4j", "version": "2.0.6", "hashes": [ { "alg": "SHA-1", "content": "" } ], "purl": "pkg:maven/jul-to-slf4j@2.0.6", "properties": [ { "name": "amazon:inspector:sbom_generator:source_path", "value": "test-0.0.1-SNAPSHOT.jar/BOOT-INF/lib/jul-to-slf4j-2.0.6.jar" } ] }
Anmerkung

Dieses Artefakt erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

pom.properties

Die pom.properties Datei wird in Maven Projekten verwendet, um Projektmetadaten, einschließlich Paketnamen und Paketversionen, zu speichern. Der Amazon Inspector SBOM Generator analysiert diese Datei, um Projektinformationen zu sammeln.

Schlüsselfeatures
  • Analysiert und extrahiert Paketartefakte, Paketgruppen und Paketversionen

pom.properties-Beispieldatei

Im Folgenden wird ein Beispiel für eine pom.properties-Datei dargestellt.

#Generated by Maven #Tue Mar 16 15:44:02 UTC 2021 version=1.6.0 groupId=net.datafaker artifactId=datafaker
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Ohne verschachteltes Parsing pom.xml

Wenn Sie das pom.xml Parsen beim Scannen kompilierter Java Anwendungen ausschließen möchten, verwenden Sie das Argument. --skip-nested-pomxml

pom.xml

Die pom.xml Datei ist die zentrale Konfigurationsdatei für Maven Projekte. Sie enthält Informationen über Projekte und Projektabhängigkeiten. Der Amazon Inspector SBOM Generator analysiert pom.xml Dateien, um Abhängigkeiten zu erfassen. Dabei werden eigenständige Dateien in Repositorys und Dateien in kompilierten Dateien gescannt. .jar

Schlüsselfeatures
  • Analysiert und extrahiert Paketartefakte, Paketgruppen und Paketversionen aus Dateien. pom.xml

Unterstützte Maven Bereiche und Tags

Abhängigkeiten werden in den folgenden Maven Bereichen erfasst:

  • compile

  • bereitgestellt

  • runtime

  • Test

  • system

  • einführen

Abhängigkeiten werden mit dem folgenden Maven Tag gesammelt:<optional>true</optional>.

pom.xmlBeispieldatei mit einem Bereich

Das Folgende ist ein Beispiel für eine pom.xml Datei mit einem Bereich.

<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> </version>6.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> <scope>runtime</scope> </dependency>
pom.xmlBeispieldatei ohne Gültigkeitsbereich

Im Folgenden finden Sie ein Beispiel für eine pom.xml Datei ohne Bereich.

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.1</version> </dependency> <dependency> <groupId>org.jenkins-ci.plugins</groupId> <artifactId>plain-credentials</artifactId> <version>183.va_de8f1dd5a_2b_</version> </dependency> <dependency> <groupId>org.jenkins-ci.plugins</groupId> <artifactId>jackson2-api</artifactId> <version>2.15.2-350.v0c2f3f8fc595</version> </dependency>
Anmerkung

Jede dieser Dateien erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

JavaScript Scannen von Abhängigkeiten

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
Javascript

Node Modules

NPM

PNPM

YARN

node_modules/*/package.json

package-lock.json (v1, v2, and v3) / npm-shrinkwrap.json

pnpm-lock.yaml

yarn.lock

N/A

N/A

Ja

Ja

Ja

Ja

N/A

Ja

N/A

Ja

Nein

Nein

Nein

package.json

Die package.json Datei ist eine Kernkomponente von Projekten. Node.js Sie enthält Metadaten zu installierten Paketen. Der Amazon Inspector SBOM Generator scannt diese Datei, um Paketnamen und Paketversionen zu identifizieren.

Schlüsselfeatures
  • Analysiert die JSON-Dateistruktur, um Paketnamen und Versionen zu extrahieren

  • Identifiziert private Pakete mit privaten Werten

package.json-Beispieldatei

Im Folgenden wird ein Beispiel für eine package.json-Datei dargestellt.

{ "name": "arrify", "private": true, "version": "2.0.1", "description": "Convert a value to an array", "license": "MIT", "repository": "sindresorhus/arrify" }
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

package-lock.json

Die package-lock.json Datei wird automatisch von npm generiert, um genaue Versionen der für ein Projekt installierten Abhängigkeiten zu sperren. Es gewährleistet die Konsistenz in Umgebungen, indem exakte Versionen aller Abhängigkeiten und ihrer Unterabhängigkeiten gespeichert werden. Diese Datei kann zwischen regulären Abhängigkeiten und Entwicklungsabhängigkeiten unterscheiden.

Schlüsselfeatures
  • Analysiert die JSON-Dateistruktur, um Paketnamen und Paketversionen zu extrahieren

  • Unterstützt die Erkennung von Abhängigkeiten von Entwicklern

package-lock.json-Beispieldatei

Im Folgenden wird ein Beispiel für eine package-lock.json-Datei dargestellt.

"verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" }
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

npm-shrinkwrap.json

npmgeneriert package-lock.json automatisch npm-shrinkwrap.json Dateien, um exakte Versionen der für ein Projekt installierten Abhängigkeiten zu sperren. Dies garantiert Konsistenz in Umgebungen, indem exakte Versionen aller Abhängigkeiten und Unterabhängigkeiten gespeichert werden. Die Dateien unterscheiden zwischen regulären Abhängigkeiten und Entwicklungsabhängigkeiten.

Schlüsselfeatures
  • Analysieren Sie die package-lock Versionen 1, 2 und 3 der JSON Dateistruktur, um den Paketnamen und die Version zu extrahieren

  • Die Erkennung von Abhängigkeiten zwischen Entwicklern wird unterstützt (package-lock.jsonerfasst Produktions- und Entwicklungsabhängigkeiten, sodass Tools erkennen können, welche Pakete in Entwicklungsumgebungen verwendet werden)

  • Die npm-shrinkwrap.json Datei hat Vorrang vor der package-lock.json Datei

Beispiel

Im Folgenden wird ein Beispiel für eine package-lock.json-Datei dargestellt.

"verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" }

pnpm-yaml.lock

Die pnpm-lock.yaml Datei wird von pnpm generiert, um die installierten Abhängigkeitsversionen aufzuzeichnen. Außerdem werden Entwicklungsabhängigkeiten separat verfolgt.

Schlüsselfeatures
  • Analysiert die YAML-Dateistruktur, um Paketnamen und Versionen zu extrahieren

  • Unterstützt die Erkennung von Abhängigkeiten von Entwicklern

Beispiel

Im Folgenden wird ein Beispiel für eine pnpm-lock.yaml-Datei dargestellt.

lockfileVersion: 5.3 importers: my-project: dependencies: lodash: 4.17.21 devDependencies: jest: 26.6.3 specifiers: lodash: ^4.17.21 jest: ^26.6.3 packages: /lodash/4.17.21: resolution: integrity: sha512-xyz engines: node: '>=6' dev: false /jest/26.6.3: resolution: integrity: sha512-xyz dev: true
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

yarn.lock

Der Amazon Inspector SBOM Generator versucht, SHA-1-Hashes für.ear, und .war Dateien in einem Projekt zu sammeln.jar, um die Integrität und Rückverfolgbarkeit kompilierter Artefakte zu gewährleisten. Java

Schlüsselfeatures
  • Generiert SHA—1-Hashes für alle kompilierten Artefakte Java

Beispiel für ein SHA-1-Artefakt

Im Folgenden finden Sie ein Beispiel für ein SHA-1-Artefakt.

"@ampproject/remapping@npm:^2.2.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" dependencies: "@jridgewell/gen-mapping": ^0.1.0 "@jridgewell/trace-mapping": ^0.3.9 checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 languageName: node linkType: hard "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.21.4": version: 7.21.4 resolution: "@babel/code-frame@npm:7.21.4" dependencies: "@babel/highlight": ^7.18.6 checksum: e5390e6ec1ac58dcef01d4f18eaf1fd2f1325528661ff6d4a5de8979588b9f5a8e852a54a91b923846f7a5c681b217f0a45c2524eb9560553160cd963b7d592c languageName: node linkType: hard
Anmerkung

Dieses Artefakt erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

.NET-Abhängigkeiten scannen

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
.NET

.NET Core

Nuget

Nuget

.NET

*.deps.json

Packages.config

packages.lock.json

.csproj

N/A

N/A

Ja

N/A

Ja

Ja

Ja

Ja

Packages.config

Die Packages.config Datei ist eine XML-Datei, die von einer älteren Version von Nuget zur Verwaltung von Projektabhängigkeiten verwendet wird. Sie listet alle Pakete auf, auf die das Projekt verweist, einschließlich bestimmter Versionen.

Schlüsselfeatures
  • Analysiert die XML-Struktur, um das Paket IDs und die Versionen zu extrahieren

Beispiel

Im Folgenden wird ein Beispiel für eine Packages.config-Datei dargestellt.

<?xml version="1.0" encoding="utf-8"? > <packages> <package id="FluentAssertions" version="5.4.1" targetFramework="net461" /> <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" /> <package id="SpecFlow" version="2.4.0" targetFramework="net461" /> <package id="SpecRun.Runner" version="1.8.0" targetFramework="net461" /> <package id="SpecRun.SpecFlow" version="1.8.0" targetFramework="net461" /> <package id="SpecRun.SpecFlow.2-4-0" version="1.8.0" targetFramework="net461" /> <package id="System.ValueTuple" version="4.5.0" targetFramework="net461" /> </packages>
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

*.deps.json

Die *.deps.json Datei wird von .NET Core Projekten generiert und enthält detaillierte Informationen zu allen Abhängigkeiten, einschließlich Pfaden, Versionen und Laufzeitabhängigkeiten. Diese Datei stellt sicher, dass die Runtime über die notwendigen Informationen verfügt, um die richtigen Versionen von Abhängigkeiten zu laden.

Schlüsselfeatures
  • Analysiert die JSON-Struktur nach umfassenden Abhängigkeitsdetails

  • Extrahiert Paketnamen und Versionen in eine libraries Liste.

.deps.json-Beispieldatei

Im Folgenden wird ein Beispiel für eine .deps.json-Datei dargestellt.

{ "runtimeTarget": { "name": ".NETCoreApp,Version=v7.0", "signature": "" }, "libraries": { "sample-Nuget/1.0.0": { "type": "project", "serviceable": false, "sha512": "" }, "Microsoft.EntityFrameworkCore/7.0.5": { "type": "package", "serviceable": true, "sha512": "sha512-RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "path": "microsoft.entityframeworkcore/7.0.5", "hashPath": "microsoft.entityframeworkcore.7.0.5.nupkg.sha512" }, }
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

packages.lock.json

Die packages.lock.json Datei wird von neueren Versionen von verwendetNuget, um genaue Versionen von Abhängigkeiten für ein .NET Projekt zu sperren, um sicherzustellen, dass dieselben Versionen in verschiedenen Umgebungen konsistent verwendet werden.

Schlüsselfeatures
  • Analysiert die JSON-Struktur, um gesperrte Abhängigkeiten aufzulisten

  • Unterstützt sowohl direkte als auch transitive Abhängigkeiten

  • Extrahiert den Paketnamen und die aufgelösten Versionen

packages.lock.json-Beispieldatei

Im Folgenden wird ein Beispiel für eine packages.lock.json-Datei dargestellt.

{ "version": 1, "dependencies": { "net7.0": { "Microsoft.EntityFrameworkCore": { "type": "Direct", "requested": "[7.0.5, )", "resolved": "7.0.5", "contentHash": "RXbRLHHWP2Z3pq8qcL5nQ6LPeoOyp8hasM5bd0Te8PiQi3RjWQR4tcbdY5XMqQ+oTO9wA8/RLhZRn/hnxlTDnQ==", "dependencies": { "Microsoft.EntityFrameworkCore.Abstractions": "7.0.5", "Microsoft.EntityFrameworkCore.Analyzers": "7.0.5", "Microsoft.Extensions.Caching.Memory": "7.0.0", "Microsoft.Extensions.DependencyInjection": "7.0.0", "Microsoft.Extensions.Logging": "7.0.0" } }, "Newtonsoft.Json": { "type": "Direct", "requested": "[13.0.3, )", "resolved": "13.0.3", "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==" }, "Microsoft.Extensions.Primitives": { "type": "Transitive", "resolved": "7.0.0", "contentHash": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==" } } } }
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

.csproj

Die .csproj Datei ist in XML geschrieben und die Projektdatei für Projekte. .NET Sie enthält Verweise auf Nuget Pakete, Projekteigenschaften und Build-Konfigurationen.

Schlüsselfeatures
  • Analysiert die XML-Struktur, um Paketverweise zu extrahieren

.csproj-Beispieldatei

Im Folgenden wird ein Beispiel für eine .csproj-Datei dargestellt.

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> <RootNamespace>sample_Nuget</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> </PropertyGroup> <ItemGroup> </ItemGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> </ItemGroup> </Project>
.csproj-Beispieldatei

Im Folgenden wird ein Beispiel für eine .csproj-Datei dargestellt.

<PackageReference Include="ExamplePackage" Version="6.*" /> <PackageReferencePackageReference Include="ExamplePackage" Version="(4.1.3,)" /> <PackageReference Include="ExamplePackage" Version="(,5.0)" /> <PackageReference Include="ExamplePackage" Version="[1,3)" /> <PackageReference Include="ExamplePackage" Version="[1.3.2,1.5)" />
Anmerkung

Jede dieser Dateien erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Scannen von PHP-Abhängigkeiten

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
PHP Composer

composer.lock

/vendor/composer/installed.json

N/A

N/A

Ja

Ja

N/A

Ja

Ja

composer.lock

Die composer.lock Datei wird automatisch generiert, wenn die Befehle composer install oder composer update ausgeführt werden. Diese Datei garantiert, dass in jeder Umgebung dieselben Versionen von Abhängigkeiten installiert sind. Dies sorgt für einen konsistenten und zuverlässigen Erstellungsprozess.

Schlüsselfeatures
  • Analysiert das JSON-Format für strukturierte Daten

  • Extrahiert Namen und Versionen von Abhängigkeiten

composer.lock-Beispieldatei

Im Folgenden wird ein Beispiel für eine composer.lock-Datei dargestellt.

{ "packages": [ { "name": "nesbot/carbon", "version": "2.53.1", // TRUNCATED }, { "name": "symfony/deprecation-contracts", "version": "v3.2.1", // TRUNCATED }, { "name": "symfony/polyfill-mbstring", "version": "v1.27.0", // TRUNCATED } ] // TRUNCATED }
Anmerkung

Dadurch wird eine Ausgabe erzeugt, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

/.json vendor/composer/installed

Die /vendor/composer/installed.json Datei befindet sich im vendor/composer Verzeichnis und bietet eine umfassende Liste aller installierten Pakete und Paketversionen.

Schlüsselfeatures
  • Analysiert das JSON-Format für strukturierte Daten

  • Extrahiert die Namen und die Version der Abhängigkeiten

/vendor/composer/installed.json-Beispieldatei

Im Folgenden wird ein Beispiel für eine /vendor/composer/installed.json-Datei dargestellt.

{ "packages": [ { "name": "nesbot/carbon", "version": "2.53.1", // TRUNCATED }, { "name": "symfony/deprecation-contracts", "version": "v3.2.1", // TRUNCATED }, { "name": "symfony/polyfill-mbstring", "version": "v1.27.0", // TRUNCATED } ] // TRUNCATED }
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Scannen von Python-Abhängigkeiten

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
Python

pip

Poetry

Pipenv

Egg/Wheel

requirements.txt

Poetry.lock

Pipfile.lock

.egg-info/PKG-INFO

.dist-info/METADATA

N/A

N/A

Ja

Ja

Ja

Ja

Ja

requirements.txt

Die requirements.txt Datei ist ein in Python Projekten weit verbreitetes Format, um Projektabhängigkeiten zu spezifizieren. Jede Zeile in dieser Datei enthält ein Paket mit seinen Versionseinschränkungen. Der Amazon Inspector SBOM Generator analysiert diese Datei, um Abhängigkeiten genau zu identifizieren und zu katalogisieren.

Schlüsselfeatures
  • Unterstützt Versionsbezeichner (== und =)

  • Unterstützt Kommentare und komplexe Abhängigkeitszeilen

Anmerkung

Die Versionsbezeichner <= und => werden nicht unterstützt.

requirements.txt-Beispieldatei

Im Folgenden wird ein Beispiel für eine requirements.txt-Datei dargestellt.

flask==1.1.2 requests==2.24.0 numpy==1.18.5 foo~=1.2.0 # Comment about a dependency scipy. # invalid
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Pipfile.lock

Pipenvist ein Tool, das das Beste aus allen Verpackungswelten bietet (gebündelt, gepinnt und unverheftet). Es Pipfile.lock sperrt genaue Versionen von Abhängigkeiten, um deterministische Builds zu ermöglichen. Der Amazon Inspector SBOM Generator liest diese Datei, um Abhängigkeiten und ihre aufgelösten Versionen aufzulisten.

Schlüsselfeatures
  • Analysiert das JSON-Format auf die Auflösung von Abhängigkeiten

  • Unterstützt Standard- und Entwicklungsabhängigkeiten

Pipfile.lock-Beispieldatei

Im Folgenden wird ein Beispiel für eine Pipfile.lock-Datei dargestellt.

{ "default": { "requests": { "version": "==2.24.0", "hashes": [ "sha256:cc718bb187e53b8d" ] } }, "develop": { "blinker": { "hashes": [ "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01", "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83" ], "markers": "python_version >= '3.8'", "version": "==1.8.2" } } }
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Poetry.lock

Poetryist ein Tool zur Verwaltung und Paketierung von Abhängigkeiten für Python. Die Poetry.lock Datei sperrt genaue Versionen von Abhängigkeiten, um konsistente Umgebungen zu ermöglichen. Der Amazon Inspector SBOM Generator extrahiert detaillierte Abhängigkeitsinformationen aus dieser Datei.

Schlüsselfeatures
  • Analysiert das TOML-Format für strukturierte Daten

  • Extrahiert Namen und Versionen von Abhängigkeiten

Poetry.lock-Beispieldatei

Im Folgenden wird ein Beispiel für eine Poetry.lock-Datei dargestellt.

[[package]] name = "flask" version = "1.1.2" description = "A simple framework for building complex web applications." category = "main" optional = false python-versions = ">=3.5" [[package]] name = "requests" version = "2.24.0" description = "Python HTTP for Humans." category = "main" optional = false python-versions = ">=3.5"
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Eier/Rad

Für global installierte Python-Pakete unterstützt der Amazon Inspector SBOM Generator das Parsen von Metadatendateien in den .egg-info/PKG-INFO Verzeichnissen und. .dist-info/METADATA Diese Dateien enthalten detaillierte Metadaten zu installierten Paketen.

Schlüsselfeatures
  • Extrahiert den Paketnamen und die Version

  • Unterstützt sowohl Eier- als auch Radformate

PKG-INFO/METADATA-Beispieldatei

Im Folgenden wird ein Beispiel für eine PKG-INFO/METADATA-Datei dargestellt.

Metadata-Version: 1.2 Name: Flask Version: 1.1.2 Summary: A simple framework for building complex web applications. Home-page: https://palletsprojects.com/p/flask/
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Scannen von Abhängigkeiten in Ruby

Programmiersprache Paketmanager Unterstützte Artefakte Toolchaining-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
Ruby Bundler

Gemfile.lock

.gemspec

globall installed Gems

N/A

N/A

Ja

N/A

Ja

Ja

Ja

GemFile.lock

Die Gemfile.lock Datei sperrt genaue Versionen aller Abhängigkeiten, um sicherzustellen, dass in jeder Umgebung dieselben Versionen verwendet werden.

Schlüsselfeatures
  • Analysiert die Gemfile.lock Datei, um Abhängigkeiten und Abhängigkeitsversionen zu identifizieren

  • Extrahiert detaillierte Paketnamen und Paketversionen

Gemfile.lock-Beispieldatei

Im Folgenden wird ein Beispiel für eine Gemfile.lock-Datei dargestellt.

GEM remote: https://rubygems.org/ specs: ast (2.4.2) awesome_print (1.9.2) diff-lcs (1.5.0) json (2.6.3) parallel (1.22.1) parser (3.2.2.0) nokogiri (1.16.6-aarch64-linux)
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

.gemspec

Die .gemspec Datei ist eine RubyGem Datei, die Metadaten zu einem Edelstein enthält. Der Amazon Inspector SBOM Generator analysiert diese Datei, um detaillierte Informationen über einen Edelstein zu sammeln.

Schlüsselfeatures
  • Analysiert und extrahiert den Edelsteinnamen und die Edelsteinversion

Anmerkung

Die Referenzspezifikation wird nicht unterstützt.

.gemspec-Beispieldatei

Im Folgenden wird ein Beispiel für eine .gemspec-Datei dargestellt.

Gem::Specification.new do |s| s.name = "generategem" s.version = "2.0.0" s.date = "2020-06-12" s.summary = "generategem" s.description = "A Gemspec Builder" s.email = "edersondeveloper@gmail.com" s.files = ["lib/generategem.rb"] s.homepage = "https://github.com/edersonferreira/generategem" s.license = "MIT" s.executables = ["generategem"] s.add_dependency('colorize', '~> 0.8.1') end
# Not supported Gem::Specification.new do |s| s.name = &class1 s.version = &foo.bar.version
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Weltweit installierte Edelsteine

Der Amazon Inspector SBOM Generator unterstützt das Scannen global installierter Gems, die sich in Standardverzeichnissen wie /usr/local/lib/ruby/gems/<ruby_version>/gems/ Amazon EC2 /Amazon ECR und Lambda befinden. ruby/gems/<ruby_version>/gems/ Dadurch wird sichergestellt, dass alle global installierten Abhängigkeiten identifiziert und katalogisiert werden.

Schlüsselfeatures
  • Identifiziert und scannt alle global installierten Gems in Standardverzeichnissen

  • Extrahiert Metadaten und Versionsinformationen für jedes global installierte Gem

Beispiel für eine Verzeichnisstruktur

Das Folgende ist ein Beispiel für eine Verzeichnisstruktur.

. └── /usr/local/lib/ruby/3.5.0/gems/ ├── actrivesupport-6.1.4 ├── concurrent-ruby-1.1.9 └── i18n-1.8.10
Anmerkung

Diese Struktur erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben, und sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Scannen von Abhängigkeiten auf Rost

Programmiersprache Paketmanager Unterstützte Artefakte Toolketten-Unterstützung Abhängigkeiten bei der Entwicklung Transitive Abhängigkeiten Private Flagge Rekursiv
Rust Cargo.toml

Cargo.toml

Cargo.lock

Rust binary (built with cargo-auditable)

N/A

N/A

Ja

N/A

Ja

N/A

Ja

Ja

Ja

Fracht.toml

Die Cargo.toml Datei ist die Manifestdatei für Projekte. Rust

Schlüsselfeatures
  • Analysiert und extrahiert die Cargo.toml Datei, um den Namen und die Version des Projektpakets zu identifizieren.

Cargo.toml-Beispieldatei

Im Folgenden wird ein Beispiel für eine Cargo.toml-Datei dargestellt.

[package] name = "wait-timeout" version = "0.2.0" description = "A crate to wait on a child process with a timeout specified across Unix and\nWindows platforms.\n" homepage = "https://github.com/alexcrichton/wait-timeout" documentation = "https://docs.rs/wait-timeout" readme = "README.md" categories = ["os"] license = "MIT/Apache-2.0" repository = "https://github.com/alexcrichton/wait-timeout" [target."cfg(unix)".dependencies.libc] version = "0.2" [badges.appveyor] repository = "alexcrichton/wait-timeout"
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Cargo.lock

Die Cargo.lock Datei sperrt Abhängigkeitsversionen, um sicherzustellen, dass bei der Erstellung eines Projekts dieselben Versionen verwendet werden.

Schlüsselfeatures
  • Analysiert die Cargo.lock Datei, um alle Abhängigkeiten und Abhängigkeitsversionen zu identifizieren.

Cargo.lock-Beispieldatei

Im Folgenden wird ein Beispiel für eine Cargo.lock-Datei dargestellt.

# This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] name = "adler32" version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "aho-corasick" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index"
Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Rust-Binärdateien mit überprüfbarer Ladung

Der Amazon Inspector SBOM Generator sammelt Abhängigkeiten von Rust Binärdateien, die mit der Bibliothek erstellt wurden. cargo-auditable Dadurch werden zusätzliche Abhängigkeitsinformationen bereitgestellt, indem die Extraktion von Abhängigkeiten aus kompilierten Binärdateien aktiviert wird.

Schlüsselfeatures
  • Extrahiert Abhängigkeitsinformationen direkt aus Rust Binärdateien, die mit der Bibliothek erstellt wurden cargo-auditable

  • Ruft Metadaten und Versionsinformationen für Abhängigkeiten ab, die in den Binärdateien enthalten sind

Anmerkung

Diese Datei erzeugt eine Ausgabe, die eine Paket-URL enthält. Diese URL kann verwendet werden, um Informationen zu Softwarepaketen bei der Generierung einer Softwareliste anzugeben. Sie kann in die ScanSbomAPI aufgenommen werden. Weitere Informationen finden Sie unter package-url auf der GitHub Website.

Nicht unterstützte Artefakte

In diesem Abschnitt werden nicht unterstützte Artefakte beschrieben.

Java

Der Amazon Inspector SBOM Generator Generator unterstützt nur die Erkennung von Sicherheitslücken für Abhängigkeiten, die aus dem Maven Mainstream-Repository stammen. Private oder benutzerdefinierte Maven Repositorys wie Red Hat Maven und werden nicht Jenkins unterstützt. Stellen Sie für eine genaue Erkennung von Sicherheitslücken sicher, dass Java Abhängigkeiten aus dem Maven Mainstream-Repository abgerufen werden. Abhängigkeiten von anderen Repositorys werden bei Schwachstellenscans nicht berücksichtigt.

JavaScript

Esbuild-Pakete

Bei esbuild minimierten Paketen unterstützt der Amazon Inspector SBOM Generator keinen Abhängigkeitsscan für Projekte mit. esbuild Quellzuordnungen, die von generiert wurdenesbuild, enthalten nicht genügend Metadaten (Namen und Versionen von Abhängigkeiten), die für eine genaue Generierung erforderlich sind. Sbomgen Um zuverlässige Ergebnisse zu erzielen, scannen Sie vor dem Bündelungsprozess die ursprünglichen Projektdateienpackage-lock.json, z. B. die Dateien node_modules/directory und.

package.json

Der Amazon Inspector SBOM Generator unterstützt das Scannen der package.json-Datei auf Stammebene nicht nach Abhängigkeitsinformationen. Diese Datei spezifiziert nur Paketnamen und Versionsbereiche, enthält jedoch keine vollständig aufgelösten Paketversionen. Verwenden Sie package.json oder andere Sperrdateien, wie z. B. yarn.lock und, die aufgelöste Versionen enthaltenpnpm.lock, um genaue Scanergebnisse zu erzielen.

Punktnetz

Wenn Sie schwebende Versionen oder Versionsbereiche in verwendenPackageReference, wird es schwieriger, die genaue Paketversion zu ermitteln, die in einem Projekt verwendet wird, ohne die Paketauflösung durchzuführen. Schwebende Versionen und Versionsbereiche ermöglichen es Entwicklern, anstelle einer festen Version eine Reihe akzeptabler Paketversionen anzugeben.

Gehen Sie zu Binärdateien

Der Amazon Inspector SBOM Generator scannt keine Go Binärdateien, die mit Build-Flags erstellt wurden, die so konfiguriert sind, dass sie die Build-ID ausschließen. Diese Build-Flags Bomerman verhindern, dass die Binärdatei ihrer ursprünglichen Quelle genau zugeordnet wird. Unklare Go Binärdateien werden nicht unterstützt, da Paketinformationen nicht extrahiert werden können. Stellen Sie sicher, dass Go Binärdateien mit Standardeinstellungen, einschließlich der Build-ID, erstellt wurden, um genaue Abhängigkeiten zu überprüfen.

Rust-Binärdateien

Der Amazon Inspector SBOM Generator scannt nur Binärdateien, wenn die Rust Binärdateien mit der Cargo-Auditable Library erstellt wurden. RustBinärdateien, die diese Bibliothek nicht verwenden, verfügen nicht über die notwendigen Metadaten für eine genaue Extraktion von Abhängigkeiten. Der Amazon Inspector SBOM Generator extrahiert die kompilierte Rust Toolchainversion ab Version Rust 1.7.3, jedoch nur für Binärdateien in einer Umgebung. Linux Für umfassende Scans sollten Sie Binärdateien mithilfe von cargo-auditable erstellenRust. Linux

Anmerkung

Die Erkennung von Sicherheitslücken für die Rust Toolchain selbst wird nicht unterstützt, selbst wenn die Version der Toolchain extrahiert wurde.