Coleção de dependências da linguagem de programação - Amazon Inspector

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Coleção de dependências da linguagem de programação

O Amazon Inspector SBOM Generator suporta diferentes linguagens e estruturas de programação, que compõem uma coleção robusta e detalhada de dependências. A geração de um SBOM ajuda você a entender a composição do seu software, para que você possa identificar vulnerabilidades e manter a conformidade com os padrões de segurança. O Amazon Inspector SBOM Generator suporta as seguintes linguagens de programação e formatos de arquivo.

Escaneamento de dependências Go

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
Go Go

go.mod

go.sum

Go Binaries

GOMODCACHE

N/D

N/D

Sim

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

Sim

Sim

Sim

Não

go.mod/go.sum

Use go.mod go.sum arquivos para definir e bloquear dependências em Go projetos. O Amazon Inspector SBOM Generator gerencia esses arquivos de forma diferente com base na versão do Go conjunto de ferramentas.

Atributos principais
  • Coleta dependências de go.mod (se a versão do Go conjunto de ferramentas for 1.17 ou superior)

  • Coleta dependências de go.sum (se a versão do Go conjunto de ferramentas for 1.17 ou inferior)

  • Analisa go.mod para identificar todas as dependências declaradas e versões de dependências

Exemplo de arquivo go.mod

Veja a seguir um exemplo de go.mod arquivo.

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 )
Exemplo de arquivo go.sum

Veja a seguir um exemplo de go.sum arquivo.

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

Cada um desses arquivos produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Binários Go

O Amazon Inspector SBOM Generator extrai dependências de Go binários compilados para fornecer garantia sobre o código em uso.

nota

O Amazon Inspector SBOM Generator suporta a captura e avaliação de versões do conjunto de ferramentas a partir de Go binários criados usando o compilador oficial. Go Para obter mais informações, consulte Baixar e instalar no Go site. Se você estiver usando o Go conjunto de ferramentas de outro fornecedor, por exemplo, a avaliação pode não ser precisa devido a possíveis diferenças na distribuição e na disponibilidade de metadados. Red Hat

Atributos principais
  • Extrai informações de dependência diretamente dos binários Go

  • Coleta dependências incorporadas no binário

  • Detecta e extrai a versão do Go conjunto de ferramentas usada para compilar o binário.

GOMODCACHE

O Amazon Inspector SBOM Generator verifica o cache do Go módulo para coletar informações sobre dependências instaladas. Esse cache armazena os módulos baixados para garantir que as mesmas versões sejam usadas em diferentes compilações.

Atributos principais
  • Escaneia o GOMODCACHE diretório para identificar módulos em cache

  • Extrai metadados detalhados, incluindo nomes de módulos, versões e fonte URLs

Exemplo de estrutura

Veja a seguir um exemplo da estrutura GOMODCACHE.

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

Essa estrutura produz uma saída que contém uma URL de pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Análise de dependências de Java

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
Java Maven

JavaAplicativos compilados (.jar/.war/.ear)

pom.xml

N/D

N/D

N/D

N/D

Sim

Sim

N/D

N/D

Sim

Sim

nota

Nosso recurso de avaliação de vulnerabilidade só é compatível com o repositório Maven Central. Atualmente, não há suporte para repositórios de terceirosJBoss Enterprise Maven Repository, como, por exemplo.

O Amazon Inspector SBOM Generator executa a varredura de Java dependências analisando aplicativos e arquivos compiladosJava. pom.xml Ao escanear aplicativos compilados, o scanner gera hashes SHA—1 para verificação de integridade, extrai pom.properties arquivos incorporados e analisa arquivos aninhados. pom.xml

Coleção de hash SHA—1 (para arquivos.jar, .war, .ear compilados)

O Amazon Inspector SBOM Generator tenta coletar hashes SHA—1 para todos os .ear .war arquivos e arquivos em um projeto para garantir a integridade e a rastreabilidade dos artefatos compilados. .jar Java

Atributos principais
  • Gera hashes SHA—1 para todos os artefatos compilados Java

Exemplo de artefato

