Raccolta delle dipendenze del linguaggio di programmazione - Amazon Inspector

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Raccolta delle dipendenze del linguaggio di programmazione

Amazon Inspector SBOM Generator supporta diversi linguaggi e framework di programmazione, che costituiscono una raccolta solida e dettagliata di dipendenze. La generazione di un SBOM ti aiuta a comprendere la composizione del tuo software, in modo da poter identificare le vulnerabilità e mantenere la conformità agli standard di sicurezza. Amazon Inspector SBOM Generator supporta i seguenti linguaggi di programmazione e formati di file.

Vai alla scansione delle dipendenze

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
Go Go

go.mod

go.sum

Go Binaries

GOMODCACHE

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

No

go.mod/go.sum

Usa go.sum i file per definire go.mod e bloccare le dipendenze nei progetti. Go Amazon Inspector SBOM Generator gestisce questi file in modo diverso in base alla versione della toolchain. Go

Funzionalità principali
  • Raccoglie le dipendenze da go.mod (se la versione della Go toolchain è 1.17 o successiva)

  • Raccoglie le dipendenze da go.sum (se la versione della Go toolchain è 1.17 o precedente)

  • Analizza go.mod per identificare tutte le dipendenze e le versioni delle dipendenze dichiarate

Esempio di file go.mod

Di seguito è riportato un esempio di file. go.mod

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 )
Esempio di file go.sum

Quello che segue è un esempio di go.sum file.

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=
Nota

Ciascuno di questi file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Go Binaries

Amazon Inspector SBOM Generator estrae le dipendenze dai Go file binari compilati per garantire il codice in uso.

Nota

Amazon Inspector SBOM Generator supporta l'acquisizione e la valutazione delle versioni della toolchain da file binari creati utilizzando il compilatore ufficiale. Go Go Per ulteriori informazioni, consulta Download e installazione sul sito Web. Go Se si utilizza la Go toolchain di un altro fornitore, ad esempio, la valutazione potrebbe non essere accurata a causa di potenziali differenze nella distribuzione e nella disponibilità dei metadati. Red Hat

Funzionalità principali
  • Estrae le informazioni sulle dipendenze direttamente dai file binari Go

  • Raccoglie le dipendenze incorporate nel file binario

  • Rileva ed estrae la versione della Go toolchain utilizzata per compilare il file binario.

GOMODCACHE

Amazon Inspector SBOM Generator analizza la cache del Go modulo per raccogliere informazioni sulle dipendenze installate. Questa cache memorizza i moduli scaricati per garantire che le stesse versioni vengano utilizzate in build diverse.

Funzionalità principali
  • Esegue la scansione della GOMODCACHE directory per identificare i moduli memorizzati nella cache

  • Estrae i metadati dettagliati, inclusi i nomi dei moduli, le versioni e l'origine URLs

Struttura di esempio

Di seguito è riportato un esempio di GOMODCACHE struttura.

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

Questa struttura produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Scansione delle dipendenze in Java

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
Java Maven

JavaApplicazioni compilate (.jar/.war/.ear)

pom.xml

N/D

N/D

N/D

N/D

N/D

N/D

Nota

La nostra funzione di valutazione delle vulnerabilità supporta solo il repository Maven Central. I repository di terze parti, ad esempio, non sono attualmente JBoss Enterprise Maven Repository supportati.

Amazon Inspector SBOM Generator esegue la scansione delle Java dipendenze analizzando applicazioni e file compilati. Java pom.xml Durante la scansione di applicazioni compilate, lo scanner genera hash SHA—1 per la verifica dell'integrità, estrae i file incorporati e analizza i file annidati. pom.properties pom.xml

Raccolta di hash SHA—1 (per file compilati in formato.jar, .war, .ear)

Amazon Inspector SBOM Generator cerca di raccogliere hash SHA—1 per tutti e .war file in un progetto per garantire l'.earintegrità .jar e la tracciabilità degli artefatti compilati. Java

Funzionalità principali
  • Genera hash SHA—1 per tutti gli artefatti compilati Java

Esempio di artefatto

Di seguito è riportato un esempio di artefatto SHA—1.

{ "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" } ] }
Nota

Questo artefatto produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

pom.properties

Il pom.properties file viene utilizzato nei Maven progetti per archiviare i metadati del progetto, inclusi i nomi e le versioni dei pacchetti. Amazon Inspector SBOM Generator analizza questo file per raccogliere informazioni sul progetto.

