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 é compatível com diferentes linguagens e frameworks de programação, que compõem uma coleção robusta e detalhada de dependências. Gerar um SBOM ajuda você a entender a composição do software, para que você possa identificar vulnerabilidades e manter a conformidade com os padrões de segurança. O Amazon Inspector SBOM Generator é compatível com as linguagens de programação e formatos de arquivo a seguir.

Verificação de dependências do Go

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte do conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Sinalizador privado 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 arquivos go.mod e go.sum para definir e bloquear dependências em projetos do Go. O Amazon Inspector SBOM Generator gerencia esses arquivos de forma diferente com base na versão do conjunto de ferramentas do Go.

Recursos principais do
  • Coleta dependências de go.mod (se a versão do conjunto de ferramentas do Go é 1.17 ou posterior)

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

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

Exemplo de arquivo go.mod

Este é um exemplo do arquivo 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 )
Exemplo de arquivo go.sum

Este é um exemplo do arquivo go.sum.

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 gera uma saída que contém um 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 do Go

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

nota

O Amazon Inspector SBOM Generator é compatível com a captura e avaliação de versões do conjunto de ferramentas a partir de binários do Go criados usando o compilador do Go oficial. Consulte mais informações em Download and install no site do Go. Se você estiver usando o conjunto de ferramentas do Go de outro fornecedor, como Red Hat, a avaliação pode não ser precisa devido a possíveis diferenças na distribuição e na disponibilidade de metadados.

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

  • Coleta dependências incorporadas no binário

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

GOMODCACHE

O Amazon Inspector SBOM Generator verifica o cache do módulo do Go 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.

Recursos principais do
  • Verifica o diretório GOMODCACHE 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 gera uma saída que contém um 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.

Verificação de dependências do Java

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte do conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Sinalizador privado Recursivamente
Java Maven