Veja a seguir um exemplo de um artefato 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

Esse artefato produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

propriedades da pomada

O pom.properties arquivo é usado em Maven projetos para armazenar metadados do projeto, incluindo nomes e versões de pacotes. O Amazon Inspector SBOM Generator analisa esse arquivo para coletar informações do projeto.

Atributos principais
  • Analisa e extrai artefatos de pacotes, grupos de pacotes e versões de pacotes

Exemplo de arquivo pom.properties

Este é um exemplo de um arquivo pom.properties.

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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Excluindo análise aninhada pom.xml

Se você quiser excluir a pom.xml análise ao escanear Java aplicativos compilados, use o --skip-nested-pomxml argumento.

pom.xml

O pom.xml arquivo é o arquivo de configuração principal dos Maven projetos. Ele contém informações sobre projetos e dependências do projeto. O Amazon Inspector SBOM Generator analisa pom.xml arquivos para coletar dependências, examinando arquivos autônomos em repositórios e arquivos dentro de arquivos compilados. .jar

Atributos principais
  • Analisa e extrai artefatos de pacotes, grupos de pacotes e versões de pacotes de arquivos. pom.xml

MavenEscopos e tags compatíveis

As dependências são coletadas com os seguintes Maven escopos:

  • compile

  • fornecido

  • runtime

  • teste

  • operacional

  • Importar

As dependências são coletadas com a seguinte Maven tag:<optional>true</optional>.

pom.xmlArquivo de exemplo com um escopo

Veja a seguir um exemplo de pom.xml arquivo com escopo.

<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.xmlArquivo de exemplo sem escopo

Veja a seguir um exemplo de um pom.xml arquivo sem escopo.

<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

Cada um desses arquivos produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

JavaScript varredura de dependências

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
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

Sim

Sim

Sim

Sim

N/D

N/D

N/D

Sim

N/D

N/D

N/D

Sim

Não

Não

Não

package.json

O package.json arquivo é um componente essencial dos Node.js projetos. Ele contém metadados sobre pacotes instalados. O Amazon Inspector SBOM Generator verifica esse arquivo para identificar nomes e versões de pacotes.

Atributos principais
  • Analisa a estrutura de arquivos JSON para extrair nomes e versões de pacotes

  • Identifica pacotes privados com valores privados

Exemplo de arquivo package.json

Este é um exemplo de um arquivo package.json.

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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

package-lock.json

O package-lock.json arquivo é gerado automaticamente pelo npm para bloquear as versões exatas das dependências instaladas para um projeto. Ele garante a consistência nos ambientes armazenando versões exatas de todas as dependências e suas subdependências. Esse arquivo pode distinguir entre dependências regulares e dependências de desenvolvimento.

Atributos principais
  • Analisa a estrutura de arquivos JSON para extrair nomes e versões de pacotes

  • Oferece suporte à detecção de dependências de desenvolvedores

Exemplo de arquivo package-lock.json

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

npm-shrinkwrap.json

npmgera automaticamente package-lock.json e npm-shrinkwrap.json arquiva para bloquear as versões exatas das dependências instaladas para um projeto. Isso garante a consistência nos ambientes ao armazenar versões exatas de todas as dependências e subdependências. Os arquivos distinguem entre dependências regulares e dependências de desenvolvimento.

Atributos principais
  • Analise package-lock as versões 1, 2 e 3 da estrutura do JSON arquivo para extrair o nome e a versão do pacote

  • A detecção de dependências do desenvolvedor é suportada (package-lock.jsoncaptura dependências de produção e desenvolvimento, permitindo que as ferramentas identifiquem quais pacotes são usados em ambientes de desenvolvimento)

  • O npm-shrinkwrap.json arquivo é priorizado sobre o package-lock.json arquivo

Exemplo

Este é um exemplo de um arquivo 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

O pnpm-lock.yaml arquivo é gerado pelo pnpm para manter um registro das versões de dependências instaladas. Ele também rastreia as dependências de desenvolvimento separadamente.