Funzionalità principali
  • Analizza ed estrae gli elementi, i gruppi di pacchetti e le versioni dei pacchetti

Esempio di file pom.properties

Di seguito è riportato un esempio di un file pom.properties.

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

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Esclusa l'analisi annidata pom.xml

Se si desidera escludere l'pom.xmlanalisi durante la scansione di Java applicazioni compilate, utilizzare l'argomento. --skip-nested-pomxml

pom.xml

Il pom.xml file è il file di configurazione principale per i Maven progetti. Contiene informazioni sui progetti e sulle dipendenze dei progetti. Amazon Inspector SBOM Generator analizza pom.xml i file per raccogliere le dipendenze, scansiona i file autonomi nei repository e i file all'interno di file compilati. .jar

Funzionalità principali
  • Analizza ed estrae gli elementi dei pacchetti, i gruppi di pacchetti e le versioni dei pacchetti dai file. pom.xml

Ambiti e tag supportati Maven

Le dipendenze vengono raccolte con i seguenti ambiti: Maven

  • compile

  • fornito

  • runtime

  • test

  • sistema

  • importare

Le dipendenze vengono raccolte con il seguente Maven tag:<optional>true</optional>.

pom.xmlFile di esempio con un ambito

Di seguito è riportato un esempio di pom.xml file con un ambito.

<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.xmlFile di esempio senza ambito

Di seguito è riportato un esempio di pom.xml file senza ambito.

<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>
Nota

Ciascuno di questi file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

JavaScript scansione delle dipendenze

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
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/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

No

No

No

pacchetto.json

Il package.json file è un componente fondamentale dei progetti. Node.js Contiene metadati sui pacchetti installati. Amazon Inspector SBOM Generator analizza questo file per identificare i nomi e le versioni dei pacchetti.

Funzionalità principali
  • Analizza la struttura dei file JSON per estrarre i nomi e le versioni dei pacchetti

  • Identifica i pacchetti privati con valori privati

Esempio di file package.json

Di seguito è riportato un esempio di un file package.json.

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

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

package-lock.json

Il package-lock.json file viene generato automaticamente da npm per bloccare le versioni esatte delle dipendenze installate per un progetto. Garantisce la coerenza negli ambienti memorizzando le versioni esatte di tutte le dipendenze e le relative sottodipendenze. Questo file può distinguere tra dipendenze regolari e dipendenze di sviluppo.

Funzionalità principali
  • Analizza la struttura dei file JSON per estrarre i nomi e le versioni dei pacchetti

  • Supporta il rilevamento delle dipendenze degli sviluppatori

Esempio di file package-lock.json

Di seguito è riportato un esempio di un file package-lock.json.

"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=" }
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

npm-shrinkwrap.json

npmgenera automaticamente npm-shrinkwrap.json file package-lock.json e file per bloccare le versioni esatte delle dipendenze installate per un progetto. Ciò garantisce la coerenza negli ambienti memorizzando le versioni esatte di tutte le dipendenze e sottodipendenze. I file distinguono tra dipendenze regolari e dipendenze di sviluppo.

Funzionalità principali
  • Analizza package-lock le versioni 1, 2 e 3 della struttura del JSON file per estrarre il nome e la versione del pacchetto

  • È supportato il rilevamento delle dipendenze degli sviluppatori (package-lock.jsonacquisisce le dipendenze di produzione e sviluppo, consentendo agli strumenti di identificare quali pacchetti vengono utilizzati negli ambienti di sviluppo)

  • Al npm-shrinkwrap.json file viene data la priorità rispetto al file package-lock.json

Esempio

Di seguito è riportato un esempio di un file package-lock.json.

"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

Il pnpm-lock.yaml file viene generato da pnpm per mantenere un registro delle versioni di dipendenza installate. Inoltre, tiene traccia delle dipendenze di sviluppo separatamente.

Funzionalità principali
  • Analizza la struttura dei file YAML per estrarre i nomi e le versioni dei pacchetti

  • Supporta il rilevamento delle dipendenze degli sviluppatori

Esempio

Di seguito è riportato un esempio di un file pnpm-lock.yaml.

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
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

yarn.lock

Amazon Inspector SBOM Generator cerca di raccogliere hash SHA—1 e .war file in un progetto per garantire l'.earintegrità .jar e la tracciabilità degli artefatti compilati. Java

