Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Recopilación de dependencias de lenguajes de programación
El generador de SBOM de Amazon Inspector es compatible con diferentes marcos y lenguajes de programación, lo que constituye una recopilación sólida y detallada de dependencias. La generación de una SBOM lo ayuda a comprender la composición del software, de modo que puede identificar las vulnerabilidades y mantener el cumplimiento de las normas de seguridad. El generador de SBOM de Amazon Inspector admite los siguientes lenguajes de programación y formatos de archivo.
Ir a análisis de dependencias
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
Go |
Go |
|
N/A N/A Sí N/A |
N/A N/A N/A N/A |
N/A N/A N/A N/A |
N/A N/A N/A N/A |
Sí Sí Sí No |
go.mod/go.sum
Use archivos go.mod y go.sum para definir y bloquear las dependencias en los proyectos de Go. El generador de SBOM de Amazon Inspector administra estos archivos de forma diferente en función de la versión de la cadena de herramientas de Go.
Características principales de
-
Recopila las dependencias de
go.mod(si la versión de la cadena de herramientas de Go es la 1.17 o posterior) -
Recopila las dependencias de
go.sum(si la versión de la cadena de herramientas de Go es la 1.17 o anterior) -
Realiza un análisis de
go.modpara identificar todas las dependencias declaradas y las versiones de dependencias
Archivo go.mod de ejemplo
A continuación, se presenta un ejemplo de un archivo de 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 )
Archivo go.sum de ejemplo
A continuación, se presenta un ejemplo de un archivo de 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 uno de estos archivos produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Binarios de Go
El generador de SBOM de Amazon Inspector extrae las dependencias de los binarios de Go compilados para garantizar el código en uso.
nota
El generador de SBOM de Amazon Inspector permite capturar y evaluar versiones de cadenas de herramientas a partir de binarios de Go creados con el compilador oficial de Go. Para obtener más información, consulte Descarga e instalación
Características principales de
-
Extrae la información de dependencia directamente de los binarios de Go
-
Recopila las dependencias incrustadas en el binario
-
Detecta y extrae la versión de la cadena de herramientas de Go utilizada para compilar el binario.
GOMODCACHE
El generador de SBOM de Amazon Inspector analiza la memoria caché del módulo de Go para recopilar información sobre las dependencias instaladas. Esta memoria caché almacena los módulos descargados para garantizar que se utilicen las mismas versiones en diferentes compilaciones.
Características principales de
-
Analiza el directorio de
GOMODCACHEpara identificar los módulos en caché -
Extrae metadatos detallados, incluidos los nombres de los módulos, las versiones y la fuente URLs
Estructura de ejemplo
A continuación se muestra un ejemplo de la estructura de GOMODCACHE.
~/go/pkg/mod/ ├── github.com/gin-gonic/gin@v1.7.2 ├── golang.org/x/crypto@v0.0.0-20210616213533-5cf6c0f8e123
nota
Esta estructura produce una salida que contiene la URL de un paquete. Esta URL se puede usar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Análisis de dependencias de Java
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
Java |
Maven |
Aplicaciones de Java compiladas (.jar/.war/.ear)
|
N/A N/A |
N/A N/A |
Sí Sí |
N/A N/A |
Sí Sí |
nota
Nuestra característica de evaluación de vulnerabilidades solo es compatible con el repositorio central de Maven. Los repositorios de terceros, por ejemplo, JBoss Enterprise Maven Repository, no son compatibles actualmente.
El generador de SBOM de Amazon Inspector realiza un análisis de dependencias de Java analizando las aplicaciones de Java y los archivos pom.xml compilados. Al analizar aplicaciones compiladas, el analizador genera hashes SHA-1 para verificar la integridad, extrae los archivos pom.properties incrustados y analiza los archivos anidados pom.xml.
Recopilación de hash SHA-1 (para archivos .jar, .war, .ear compilados)
El generador de SBOM de Amazon Inspector intenta recopilar los hashes SHA-1 para todos los archivos .ear, .jar y .war de un proyecto a fin de garantizar la integridad y la trazabilidad de los artefactos de Java compilados.
Características principales de
-
Genera hashes SHA-1 para todos los artefactos de Java compilados
Artefacto de ejemplo
A continuación, se muestra un ejemplo de artefacto 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
Este artefacto produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
pom.properties
El archivo pom.properties se utiliza en los proyectos de Maven para almacenar los metadatos del proyecto, incluidos los nombres y las versiones de los paquetes. El generador de SBOM de Amazon Inspector analiza este archivo para recopilar información del proyecto.
Características principales de
-
Analiza y extrae los artefactos de los paquetes, los grupos de paquetes y las versiones de los paquetes
Archivo pom.properties de ejemplo
A continuación se presenta un ejemplo de un archivo pom.properties.
#Generated by Maven #Tue Mar 16 15:44:02 UTC 2021 version=1.6.0 groupId=net.datafaker artifactId=datafaker
nota
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Excluido el análisis anidado de pom.xml
Si desea excluir el análisis de pom.xml al analizar aplicaciones de Java compiladas, utilice el argumento --skip-nested-pomxml.
pom.xml
El archivo pom.xml es el archivo de configuración principal de los proyectos de Maven. Contiene información sobre los proyectos y sus dependencias. El generador de SBOM de Amazon Inspector analiza los archivos pom.xml para recopilar las dependencias y analiza los archivos independientes de los repositorios y los archivos dentro de los archivos .jar compilados.
Características principales de
-
Analiza y extrae los artefactos de los paquetes, los grupos de paquetes y las versiones de los paquetes de los archivos
pom.xml.
Ámbitos y etiquetas compatibles con Maven
Las dependencias se recopilan con los siguientes ámbitos de Maven:
-
compile
-
proporsionado
-
tiempo de ejecución
-
prueba
-
sistema
-
importar
Las dependencias se recopilan con la etiqueta de Maven siguiente: <optional>true</optional>.
Archivo pom.xml de ejemplo con un ámbito
A continuación, se presenta un ejemplo de un archivo pom.xml con un ámbito.
<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>
Archivo pom.xml de ejemplo sin un ámbito
A continuación, se presenta un ejemplo de un archivo pom.xml sin un ámbito.
<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 uno de estos archivos produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
JavaScript escaneo de dependencias
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
Javascript |
|
|
N/A N/A N/A N/A |
N/A Sí Sí Sí |
Sí N/A N/A N/A |
Sí N/A N/A N/A |
Sí No No No |
package.json
El archivo package.json es un componente central de los proyectos de Node.js. Contiene metadatos acerca de los paquetes instalados. El generador de SBOM de Amazon Inspector analiza este archivo para identificar los nombres y las versiones de los paquetes.
Características principales de
-
Analiza la estructura de archivos JSON para extraer los nombres y las versiones de los paquetes
-
Identifica los paquetes privados con valores privados
Archivo package.json de ejemplo
A continuación se presenta un ejemplo de un archivo package.json.
{ "name": "arrify", "private": true, "version": "2.0.1", "description": "Convert a value to an array", "license": "MIT", "repository": "sindresorhus/arrify" }
nota
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
package-lock.json
El archivo package-lock.json está generado automáticamente por npm para bloquear las versiones exactas de las dependencias instaladas para un proyecto. Garantiza la coherencia en los entornos al almacenar las versiones exactas de todas las dependencias y sus subdependencias. Este archivo puede distinguir entre las dependencias normales y las dependencias de desarrollo.
Características principales de
-
Analiza la estructura de archivos JSON para extraer los nombres y las versiones de los paquetes
-
Admite la detección de dependencias de desarrolladores
Archivo package-lock.json de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
npm-shrinkwrap.json
npm genera automáticamente los archivos package-lock.json y npm-shrinkwrap.json para bloquear las versiones exactas de las dependencias instaladas para un proyecto. Esto garantiza la coherencia en los entornos al almacenar las versiones exactas de todas las dependencias y subdependencias. Los archivos distinguen entre las dependencias normales y las dependencias de desarrollo.
Características principales de
-
Analice las versiones 1, 2 y 3 de
package-lockde la estructura del archivo JSON para extraer el nombre y la versión del paquete -
Se admite la detección de dependencias de los desarrolladores (
package-lock.jsoncaptura las dependencias de producción y desarrollo, lo que permite a las herramientas identificar qué paquetes se utilizan en los entornos de desarrollo) -
El archivo
npm-shrinkwrap.jsontiene prioridad sobre el archivopackage-lock.json
Ejemplo
A continuación se presenta un ejemplo de un archivo 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
pnpm genera el archivo pnpm-lock.yaml para mantener un registro de las versiones de dependencia instaladas. También realiza un seguimiento de las dependencias de desarrollo de forma independiente.
Características principales de
-
Analiza la estructura de archivos YAML para extraer los nombres y las versiones de los paquetes
-
Admite la detección de dependencias de desarrolladores
Ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
yarn.lock
El generador de SBOM de Amazon Inspector intenta recopilar los hashes SHA-1 para los archivos .ear, .jar y .war de un proyecto a fin de garantizar la integridad y la trazabilidad de los artefactos de Java compilados.
Características principales de
-
Genera hashes SHA-1 para todos los artefactos de Java compilados
Ejemplo de artefacto SHA-1
A continuación, se muestra un ejemplo de artefacto 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
Este artefacto produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Análisis de dependencias de .NET
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
.NET |
|
|
N/A N/A N/A N/A |
N/A N/A N/A N/A |
N/A N/A Sí N/A |
N/A N/A N/A N/A |
Sí Sí Sí Sí |
Packages.config
El archivo Packages.config es un archivo XML utilizado por una versión anterior de Nuget para administrar las dependencias del proyecto. Muestra todos los paquetes a los que hace referencia el proyecto, incluidas las versiones específicas.
Características principales de
-
Analiza la estructura XML para extraer el paquete y las versiones IDs
Ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
*.deps.json
El archivo *.deps.json lo generan los proyectos de .NET Core y contiene información detallada sobre todas las dependencias, incluidas las rutas, las versiones y las dependencias del tiempo de ejecución. Este archivo garantiza que el tiempo de ejecución tenga la información necesaria para cargar las versiones correctas de las dependencias.
Características principales de
-
Analiza la estructura JSON para obtener detalles completos de las dependencias
-
Extrae los nombres y las versiones de los paquetes en una lista de
libraries.
Archivo .deps.json de ejemplo
A continuación se presenta un ejemplo de un archivo .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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
packages.lock.json
Las versiones más recientes de Nuget utilizan el archivo packages.lock.json para bloquear las versiones exactas de las dependencias de un proyecto de .NET para garantizar que las mismas versiones se utilicen de forma coherente en diferentes entornos.
Características principales de
-
Analiza la estructura JSON para mostrar las dependencias bloqueadas
-
Admite dependencias directas y transitivas
-
Extrae el nombre del paquete y las versiones resueltas
Archivo packages.lock.json de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
.csproj
El archivo .csproj está escrito en XML y el archivo de proyecto para proyectos de .NET. Incluye referencias a paquetes de Nuget, propiedades del proyecto y configuraciones de compilación.
Características principales de
-
Analiza XML (la estructura) para extraer las referencias de los paquetes
Archivo .csproj de ejemplo
A continuación se presenta un ejemplo de un archivo .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>
Archivo .csproj de ejemplo
A continuación se presenta un ejemplo de un archivo .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 uno de estos archivos produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Análisis de dependencias de PHP
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
PHP |
Composer |
|
N/A N/A |
N/A N/A |
Sí Sí |
N/A N/A |
Sí Sí |
composer.lock
El archivo composer.lock se genera automáticamente al ejecutar los comandos composer install o composer update. Este archivo garantiza que se instalen las mismas versiones de las dependencias en todos los entornos. Esto proporciona un proceso de creación coherente y fiable.
Características principales de
-
Analiza el formato JSON para datos estructurados
-
Extrae los nombres y las versiones de las dependencias
Archivo composer.lock de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Esto produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
/.json vendor/composer/installed
El archivo /vendor/composer/installed.json se encuentra en el directorio vendor/composer y proporciona una lista completa de todos los paquetes instalados y sus versiones.
Características principales de
-
Analiza el formato JSON para datos estructurados
-
Extrae los nombres y la versión de las dependencias
Archivo /vendor/composer/installed.json de ejemplo
A continuación se presenta un ejemplo de un archivo /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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Análisis de dependencias de Python
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
Python |
|
|
N/A N/A N/A N/A N/A |
N/A N/A N/A N/A N/A |
N/A N/A N/A N/A N/A |
N/A N/A N/A N/A N/A |
Sí Sí Sí Sí Sí |
requirements.txt
El archivo requirements.txt es un formato muy utilizado en los proyectos Python para especificar las dependencias de los proyectos. Cada línea de este archivo incluye un paquete con sus restricciones de versión. El generador de SBOM de Amazon Inspector analiza este archivo para identificar y catalogar las dependencias con precisión.
Características principales de
-
Admite los especificadores de versión (== y ˜=)
-
Admite comentarios y líneas de dependencia complejas
nota
Los especificadores de versión <= y => no son compatibles.
Archivo requirements.txt de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Pipfile.lock
Pipenv es una herramienta que ofrece lo mejor del mundo del embalaje (empaquetado, anclaje y desanclaje). Pipfile.lock bloquea las versiones exactas de las dependencias para facilitar las compilaciones deterministas. El generador de SBOM de Amazon Inspector lee este archivo para mostrar las dependencias y sus versiones resueltas.
Características principales de
-
Analiza el formato JSON para la resolución de dependencias
-
Admite las dependencias predeterminadas y de desarrollo
Archivo Pipfile.lock de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Poetry.lock
Poetry es una herramienta de empaquetado y administración de dependencias para Python. El archivo Poetry.lock bloquea las versiones exactas de las dependencias para facilitar entornos coherentes. El generador de SBOM de Amazon Inspector extrae información detallada sobre las dependencias de este archivo.
Características principales de
-
Analiza el formato TOML para datos estructurados
-
Extrae los nombres y las versiones de las dependencias
Archivo Poetry.lock de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Egg/Wheel
Para los paquetes de Python instalados en todo el mundo, el generador de SBOM de Amazon Inspector admite el análisis de los archivos de metadatos que se encuentran en los directorios .egg-info/PKG-INFO y .dist-info/METADATA. Estos archivos proporcionan metadatos detallados acerca de los paquetes instalados.
Características principales de
-
Extrae el nombre del paquete y la versión
-
Admite los formatos egg y wheel
Archivo PKG-INFO/METADATA de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Análisis de dependencias de Ruby
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad de la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
Ruby |
Bundler |
|
N/A N/A N/A |
N/A N/A N/A |
Sí N/A N/A |
N/A N/A N/A |
Sí Sí Sí |
Gemfile.lock
El archivo Gemfile.lock bloquea las versiones exactas de todas las dependencias para garantizar que se utilicen las mismas versiones en todos los entornos.
Características principales de
-
Analiza el archivo
Gemfile.lockpara identificar las dependencias y las versiones de las dependencias -
Extrae los nombres de los paquetes detallados y las versiones de los paquetes
Archivo Gemfile.lock de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
.gemspec
El archivo .gemspec es un archivo RubyGem que contiene metadatos sobre una gema. El generador de SBOM de Amazon Inspector analiza este archivo para recopilar información detallada sobre una gema.
Características principales de
-
Analiza y extrae el nombre y la versión de la gema
nota
No se admite la especificación de referencia.
Archivo .gemspec de ejemplo
A continuación se presenta un ejemplo de un archivo .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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Gemas instaladas globalmente
El generador de SBOM de Amazon Inspector permite analizar gemas instaladas globalmente, que se encuentran en directorios estándar, como /usr/local/lib/ruby/gems/<ruby_version>/gems/ en Amazon EC2/Amazon ECR y ruby/gems/<ruby_version>/gems/ en Lambda. Esto garantiza que todas las dependencias instaladas globalmente estén identificadas y catalogadas.
Características principales de
-
Identifica y analiza todas las gemas instaladas globalmente en directorios estándar
-
Extrae los metadatos y la información de la versión de cada gema instalada globalmente
Estructura de directorio de ejemplo
A continuación, se muestra un ejemplo de una estructura de directorio.
. └── /usr/local/lib/ruby/3.5.0/gems/ ├── actrivesupport-6.1.4 ├── concurrent-ruby-1.1.9 └── i18n-1.8.10
nota
Esta estructura produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Análisis de dependencias de Rust
| Lenguaje de programación | Administrador de paquetes | Artefactos compatibles | Compatibilidad con la cadena de herramientas | Dependencias de desarrollo | Dependencias transitivas | Indicador privado | De forma recursiva |
|---|---|---|---|---|---|---|---|
Rust |
Cargo.toml |
|
N/A N/A Sí |
N/A N/A N/A |
N/A Sí N/A |
N/A N/A N/A |
Sí Sí Sí |
Cargo.toml
El archivo Cargo.toml es el archivo de manifiesto de los proyectos de Rust.
Características principales de
-
Analiza y extrae el archivo
Cargo.tomlpara identificar el nombre y la versión del paquete del proyecto.
Archivo Cargo.toml de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Cargo.lock
El archivo Cargo.lock bloquea las versiones dependientes para garantizar que se usen las mismas versiones siempre que se cree un proyecto.
Características principales de
-
Analiza el archivo
Cargo.lockpara identificar todas las dependencias y las versiones de las dependencias.
Archivo Cargo.lock de ejemplo
A continuación se presenta un ejemplo de un archivo 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
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Binarios de Rust con carga auditable
El generador de SBOM de Amazon Inspector recopila las dependencias de los binarios de Rust creados con la biblioteca de cargo-auditable. Esto proporciona información de dependencia adicional al permitir la extracción de dependencias de los binarios compilados.
Características principales de
-
Extrae la información de dependencia directamente de los binarios de Rust creados con la biblioteca de
cargo-auditable -
Recupera los metadatos y la información de versión de las dependencias incluidas en los binarios
nota
Este archivo produce una salida que contiene la URL de un paquete. Esta URL se puede utilizar para especificar información sobre los paquetes de software al generar una lista de materiales de software y se puede incluir en la ScanSbomAPI. Para obtener más información, consulte la URL del paquete en el GitHub sitio web
Artefactos no compatibles
En esta sección se describen los artefactos no compatibles.
Java
El generador de SBOM de Amazon Inspector solo admite la detección de vulnerabilidades para las dependencias procedentes del repositorio de Maven principal
JavaScript
Paquetes de esbuild
Para los paquetes de esbuild minificados, el generador de SBOM de Amazon Inspector no admite el análisis de dependencias para los proyectos con esbuild. Los mapas de origen generados por esbuild no incluyen los metadatos suficientes (nombres y versiones de las dependencias) necesarios para una generación de Sbomgen precisa. Para obtener resultados fiables, analice los archivos originales del proyecto, como node_modules/directory y package-lock.json, antes del proceso de agrupación.
package.json
El generador de SBOM de Amazon Inspector no admite el análisis del archivo package.json por raíz para obtener información sobre dependencias. Este archivo solo especifica los nombres de los paquetes y los rangos de versiones, pero no incluye las versiones de los paquetes completamente resueltas. Para obtener resultados de análisis precisos, utilice package.json u otros archivos bloqueados, como yarn.lock y pnpm.lock, que incluyan versiones resueltas.
DotNet
Cuando se utilizan versiones flotantes o rangos de versiones en PackageReference, resulta más difícil determinar la versión exacta del paquete utilizada en un proyecto sin realizar la resolución del paquete. Las versiones flotantes y los rangos de versiones permiten a los desarrolladores especificar un rango de versiones de paquetes aceptables en lugar de una versión fija.
Binarios de Go
El generador de SBOM de Amazon Inspector no analiza los binarios de Go creados con indicadores de compilación configurados para excluir el ID de compilación. Estos indicadores de compilación impiden que Amazon Inspector SBOM Generator asigne con precisión el binario a su fuente original. No se admiten binarios de Go poco claros debido a la incapacidad de extraer la información del paquete. Para analizar las dependencias de forma precisa, asegúrese de que los binarios de Go estén creados con la configuración predeterminada, incluido el ID de compilación.
Binarios de Rust
El generador de SBOM de Amazon Inspector solo analiza binarios de Rust si los binarios se crean con la biblioteca de carga auditable
nota
No se admite la detección de vulnerabilidades en la propia cadena de herramientas de Rust, incluso si se ha extraído la versión de la cadena de herramientas.