Atributos principais
  • Analisa a estrutura do arquivo YAML para extrair nomes e versões de pacotes

  • Oferece suporte à detecção de dependências de desenvolvedores

Exemplo

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

fio. Fechadura

O Amazon Inspector SBOM Generator tenta coletar hashes SHA—1 para.ear,.jar, e .war arquivos em um projeto para garantir a integridade e a rastreabilidade dos artefatos compilados. Java

Atributos principais
  • Gera hashes SHA—1 para todos os artefatos compilados Java

Exemplo de artefato SHA—1

Veja a seguir um exemplo de um artefato 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

Esse artefato produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Análise de dependências.NET

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
.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

Sim

N/D

N/D

N/D

N/D

N/D

Sim

Sim

Sim

Sim

Pacotes. config

O Packages.config arquivo é um arquivo XML usado por uma versão mais antiga do Nuget para gerenciar dependências do projeto. Ele lista todos os pacotes referenciados pelo projeto, incluindo versões específicas.

Atributos principais
  • Analisa a estrutura XML para extrair pacotes IDs e versões

Exemplo

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

*.deps.json

O *.deps.json arquivo é gerado por .NET Core projetos e contém informações detalhadas sobre todas as dependências, incluindo caminhos, versões e dependências de tempo de execução. Esse arquivo garante que o tempo de execução tenha as informações necessárias para carregar as versões corretas das dependências.

Atributos principais
  • Analisa a estrutura JSON para obter detalhes abrangentes da dependência

  • Extrai nomes e versões de pacotes em uma libraries lista.

Exemplo de arquivo .deps.json

Este é um exemplo de um arquivo .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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

packages.lock.json

O packages.lock.json arquivo é usado pelas versões mais recentes do Nuget para bloquear as versões exatas das dependências de um .NET projeto para garantir que as mesmas versões sejam usadas de forma consistente em diferentes ambientes.

Atributos principais
  • Analisa a estrutura JSON para listar dependências bloqueadas

  • Suporta dependências diretas e transitivas

  • Extrai o nome do pacote e as versões resolvidas

Exemplo de arquivo packages.lock.json

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

.csproj

O .csproj arquivo é escrito em XML e o arquivo de projeto para .NET projetos. Ele inclui referências a Nuget pacotes, propriedades do projeto e configurações de compilação.

Atributos principais
  • Analisa XML, a estrutura para extrair referências de pacotes

Exemplo de arquivo .csproj

Este é um exemplo de um arquivo .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>
Exemplo de arquivo .csproj

Este é um exemplo de um arquivo .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

Cada um desses arquivos produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Análise de dependências do PHP

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
PHP Composer

composer.lock

/vendor/composer/installed.json

N/D

N/D

N/D

N/D

Sim

Sim

N/D

N/D

Sim

Sim

composer.lock

O composer.lock arquivo é gerado automaticamente ao executar os comandos composer install ou composer update. Esse arquivo garante que as mesmas versões das dependências sejam instaladas em todos os ambientes. Isso fornece um processo de construção consistente e confiável.

Atributos principais
  • Analisa o formato JSON para dados estruturados

  • Extrai nomes e versões de dependências

Exemplo de arquivo composer.lock

Este é um exemplo de um arquivo 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

Isso produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

/vendor/composer/installed.json

O /vendor/composer/installed.json arquivo está localizado no vendor/composer diretório e fornece uma lista abrangente de todos os pacotes e versões de pacotes instalados.

Atributos principais
  • Analisa o formato JSON para dados estruturados

  • Extrai os nomes e a versão das dependências

Exemplo de arquivo /vendor/composer/installed.json

Este é um exemplo de um arquivo /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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Escaneamento de dependências do Python

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
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

Sim

Sim

Sim

Sim

Sim

requirements.txt

O requirements.txt arquivo é um formato amplamente usado em Python projetos para especificar as dependências do projeto. Cada linha nesse arquivo inclui um pacote com suas restrições de versão. O Amazon Inspector SBOM Generator analisa esse arquivo para identificar e catalogar dependências com precisão.