Funzionalità principali
  • Genera hash SHA—1 per tutti gli artefatti compilati Java

Esempio di artefatto SHA—1

Di seguito è riportato un esempio di artefatto SHA—1.

"@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
Nota

Questo artefatto produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Scansione delle dipendenze.NET

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
.NET

.NET Core

Nuget

Nuget

.NET

*.deps.json

Packages.config

packages.lock.json

.csproj

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

Packages.config

Il Packages.config file è un file XML utilizzato da una versione precedente di per gestire le dipendenze del progettoNuget. Elenca tutti i pacchetti a cui fa riferimento il progetto, incluse versioni specifiche.

Funzionalità principali
  • Analizza la struttura XML per estrarre pacchetti IDs e versioni

Esempio

Di seguito è riportato un esempio di un file Packages.config.

<?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>
Nota

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

*.deps.json

Il *.deps.json file viene generato dai .NET Core progetti e contiene informazioni dettagliate su tutte le dipendenze, inclusi percorsi, versioni e dipendenze di runtime. Questo file assicura che il runtime disponga delle informazioni necessarie per caricare le versioni corrette delle dipendenze.

Funzionalità principali
  • Analizza la struttura JSON per dettagli completi sulle dipendenze

  • Estrae i nomi e le versioni dei pacchetti in un elenco. libraries

Esempio di file .deps.json

Di seguito è riportato un esempio di un file .deps.json.

{ "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" }, }
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

packages.lock.json

Il packages.lock.json file viene utilizzato dalle versioni più recenti di Nuget per bloccare le versioni esatte delle dipendenze di un .NET progetto per garantire che le stesse versioni vengano utilizzate in modo coerente in ambienti diversi.

Funzionalità principali
  • Analizza la struttura JSON per elencare le dipendenze bloccate

  • Supporta dipendenze dirette e transitive

  • Estrae il nome del pacchetto e le versioni risolte

Esempio di file packages.lock.json

Di seguito è riportato un esempio di un file packages.lock.json.

{ "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==" } } } }
Nota

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

.csproj

Il .csproj file è scritto in XML e il file di progetto è per i progetti. .NET Include riferimenti a Nuget pacchetti, proprietà del progetto e configurazioni di build.

Funzionalità principali
  • Analizza la struttura XML per estrarre i riferimenti ai pacchetti

Esempio di file .csproj

Di seguito è riportato un esempio di un file .csproj.

<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>
Esempio di file .csproj

Di seguito è riportato un esempio di un file .csproj.

<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)" />
Nota

Ciascuno di questi file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Scansione delle dipendenze PHP

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
PHP Composer

composer.lock

/vendor/composer/installed.json

N/D

N/D

N/D

N/D

N/D

N/D

composer.lock

Il composer.lock file viene generato automaticamente quando si eseguono i comandi composer install o composer update. Questo file garantisce che le stesse versioni delle dipendenze siano installate in ogni ambiente. Ciò fornisce un processo di compilazione coerente e affidabile.

Funzionalità principali
  • Analizza il formato JSON per i dati strutturati

  • Estrae i nomi e le versioni delle dipendenze

Esempio di file composer.lock

Di seguito è riportato un esempio di un file composer.lock.

{ "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 }
Nota

Questo produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

/.json vendor/composer/installed

Il /vendor/composer/installed.json file si trova nella vendor/composer directory e fornisce un elenco completo di tutti i pacchetti installati e delle versioni dei pacchetti.

Funzionalità principali
  • Analizza il formato JSON per i dati strutturati

  • Estrae i nomi e la versione delle dipendenze

Esempio di file /vendor/composer/installed.json

Di seguito è riportato un esempio di un file /vendor/composer/installed.json.

{ "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 }
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Scansione delle dipendenze in Python

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
Python

pip

Poetry

Pipenv

Egg/Wheel

requirements.txt

Poetry.lock

Pipfile.lock

.egg-info/PKG-INFO

.dist-info/METADATA

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

requirements.txt

Il requirements.txt file è un formato ampiamente utilizzato nei Python progetti per specificare le dipendenze del progetto. Ogni riga di questo file include un pacchetto con i relativi vincoli di versione. Amazon Inspector SBOM Generator analizza questo file per identificare e catalogare accuratamente le dipendenze.

Funzionalità principali
  • Supporta gli specificatori di versione (== e =)

  • Supporta commenti e linee di dipendenza complesse

Nota

Gli specificatori di versione <= e => non sono supportati.

Esempio di file requirements.txt

Di seguito è riportato un esempio di un file requirements.txt.

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

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

pipfile.lock

Pipenvè uno strumento che offre il meglio di tutti i mondi del packaging (impacchettato, bloccato e sbloccato). Pipfile.lockBlocca le versioni esatte delle dipendenze per facilitare le build deterministiche. Amazon Inspector SBOM Generator legge questo file per elencare le dipendenze e le relative versioni risolte.

Funzionalità principali
  • Analizza il formato JSON per la risoluzione delle dipendenze

  • Supporta le dipendenze predefinite e di sviluppo

Esempio di file Pipfile.lock

Di seguito è riportato un esempio di un file Pipfile.lock.

{ "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" } } }
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Poetry.lock

