Amazon Inspector SBOM 生成器综合生态系统集 - Amazon Inspector
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Inspector SBOM 生成器综合生态系统集

Amazon Inspector SBOM 生成器是一款用于创建软件物料清单 (SBOM) 和对操作系统和编程语言中支持的软件包进行漏洞扫描的工具。它支持扫描核心操作系统以外的各种生态系统,确保对基础设施组件进行可靠而详细的分析。通过生成 SBOM,您可以了解现代技术堆栈的构成,识别生态系统组件中的漏洞,并了解第三方软件。

支持的生态系统

生态系统集合将 SBOM 的生成扩展到通过操作系统包管理器安装的软件包之外。这是通过收集以其他方法(例如手动安装)部署的应用程序来完成的。Amazon Inspector SBOM 生成器支持扫描以下生态系统:

生态系统 应用程序

Apache

Apache httpd

Apache tomcat

Google

Chrome

Java

JDK

JRE

Amazon Corretto

Nginx

Nginx

Node

Node

OpenSSH

OpenSSH(版本 9 和 10)

OpenSSL

OpenSSL

Oracle

Oracle Database Server

WordPress

core

plugin

theme

Node.JS

node

Apache生态系统集合

本节提供有关 Apache httpd 和 t Apache omcat 应用程序的详细信息。

Apache httpd

受支持的应用程序
  • Apache httpd

注意

漏洞评估仅适用于 Apache httpd 版本 2.0 及更高版本。

主要特征
  • 解析/include/ap_release.h文件以提取安装宏,其中包含主要标识符字符串、次要标识符字符串和补丁标识符字符串。

支持的平台

Amazon Inspector SBOM 生成器会扫描跨平台常见安装路径中的安装情况:

Unix
  • /usr/local/apache2/include/

Windows
  • /Apache24/include/

  • /Program Files/Apache24/include/

  • /Program Files (x86)/Apache24/include/

示例 ap_release.h 文件

以下是ap_release.h文件内内容的示例。

//truncated #define AP_SERVER_BASEVENDOR "Apache Software Foundation" #define AP_SERVER_BASEPROJECT "Apache HTTP Server" #define AP_SERVER_BASEPRODUCT "Apache" #define AP_SERVER_MAJORVERSION_NUMBER 2 #define AP_SERVER_MINORVERSION_NUMBER 4 #define AP_SERVER_PATCHLEVEL_NUMBER 1 #define AP_SERVER_DEVBUILD_BOOLEAN 0 //truncated
示例 PURL

以下是Apache httpd应用程序的软件包 URL 示例。

Sample PURL: pkg:generic/apache/httpd@2.4.1

Apache tomcat

受支持的应用程序
  • Apache tomcat

注意

漏洞评估仅适用于 9.0 及更高Apache tomcat版本。

主要特征
  • 解压缩catalina.jar文件以解压缩文件中的安装宏,META-INF/MANIFEST.MF文件中包含版本字符串。

支持的平台

Amazon Inspector SBOM 生成器会扫描跨平台常见安装路径中的安装情况:

Linux
  • /opt/tomcat/lib/

  • /usr/share/tomcat/lib

  • /var/lib/tomcat/lib/

macOS
  • /Library/Tomcat/lib/

  • /usr/local/tomcat/lib

Windows
  • /Program Files/Apache Software Foundation

  • /Program Files (x86)/Apache Software Foundation/

示例 catalina.jar/META-INF/MANIFEST.MF 文件

以下是catalina.jar/META-INF/MANIFEST.MF文件内内容的示例。

//truncated Implementation-Title: Apache Tomcat Implementation-Vendor: Apache Software Foundation Implementation-Version: 10.1.31 //truncated
示例 PURL

以下是Apache tomcat应用程序的软件包 URL 示例。

Sample PURL: pkg:generic/apache/tomcat@10.1.31

Google生态系统集合

受支持的应用程序
  • Google Chrome

  • Puppeteer(支持 puppeteer 库;不包括 puppeteer-core)

注意

Puppeteer支持 puppeteer 库。 Puppeteer不包括核心。

支持的工件

Amazon Inspector 从以下来源收集Google Chrome信息:

  • chrome/VERSION文件(编译源代码)

  • chrome.exe文件(Windows Chrome安装)

  • puppeteer文件(安装)

对于每个支持的工件,解Sbomgen析并收集chrome文件或puppeteer文件。对于puppeteer安装,将根据Chromium版本收集相应的puppeteer版本。有关更多信息,请参阅 Puppeteer 网站上支持的浏览器

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD环境变量设置为时true,将跳过评估,并将skip_chromium_download=true限定符添加到Puppeteer包 URL 中。

chrome/VERSION版本文件示例

以下是chrome/VERSION版本文件的示例。

MAJOR=130 MINOR=0 BUILD=6723 PATCH=58
示例 PURL

以下是chrome/VERSION版本文件的软件包 URL 示例。

Sample PURL: pkg:generic/google/chrome@131.0.6778.87
puppeteer版本文件示例

以下是puppeteer版本文件的示例。