Aplicações do Java compiladas (.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 terceiros, como JBoss Enterprise Maven Repository.

O Amazon Inspector SBOM Generator faz a verificação de dependências do Java analisando arquivos pom.xml e aplicações do Java compiladas. Ao verificar aplicações compiladas, o verificador gera hashes SHA–1 para verificação de integridade, extrai arquivos pom.properties incorporados e analisa arquivos pom.xml aninhados.

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

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

Recursos principais do
  • Gera hashes SHA–1 para todos os artefatos compilados do Java

Artefato de exemplo

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 gera uma saída que contém um 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.

pom.properties

O arquivo pom.properties é usado em projetos do Maven 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.

Recursos principais do
  • Analisa e extrai artefatos, grupos 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 gera uma saída que contém um 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.

Excluir a análise de pom.xml aninhados

Se você quiser excluir a análise do pom.xml ao verificar aplicações compiladas do Java, use o argumento --skip-nested-pomxml.

pom.xml

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

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

Escopos e tags do Maven compatíveis

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

  • compile

  • fornecido

  • runtime

  • teste

  • operacional

  • Importar

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

Exemplo de arquivo pom.xml com escopo

Veja a seguir um exemplo de um arquivo pom.xml 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>
Exemplo de arquivo pom.xml sem escopo

Veja a seguir um exemplo de um arquivo pom.xml 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 gera uma saída que contém um 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 verificação de dependências

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte do conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Sinalizador privado 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 arquivo package.json é um componente essencial dos projetos do Node.js. Ele contém metadados sobre os pacotes instalados. O Amazon Inspector SBOM Generator verifica esse arquivo para identificar nomes e versões de pacotes.

Recursos principais do
  • 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 gera uma saída que contém um 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.

package-lock.json

O arquivo package-lock.json é 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 de desenvolvimento.

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

  • Viabiliza a detecção de dependências de desenvolvedor

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 gera uma saída que contém um 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.

npm-shrinkwrap.json

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

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

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

  • O arquivo npm-shrinkwrap.json tem prioridade sobre o package-lock.json

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 arquivo pnpm-lock.yaml é gerado pelo pnpm para manter um registro das versões de dependências instaladas. Ele também rastreia as dependências de desenvolvimento separadamente.

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

  • Viabiliza a detecção de dependências de desenvolvedor

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 gera uma saída que contém um 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.

yarn.lock

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

Recursos principais do
  • Gera hashes SHA–1 para todos os artefatos compilados do 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 gera uma saída que contém um 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.

Verificação de dependências do .NET

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

Packages.config

O arquivo Packages.config é 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.

Recursos principais do
  • 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 gera uma saída que contém um 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.

*.deps.json

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

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

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

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 gera uma saída que contém um 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.

packages.lock.json

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

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

  • Permite 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 gera uma saída que contém um 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.

.csproj

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

Recursos principais do
  • Analisa a estrutura XML 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 gera uma saída que contém um 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.

Verificação de dependências do PHP

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte do conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Sinalizador privado 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 arquivo composer.lock é 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 compilação consistente e confiável.

Recursos principais do
  • 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 gera uma saída que contém um 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.

/vendor/composer/installed.json

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

Recursos principais do
  • Analisa o formato JSON para dados estruturados

  • Extrai nomes e versões de 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 gera uma saída que contém um 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.

Verificação de dependências do Python

Linguagem de programação Gerenciador de pacote Artefatos compatíveis Suporte do conjunto de ferramentas Dependências de desenvolvimento Dependências transitivas Sinalizador privado 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 arquivo requirements.txt é um formato amplamente usado em projetos do Python 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.

Recursos principais do
  • Permite especificadores de versão (== e ˜=)

  • Permite 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 gera uma saída que contém um 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.

Pipfile.lock

Pipenv é uma ferramenta que reúne o melhor de todos os mundos do empacotamento (empacotados, fixados e não fixados). O Pipfile.lock bloqueia versões exatas das dependências para facilitar compilações determinísticas. O Amazon Inspector SBOM Generator lê esse arquivo para listar dependências e suas versões resolvidas.

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

  • Permite 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 gera uma saída que contém um 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.

Poetry.lock

Poetry é uma ferramenta para gerenciamento de dependências e empacotamento para Python. O arquivo Poetry.lock 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.

Recursos principais do
  • 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 gera uma saída que contém um 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.

Egg/wheel

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

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

  • Suporta os formatos egg e wheel

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 gera uma saída que contém um 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.

Verificação 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 Sinalizador privado 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 arquivo Gemfile.lock bloqueia as versões exatas de todas as dependências para garantir que as mesmas versões sejam usadas em todos os ambientes.

Recursos principais do
  • Analisa o arquivo Gemfile.lock 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 gera uma saída que contém um 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.

.gemspec

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

Recursos principais do
  • Analisa e extrai o nome e a versão da gem

nota

A especificação de referência não é compatível.

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 gera uma saída que contém um 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.

Gems instaladas globalmente

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

Recursos principais do
  • 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ório

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

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

Essa estrutura gera uma saída que contém um 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.

Verificação de dependências do Rust

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

Cargo.toml

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

Recursos principais do
  • Analisa e extrai o arquivo Cargo.toml 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 gera uma saída que contém um 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.

Cargo.lock

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

Recursos principais do
  • Analisa o arquivo Cargo.lock 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 gera uma saída que contém um 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.

Binários Rust com cargo-auditable

O Amazon Inspector SBOM Generator coleta dependências de binários do Rust 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.

Recursos principais do
  • Extrai informações de dependência diretamente dos binários do Rust 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 gera uma saída que contém um 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.

Artefatos incompatíveis

Esta seção descreve os artefatos incompatíveis.

Java

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

JavaScript

Pacotes de esbuild

Para pacotes minificados pelo esbuild, o Amazon Inspector SBOM Generator não permite 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 precisa de Sbomgen. Para obter resultados confiáveis, verifique os arquivos originais do projeto, como node_modules/directory e package-lock.json, antes do processo de empacotamento.

package.json

O Amazon Inspector SBOM Generator não permite 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 verificação precisos, use package.json ou outros arquivos de bloqueio, como yarn.lock e pnpm.lock, que incluam versões resolvidas.

Dotnet

Ao usar versões flutuantes ou intervalos de versões em PackageReference, fica mais difícil determinar a versão exata do pacote usada em um projeto sem fazer 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 do Go

O Amazon Inspector SBOM Generator não verifica binários do Go que são criados com sinalizadores de compilação configurados para excluir o ID de compilação. Esses sinalizadores de construção impedem que o Amazon Inspector SBOM Generator mapeie com precisão o binário até sua fonte original. Não há suporte para binários do Go pouco claros devido à incapacidade de extrair informações do pacote. Para uma verificação precisa de dependências, certifique-se de que os binários do Go 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 do Rust se eles forem criados usando a biblioteca cargo-auditable. Os binários do Rust 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 conjunto de ferramentas do Rust a partir do Rust 1.7.3, mas somente para binários em um ambiente Linux. Para uma verificação abrangente, crie binários do Rust no Linux usando a cargo-auditable.

nota

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