Poetryè uno strumento di gestione e pacchettizzazione delle dipendenze per Python. Il Poetry.lock file blocca le versioni esatte delle dipendenze per facilitare ambienti coerenti. Amazon Inspector SBOM Generator estrae informazioni dettagliate sulle dipendenze da questo file.

Funzionalità principali
  • Analizza il formato TOML per i dati strutturati

  • Estrae i nomi e le versioni delle dipendenze

Esempio di file Poetry.lock

Di seguito è riportato un esempio di un file Poetry.lock.

[[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"
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Uovo/Ruota

Per i pacchetti Python installati a livello globale, Amazon Inspector SBOM Generator supporta l'analisi dei file di metadati presenti nelle directory and. .egg-info/PKG-INFO .dist-info/METADATA Questi file forniscono metadati dettagliati sui pacchetti installati.

Funzionalità principali
  • Estrae il nome e la versione del pacchetto

  • Supporta sia i formati a uovo che a forma di ruota

Esempio di file PKG-INFO/METADATA

Di seguito è riportato un esempio di un file PKG-INFO/METADATA.

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/
Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Scansione delle dipendenze con Ruby

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto per il toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
Ruby Bundler

Gemfile.lock

.gemspec

globall installed Gems

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

GemFile.lock

Il Gemfile.lock file blocca le versioni esatte di tutte le dipendenze per garantire che le stesse versioni vengano utilizzate in ogni ambiente.

Funzionalità principali
  • Analizza il Gemfile.lock file in base alle dipendenze e alle versioni delle dipendenze

  • Estrae i nomi dettagliati dei pacchetti e le versioni dei pacchetti

Esempio di file Gemfile.lock

Di seguito è riportato un esempio di un file Gemfile.lock.

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

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

.gemspec

Il .gemspec file è un RubyGem file contenente metadati su una gemma. Amazon Inspector SBOM Generator analizza questo file per raccogliere informazioni dettagliate su una gemma.

Funzionalità principali
  • Analizza ed estrae il nome e la versione della gemma

Nota

La specifica di riferimento non è supportata.

Esempio di file .gemspec

Di seguito è riportato un esempio di un file .gemspec.

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
Nota

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Gemme installate a livello globale

Amazon Inspector SBOM Generator supporta la scansione di gem installate a livello globale, che si trovano in directory standard, ad esempio in /usr/local/lib/ruby/gems/<ruby_version>/gems/ EC2 Amazon/Amazon ECR e in Lambda. ruby/gems/<ruby_version>/gems/ Questo assicura che tutte le dipendenze installate a livello globale siano identificate e catalogate.

Funzionalità principali
  • Identifica e analizza tutte le gem installate a livello globale in directory standard

  • Estrae i metadati e le informazioni sulla versione per ogni gem installata a livello globale

Esempio di struttura di directory

Di seguito è riportato un esempio di struttura di directory.

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

Questa struttura produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Scansione delle dipendenze da Rust

Linguaggio di programmazione Programma di gestione dei pacchetti Artefatti supportati Supporto Toolchain Dipendenze di sviluppo Dipendenze transitive Bandiera privata Ricorsivamente
Rust Cargo.toml

Cargo.toml

Cargo.lock

Rust binary (built with cargo-auditable)

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

N/D

Cargo.toml

Il Cargo.toml file è il file manifesto dei progetti. Rust

Funzionalità principali
  • Analizza ed estrae il Cargo.toml file per identificare il nome e la versione del pacchetto del progetto.

Esempio di file Cargo.toml

Di seguito è riportato un esempio di un file Cargo.toml.

[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"
Nota

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Cargo.lock

Il Cargo.lock file blocca le versioni dipendenti per garantire che vengano utilizzate le stesse versioni ogni volta che viene creato un progetto.

Funzionalità principali
  • Analizza il Cargo.lock file per identificare tutte le dipendenze e le versioni delle dipendenze.

Esempio di file Cargo.lock

Di seguito è riportato un esempio di un file Cargo.lock.

# 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"
Nota

Questo file produce un output che contiene l'URL del pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

File binari Rust con cargo-auditable

Amazon Inspector SBOM Generator raccoglie le dipendenze dai Rust file binari creati con la libreria. cargo-auditable Ciò fornisce informazioni aggiuntive sulle dipendenze abilitando l'estrazione delle dipendenze dai binari compilati.

Funzionalità principali
  • Estrae le informazioni sulle dipendenze direttamente dai Rust file binari creati con la libreria cargo-auditable

  • Recupera i metadati e le informazioni sulla versione per le dipendenze incluse nei file binari

Nota

Questo file produce un output che contiene l'URL di un pacchetto. Questo URL può essere utilizzato per specificare informazioni sui pacchetti software durante la generazione di una distinta base del software e può essere incluso nell'ScanSbomAPI. Per ulteriori informazioni, vedere package-url sul sito Web. GitHub

Artefatti non supportati

Questa sezione descrive gli artefatti non supportati.

Java

Il generatore Amazon Inspector SBOM Generator supporta solo il rilevamento delle vulnerabilità per le dipendenze provenienti dal repository principale. Maven Gli Maven archivi privati o personalizzati, come e, non sono supportati. Red Hat Maven Jenkins Per un rilevamento accurato delle vulnerabilità, assicurati che Java le dipendenze vengano estratte dal repository principale. Maven Le dipendenze da altri repository non verranno coperte nelle scansioni di vulnerabilità.

JavaScript

pacchetti esbuild

Per i esbuild pacchetti ridotti, Amazon Inspector SBOM Generator non supporta la scansione delle dipendenze per i progetti che li utilizzano. esbuild Le mappe di origine generate da esbuild non includono metadati sufficienti (nomi e versioni delle dipendenze) necessari per una generazione accurata. Sbomgen Per risultati affidabili, scansiona i file di progetto originali, come node_modules/directory epackage-lock.json, prima del processo di raggruppamento.

pacchetto.json

Amazon Inspector SBOM Generator non supporta la scansione del file package.json a livello di root per informazioni sulle dipendenze. Questo file specifica solo i nomi dei pacchetti e gli intervalli di versioni, ma non include le versioni dei pacchetti completamente risolte. Per risultati di scansione accurati, utilizzate package.json o altri file di blocco, come yarn.lock epnpm.lock, che includono versioni risolte.

Dotnet

Quando si utilizzano versioni mobili o intervalli di versioniPackageReference, diventa più difficile determinare l'esatta versione del pacchetto utilizzata in un progetto senza eseguire la risoluzione del pacchetto. Le versioni e gli intervalli di versioni fluttuanti consentono agli sviluppatori di specificare un intervallo di versioni del pacchetto accettabili anziché una versione fissa.

Binari Go

Amazon Inspector SBOM Generator non esegue la scansione di Go file binari creati con flag di build configurati per escludere l'ID di build. Questi flag di build Bomerman impediscono di mappare accuratamente il file binario alla sua fonte originale. GoI file binari non chiari non sono supportati a causa dell'impossibilità di estrarre le informazioni sui pacchetti. Per una scansione accurata delle dipendenze, assicurati che i Go file binari siano compilati con le impostazioni predefinite, incluso l'ID di build.

Binari Rust

Amazon Inspector SBOM Generator analizza i Rust file binari solo se questi sono stati creati utilizzando la libreria cargo-auditable. Rusti file binari che non utilizzano questa libreria non dispongono dei metadati necessari per un'estrazione accurata delle dipendenze. Amazon Inspector SBOM Generator estrae la versione compilata della Rust toolchain a partire dalla Rust 1.7.3, ma solo per i file binari in un ambiente. Linux Per una scansione completa, crea file binari utilizzando cargo-auditable. Rust Linux

Nota

Il rilevamento delle vulnerabilità per la Rust toolchain stessa non è supportato, anche se la versione della toolchain viene estratta.