Atributos principais
  • Suporta especificadores de versão (== e ˜=)

  • Suporta comentários e linhas de dependência complexas

nota

Os especificadores de versão <= e => não são compatíveis.

Exemplo de arquivo requirements.txt

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Arquivo PIP. Lock

Pipenvé uma ferramenta que traz o melhor de todos os mundos de embalagens (agrupadas, fixadas e não fixadas). O Pipfile.lock bloqueia versões exatas das dependências para facilitar construções determinísticas. O Amazon Inspector SBOM Generator lê esse arquivo para listar dependências e suas versões resolvidas.

Atributos principais
  • Analisa o formato JSON para resolução de dependências

  • Suporta dependências padrão e de desenvolvimento

Exemplo de arquivo Pipfile.lock

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Poetry.lock

Poetryé uma ferramenta de gerenciamento e empacotamento de dependências para Python. O Poetry.lock arquivo bloqueia versões exatas das dependências para facilitar ambientes consistentes. O Amazon Inspector SBOM Generator extrai informações detalhadas sobre dependências desse arquivo.

Atributos principais
  • Analisa o formato TOML para dados estruturados

  • Extrai nomes e versões de dependências

Exemplo de arquivo Poetry.lock

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Ovo/roda

Para pacotes Python instalados globalmente, o Amazon Inspector SBOM Generator suporta a análise de arquivos de metadados encontrados nos diretórios e. .egg-info/PKG-INFO .dist-info/METADATA Esses arquivos fornecem metadados detalhados sobre os pacotes instalados.

Atributos principais
  • Extrai o nome e a versão do pacote

  • Suporta os formatos de ovo e roda

Exemplo de arquivo PKG-INFO/METADATA

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Análise de dependências do Ruby

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte ao conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
Ruby Bundler

Gemfile.lock

.gemspec

globall installed Gems

N/D

N/D

N/D

N/D

N/D

N/D

Sim

N/D

N/D

N/D

N/D

N/D

Sim

Sim

Sim

Gemfile.lock

O Gemfile.lock arquivo bloqueia versões exatas de todas as dependências para garantir que as mesmas versões sejam usadas em todos os ambientes.

Atributos principais
  • Analisa o Gemfile.lock arquivo para identificar dependências e versões de dependências

  • Extrai nomes e versões de pacotes detalhados

Exemplo de arquivo Gemfile.lock

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

.gemspec

O .gemspec arquivo é um RubyGem arquivo contendo metadados sobre uma gema. O Amazon Inspector SBOM Generator analisa esse arquivo para coletar informações detalhadas sobre uma gema.

Atributos principais
  • Analisa e extrai o nome e a versão da gema

nota

A especificação de referência não é suportada.

Exemplo de arquivo .gemspec

Este é um exemplo de um arquivo .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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Gemas instaladas globalmente

O Amazon Inspector SBOM Generator suporta a digitalização de gems instaladas globalmente, localizadas em diretórios padrão, como no /usr/local/lib/ruby/gems/<ruby_version>/gems/ EC2 Amazon/Amazon ECR e no Lambda. ruby/gems/<ruby_version>/gems/ Isso garante que todas as dependências instaladas globalmente sejam identificadas e catalogadas.

Atributos principais
  • Identifica e verifica todas as gems instaladas globalmente em diretórios padrão

  • Extrai metadados e informações de versão para cada gem instalada globalmente

Exemplo de estrutura de diretórios

Veja a seguir um exemplo de uma estrutura de diretórios.

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

Essa estrutura produz uma saída que contém uma URL de pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Análise de dependências do Rust

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte para conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Bandeira privada Recursivamente
Rust Cargo.toml

Cargo.toml

Cargo.lock

Rust binary (built with cargo-auditable)

N/D

N/D

Sim

N/D

N/D

N/D

N/D

Sim

N/D

N/D

N/D

N/D

Sim

Sim

Sim

Carga para ML

O Cargo.toml arquivo é o arquivo de manifesto Rust dos projetos.

Atributos principais
  • Analisa e extrai o Cargo.toml arquivo para identificar o nome e a versão do pacote do projeto.

