检查包漏洞

警告

此功能是实验性的,可能会有重大更改。有关更多信息,请参见 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

另请参阅