{ "name": "puppeteer", "version": "23.9.0", "description": "A high-level API to control headless Chrome over the DevTools Protocol", "keywords": [ "puppeteer", "chrome", "headless", "automation" ] }
示例 PURL

以下是puppeteer版本文件的软件包 URL 示例。

Sample PURL: pkg:generic/google/puppeteer@23.9.0
示例 PURL

以下是带有puppeteer版本文件跳过限定符的软件包 URL 示例。

pkg:generic/google/puppeteer@22.15.0?distro=linux&skip_chromium_download=true

Java生态系统集合

受支持的应用程序
  • Oracle JDK

  • Oracle JRE

  • Amazon Corretto

主要特征
  • 提取Java安装字符串。

  • 标识包含Java运行时的目录路径。

  • 将供应商标识为Oracle JDKOracle JRE、和Amazon Corretto。

Amazon Inspector SBOM 生成器会扫描以下安装路径和平台上的安装:Java

  • macOS: /Library/Java/JavaVirtualMachines

  • Linux 32-bit: /usr/lib/jvm

  • Linux 64-bit: /usr/lib64/jvm

  • Linux (generic): /usr/java and /opt/java

Java版本信息示例

以下是发行版的示例。Oracle Java

// Amazon Corretto IMPLEMENTOR="Amazon.com Inc." IMPLEMENTOR_VERSION="Corretto-17.0.11.9.1" JAVA_RUNTIME_VERSION="17.0.11+9-LTS" JAVA_VERSION="17.0.11" JAVA_VERSION_DATE="2024-04-16" LIBC="default" MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.foreign jdk.incubator.vector jdk.internal.le jdk.internal.opt jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom jdk.zipfs" OS_ARCH="x86_64" OS_NAME="Darwin" SOURCE=".:git:7917f11551e8+" // JDK IMPLEMENTOR="Oracle Corporation" JAVA_VERSION="19" JAVA_VERSION_DATE="2022-09-20" LIBC="default" MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.zipfs jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.concurrent jdk.incubator.vector jdk.internal.le jdk.internal.opt jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom" OS_ARCH="x86_64" OS_NAME="Darwin" SOURCE=".:git:53b4a11304b0 open:git:967a28c3d85f"
示例 PURL

以下是某个Oracle Java版本的软件包网址示例。

Sample PURL: # Amazon Corretto pkg:generic/amazon/amazon-corretto@21.0.3 # Oracle JDK pkg:generic/oracle/jdk@11.0.16 # Oracle JRE pkg:generic/oracle/jre@20

Nginx生态系统集合

受支持的应用程序
  • Nginx

支持的平台

以下是支持的平台。

Linux
  • /usr/sbin/nginx

  • /usr/local/nginx

  • /usr/local/etc/nginx

  • /usr/local/nginx/nginx

  • /usr/local/nginx/sbin/nginx

  • /etc/nginx/nginx

Windows
  • C:\nginx\nginx.exe

  • C:\nginx-x.y.z\ n ginx.exe(x.y.z 是任意版本)

macOS
  • /usr/local/etc/nginx/nginx

主要特征

该集合检查二进制文件以提取嵌入式版本信息。它在二进制可执行文件.rodata部分(开启的 ELF 二进制文件Linux)、.rdata部分(开启的 PE 二进制文件)或__ctring部分(用于MachO二进制文件Windows)中搜索版本字符串。

版本字符串示例

以下是嵌入在Nginx二进制文件中的版本字符串的示例。

nginx version: nginx/1.27.5

提取1.27.5版本以标识Nginx版本。

示例 PURL

以下是 Nginx 的软件包网址示例。

Sample PURL: pkg:generic/nginx/nginx@1.27.5

Node.JS运行时集合

受支持的应用程序
  • 的节点运行时二进制文件 Node.JS

支持的工件
  • macOS以及 Linux — node 通过安装在asdf、、fnmnvm或官方Node.JS容器中的二进制详细信息进行二进制检测。volta

示例macOS和Linux路径

以下是macOS和的路径示例Linux。

NVM: ~/.nvm/, /usr/local/nvm FNM: ~/.local/share/fnm/ ASDF: ~/.asdf/ MISE: ~/.local/share/mise/ VOLTA: ~/.volta/
示例 PURL

以下是的软件包网址示例Node.JS。

Sample PURL: pkg:generic/nodejs/node@20.18.0

OpenSSH 生态系统集合

受支持的应用程序
  • OpenSSH(第 9 版)

  • OpenSSH(第 10 版)

支持的平台 Linux/macOS
  • /usr/sbin/sshd

  • /usr/local/sbin/sshd

支持的平台 Windows
  • C:/Windows/System32/OpenSSH/sshd.exe

  • C:/Program Files/OpenSSH/sshd.exe

  • C:/Program Files (x86)/OpenSSH/sshd.exe

  • C:/OpenSSH/sshd.exe

主要特征
  • 检查sshd二进制文件以提取嵌入式版本信息。

  • 在二进制可执行文件.rodata部分(对于开启的 ELF 二进制文件)Linux、__cstring部分(对于开启的 Mach-O 二进制文件)或.rdata部分(对于开启的 PE 二进制文件MacOs)中查找版本字符串。Windows