Exemplo de arquivo Cargo.toml

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Cargo.lock

O Cargo.lock arquivo bloqueia as versões de dependência para garantir que as mesmas versões sejam usadas sempre que um projeto é criado.

Atributos principais
  • Analisa o Cargo.lock arquivo para identificar todas as dependências e versões de dependências.

Exemplo de arquivo Cargo.lock

Este é um exemplo de um arquivo 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

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Binários Rust com carga auditável

O Amazon Inspector SBOM Generator coleta dependências de Rust binários criados com a biblioteca. cargo-auditable Isso fornece informações adicionais sobre dependências ao permitir a extração de dependências de binários compilados.

Atributos principais
  • Extrai informações de dependência diretamente dos Rust binários criados com a biblioteca cargo-auditable

  • Recupera metadados e informações de versão das dependências incluídas nos binários

nota

Esse arquivo produz uma saída que contém a URL do pacote. Esse URL pode ser usado para especificar informações sobre pacotes de software ao gerar uma lista de materiais de software e pode ser incluído na ScanSbomAPI. Para obter mais informações, consulte package-url no GitHub site.

Artefatos não suportados

Esta seção descreve artefatos não compatíveis.

Java

O gerador Amazon Inspector SBOM Generator só suporta a detecção de vulnerabilidades para dependências provenientes do repositório principal. Maven Não há suporte para Maven repositórios privados ou personalizadosJenkins, como Red Hat Maven e. Para uma detecção precisa de vulnerabilidades, certifique-se de que Java as dependências sejam retiradas do repositório principalMaven. Dependências de outros repositórios não serão abordadas nas verificações de vulnerabilidade.

JavaScript

pacotes esbuild

Para pacotes esbuild reduzidos, o Amazon Inspector SBOM Generator não suporta a verificação de dependências para projetos que usam. esbuild Os mapas de origem gerados por esbuild não incluem metadados suficientes (nomes e versões de dependências) necessários para uma geração precisaSbomgen. Para obter resultados confiáveis, verifique os arquivos originais do projeto, como node_modules/directory epackage-lock.json, antes do processo de agrupamento.

package.json

O Amazon Inspector SBOM Generator não suporta a verificação do arquivo package.json no nível raiz para obter informações sobre dependências. Esse arquivo especifica apenas nomes de pacotes e intervalos de versões, mas não inclui versões de pacotes totalmente resolvidas. Para obter resultados de digitalização precisos, use package.json ou outros arquivos de bloqueio, como yarn.lock epnpm.lock, que incluam versões resolvidas.

Dotnet

Ao usar versões flutuantes ou intervalos de versõesPackageReference, fica mais difícil determinar a versão exata do pacote usada em um projeto sem realizar a resolução do pacote. Versões flutuantes e intervalos de versões permitem que os desenvolvedores especifiquem um intervalo de versões de pacotes aceitáveis em vez de uma versão fixa.

Binários Go

O Amazon Inspector SBOM Generator não escaneia Go binários que são criados com sinalizadores de compilação configurados para excluir o ID de compilação. Esses sinalizadores de construção Bomerman impedem o mapeamento preciso do binário até sua fonte original. Não há suporte para Go binários pouco claros devido à incapacidade de extrair informações do pacote. Para uma verificação precisa de dependências, certifique-se de que Go os binários sejam criados com as configurações padrão, incluindo o ID da compilação.

Binários do Rust

O Amazon Inspector SBOM Generator só verifica binários se os Rust binários forem criados usando a biblioteca cargo-auditável. Rustos binários que não utilizam essa biblioteca não possuem os metadados necessários para a extração precisa de dependências. O Amazon Inspector SBOM Generator extrai a versão compilada do Rust conjunto de ferramentas a partir da Rust 1.7.3, mas somente para binários em um ambiente. Linux Para uma digitalização abrangente, crie Rust binários Linux usando o cargo-auditable.

nota

A detecção de vulnerabilidade para o Rust conjunto de ferramentas em si não é suportado, mesmo que a versão do conjunto de ferramentas seja extraída.