检查包漏洞

警告

此功能为实验性功能,可能会发生重大变化。有关详细信息,请参阅Conan 的稳定性部分。

conan audit 命令(在 Conan 2.14.0 中引入)用于检查 Conan 包中的已知漏洞。

默认情况下,Conan 提供访问 ConanCenter 提供者,这是一个公共提供者,用于检查 ConanCenter 包中的漏洞,它使用 JFrog Advanced Security 来扫描包。

请求令牌

要使用此命令,首先需要在https://audit.conan.io/register注册免费服务并获取用于该服务的令牌。注册后,您可以使用以下命令和您的令牌向 conancenter 提供者进行认证:

$ conan audit provider auth conancenter --token=<your_token>

注意

在命令行中使用 --token 可能会在 shell 历史记录中暴露您的令牌。为防止这种情况,请将其设置为以提供者名称大写形式命名的环境变量。例如,对于 conancenter,请使用: CONAN_AUDIT_PROVIDER_TOKEN_CONANCENTER=<token>

扫描包

认证后,您可以使用 conan audit scanconan audit list 命令检查包中的漏洞。

  • conan audit scan 将检查给定包及其依赖项的漏洞。

  • conan audit list 将列出给定包的漏洞,而不检查其依赖项。

$ conan audit list openssl/1.1.1w

Requesting vulnerability info for: openssl/1.1.1w

******************
* openssl/1.1.1w *
******************

2 vulnerabilities found:

- CVE-2023-5678 (Severity: Medium, CVSS: 5.3)

  Issue summary: Generating excessively long X9.42 DH keys or checking
  excessively long X9.42 DH keys or parameters may be very slow.  Impact summary:
  Applications that use the functions DH_generate_key() to generate an X9.42 DH
  key may exper...
  url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=db925ae2e65d0d925adef429afc37f75bd1c2017

- CVE-2024-0727 (Severity: Medium, CVSS: 5.5)

  Issue summary: Processing a maliciously formatted PKCS12 file may lead OpenSSL
  to crash leading to a potential Denial of Service attack  Impact summary:
  Applications loading files in the PKCS12 format from untrusted sources might
  terminate ...
  url: https://github.com/alexcrichton/openssl-src-rs/commit/add20f73b6b42be7451af2e1044d4e0e778992b2

Total vulnerabilities found: 2


Summary:

- openssl/1.1.1w 2 vulnerabilities found

Vulnerability information provided by JFrog. Please check https://jfrog.com/advanced-security/ for more information.
You can send questions and report issues about the returned vulnerabilities to conan-research@jfrog.com.

要扫描包的整个依赖图,最简单的方法是使用 conan audit scan 命令并提供 conanfile 的路径,就像您使用其他 Conan 命令(例如 conan install)一样。

例如,对于一个包含 conanfile.txt 的项目

[requires]
libpng/1.5.30
openssl/1.1.1w

您可以运行

$ conan audit scan .

请注意,所有这些命令都支持各种输出格式,例如 JSON 和 HTML。

$ conan audit scan . -f=html > report.html

这将生成一个 HTML 报告,其中包含在给定包及其依赖项中找到的漏洞,报告看起来类似

Conan audit report

扫描还具有阈值选项 --severity-level,它允许您为漏洞设置最低严重级别。如果发现的任何漏洞超过阈值,命令将返回非零退出代码。默认情况下,它设置为 9.0(危急),但您可以将其设置为较低的值,以在报告中包含较低严重性的漏洞。要禁用阈值,请将其设置为 100.0。

$ conan audit scan . --severity-level=5.0
...
The package openssl/1.1.1w has a CVSS score 5.3 and exceeded the threshold severity level 5.0.

添加私有提供者

您可以将自己的私有提供者添加到 conan audit 子命令使用的提供者列表中。目前,仅支持 JFrog Advanced Security 提供者。

注意

要使用这些私有提供者,您的 Artifactory 许可证应包含 JFrog Curation 的订阅

要添加提供者,推荐的方法是首先在 Artifactory 中创建一个特定用户作为只读用户,该用户可以不授予额外权限。然后,在为用户创建访问令牌后,可以使用以下命令添加提供者:

$ conan audit provider add myprovider --type=private --url=https://your.artifactory.url --token=<your_token>

注意

除了在命令行中使用 --token 参数(这可能会在 shell 历史记录中暴露您的令牌)之外,您还可以使用环境变量与提供者进行认证。设置 CONAN_AUDIT_PROVIDER_TOKEN_<PROVIDER_NAME> 环境变量并赋予令牌值,将 <PROVIDER_NAME> 替换为提供者名称的大写形式,并使用下划线 (_) 代替连字符 (-)。

例如,对于 myprovider,请使用: CONAN_AUDIT_PROVIDER_TOKEN_MYPROVIDER=<token>

请注意 --type=private 参数,它指定提供者是私有提供者,并且提供的 URL 应该是 Artifactory 实例的基本 URL。

现在,您可以使用 conan audit scanconan audit list 命令使用该提供者,通过使用 -p / --provider 参数指定提供者名称,对请求数量没有任何限制

$ conan audit scan . -p=myprovider

另请参阅