版本字符串示例

以下是嵌入在OpenSSH二进制文件中的版本字符串的示例。

OpenSSH_9.9p2

提取9.9p2版本以标识OpenSSH版本。

示例 PURL

以下是的软件包网址示例OpenSSH。

Sample PURL: pkg:generic/openssh/openssh@9.9p2

OpenSSL 生态系统集合

受支持的应用程序

对 OpenSSL 库和开发包的支持仅限于使用 3.0.0 及以上版本的官方 OpenSSL 构建的软件。该软件还必须遵循语义版本控制。不支持自定义或分叉的 OpenSSL 变体和低于 3.0.0 的版本。

Amazon Inspector SBOM 生成器为每个已安装的 OpenSSL 实例提取密钥包信息。

主要特征
  • 从 OpenSSL 头文件中提取基本的 SEMVER 版本字符串

  • 标识包含 OpenSSL 安装的目录路径

Amazon Inspector SBOM 生成器通过在跨平台的常见安装路径中扫描文件来查找 OpenSSL 的安装。opensslv.h

Linux/Unix 的安装路径示例

以下是 Linux/Unix 的安装路径示例。

/usr/local/include/openssl/opensslv.h /usr/local/ssl/include/openssl/opensslv.h /usr/local/openssl/include/openssl/opensslv.h /usr/local/opt/openssl/include/openssl/opensslv.h /usr/include/openssl/opensslv.h

Amazon Inspector SBOM 生成器通过解析opensslv.h文件并查找版本定义来提取版本信息。

# define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 4 # define OPENSSL_VERSION_PATCH 0
示例 PURL

以下是 OpenSSL 版本的软件包网址示例。

Sample PURL: pkg:generic/openssl/openssl@3.4.0

Oracle 数据库服务器集合

受支持的应用程序
  • Oracle Database

支持的平台 Linux
  • /opt/oracle

  • /u01/app/oracle

注意

漏洞评估仅适用于Oracle数据库服务器版本 19 及更高版本。

主要特征
  • 检查Oracle二进制文件以提取嵌入式版本信息。

  • 在二进制可执行文件.rodata部分中查找版本字符串(适用于开启的 ELF 二进制文件Linux)。

  • 版本信息遵循包含 RDBMS 版本字符串的特定格式。

版本字符串示例

以下是嵌入在Oracle Database二进制文件中的版本字符串的示例:

RDBMS_23.7.0.25.01DBRU_LINUX.X64_240304

提取23.7.0.25.01版本以标识Oracle Database版本。

示例 PURL

以下是的软件包网址示例Oracle Database。

Sample PURL: pkg:generic/oracle/database@23.7.0.25.01

WordPress生态系统集合

支持的组件
  • WordPress核心

  • WordPress插件

  • WordPress主题

主要特征
  • WordPresscore — 解析/wp-includes/version.php文件以从 $wp_version 变量中提取版本值。

  • WordPressplugins — 解析/wp-content/plugins/<WordPress Plugin>/readme.txt/wp-content/plugins/<WordPress Plugin>/readme.md文件或文件以提取Stable标签作为版本字符串。

  • WordPress主题 — 解析/wp-content/themes/<WordPress Theme>/style.css文件以从版本元数据中提取版本。

示例 version.php 文件

以下是WordPress核心version.php文件的示例。

// truncated /** * The WordPress version string. * * Holds the current version number for WordPress core. Used to bust caches * and to enable development mode for scripts when running from the /src directory. * * @global string $wp_version */ $wp_version = '6.5.5'; // truncated
示例 PURL

以下是WordPress核心的软件包网址示例。

Sample PURL: pkg:generic/wordpress/core/wordpress@6.5.5
示例 readme.txt 文件

以下是WordPress插件readme.txt文件的示例。

=== Plugin Name === Contributors: (this should be a list of wordpress.org userid's) Donate link: https://example.com/ Tags: tag1, tag2 Requires at least: 4.7 Tested up to: 5.4 Stable tag: 4.3 Requires PHP: 7.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html // truncated
示例 PURL

以下是WordPress插件的软件包网址示例。

Sample PURL: pkg:generic/wordpress/plugin/exclusive-addons-for-elementor@1.0.0
示例 style.css 文件

以下是WordPress主题style.css文件的示例。

/* Author: the WordPress team Author URI: https://wordpress.org Description: Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collection of templates and patterns tailor to different needs, such as presenting a business, blogging and writing or showcasing work. A multitude of possibilities open up with just a few adjustments to color and typography. Twenty Twenty-Four comes with style variations and full page designs to help speed up the site building process, is fully compatible with the site editor, and takes advantage of new design tools introduced in WordPress 6.4. Requires at least: 6.4 Tested up to: 6.5 Requires PHP: 7.0 Version: 1.2 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: twentytwentyfour Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready, blog, portfolio, news */
示例 PURL

以下是WordPress主题的软件包网址示例。

Sample PURL: pkg:generic/wordpress/theme/avada@1.0.0