#漏洞 #cargo #cargo 子命令 #材料 #cargo 锁 #检查 #账单

bin+lib cargo-pants

cargo-pants 是一个 Cargo 子命令应用,提供物料清单以及哪些依赖项存在漏洞的列表,由 Sonatype OSSIndex 支持

69 个版本

0.4.28 2024 年 7 月 24 日
0.4.26 2024 年 6 月 25 日
0.4.25 2023 年 12 月 11 日
0.4.23 2023 年 11 月 2 日
0.1.1 2019 年 3 月 27 日

#76 in Cargo 插件

Download history 66/week @ 2024-04-25 80/week @ 2024-05-02 100/week @ 2024-05-09 173/week @ 2024-05-16 111/week @ 2024-05-23 66/week @ 2024-05-30 116/week @ 2024-06-06 91/week @ 2024-06-13 221/week @ 2024-06-20 150/week @ 2024-06-27 124/week @ 2024-07-04 67/week @ 2024-07-11 238/week @ 2024-07-18 319/week @ 2024-07-25 97/week @ 2024-08-01 143/week @ 2024-08-08

808 每月下载

Apache-2.0

110KB
2.5K SLoC

Circle CI Build Status

cargo pants

cargo-pants 是一个 Cargo 子命令,提供项目中的物料清单,以及在这些依赖项上发现的任何漏洞,由 Sonatype OSS Index 支持。

为什么是 pants?

难道你不检查你的裤子是否有洞吗?同样,我们认为你应该检查你的应用程序的依赖项是否有漏洞,这正是 cargo-pants 所做的!此外,我们还通过解析你的 Cargo.lock 文件提供物料清单,这样你可以看到你使用的所有依赖项。

需求

cargo-pants 是用 Rust 1.49.0 构建的,你很可能从这里开始。

安装

cargo-pants 是一个 Cargo 子命令,可以使用 cargo install 安装

$ cargo install cargo-pants

设置环境变量 OSS_INDEX_API_KEY 以使用您的密钥进行认证请求。

安装 cargo-pants 后,您可以像这样运行它

$ cargo pants

用法

cargo-pants 0.3.2
Glenn Mohre <[email protected]>
A library for auditing your cargo dependencies for vulnerabilities and checking your pants

USAGE:
    cargo pants [FLAGS] [OPTIONS]

FLAGS:
    -h, --help        Prints help information
        --dev         A flag to include dev dependencies
    -v, --verbose     Set the verbosity of the logger, more is more verbose, so -vvvv is more verbose than -v
    -d, --loud        Also show non-vulnerable dependencies
    -m, --no-color    Disable color output
    -V, --version     Prints version information

OPTIONS:
        --ignore-file <ignore-file>           The path to your .pants-ignore file [default: .pants-ignore]
        --ossi-api-key <oss-index-api-key>    OSS Index API Key [env: OSS_INDEX_API_KEY]
    -s, --pants_style <pants-style>           Your pants style
        --tomlfile <toml-file>                The path to your Cargo.toml file [default: Cargo.toml]

cargo pants 可以在构建上下文中运行,或者单独运行。

我们还会告诉你我们对你的 pants 风格选择的看法

$ cargo pants --pants_style JNCO

我们对 pants 非常认真。

还有两个影响输出的命令行标志

$ cargo pants --loud

这显示了完整物料清单中的所有非漏洞依赖项。

$ cargo pants --no-color

这将禁用输出结果的任何着色。

如果发现漏洞,cargo-pants 将以状态码 3 退出,并打印物料清单/发现漏洞。如果没有问题,它将以状态码 0 退出。

排除漏洞

可以排除漏洞!到目前为止,我们已经实现了将名为 .pants-ignore 的文件检入到您的仓库中的功能,理想情况下,它应该位于您运行 cargo-pants 的根目录下。或者,您可以在不同的位置运行带有排除文件的 cargo-pants,例如

$ cargo pants --ignore-file /Users/cooldeveloperperson/code/sonatype-nexus-community/cargo-pants/.pants-ignore

该文件应如下所示

{
  "ignore": [{ "id": "78a61524-80c5-4371-b6d1-6b32af349043", "reason": "Insert reason here" }]
}

唯一真正重要的字段是 id,这是您从 OSS Index 为漏洞收到的 ID。您可以通过添加诸如原因之类的字段,以便您以后可以理解为什么您将漏洞列入白名单。

任何被排除的 id 都将从结果中静音,不会导致失败。

IQ 使用

更多待定,但现在 Nexus IQ Server 存在实验性使用

cargo-iq 0.3.1
Glenn Mohre <[email protected]>
A library for auditing your cargo dependencies for vulnerabilities and checking your pants

USAGE:
    cargo iq [FLAGS] [OPTIONS] --iq-application <application>

FLAGS:
    -h, --help       Prints help information
        --dev        A flag to include dev dependencies
    -v, --verbose    Set the verbosity of the logger, more is more verbose, so -vvvv is more verbose than -v
    -V, --version    Prints version information

OPTIONS:
    -a, --iq-application <application>    Specify Nexus IQ public application ID for request
    -t, --iq-attempts <attempts>          Specify Nexus IQ attempts in seconds [default: 60]
    -x, --iq-server-url <server-url>      Specify Nexus IQ server url for request [default: https://127.0.0.1:8070]
    -s, --iq-stage <stage>                Specify Nexus IQ stage for request [default: develop]
    -k, --iq-token <token>                Specify Nexus IQ token for request [env: TOKEN=]  [default: admin123]
        --tomlfile <toml-file>            The path to your Cargo.toml file [default: Cargo.toml]
    -l, --iq-username <username>          Specify Nexus IQ username for request [default: admin]

CI 使用

类似于 cargo audit 但有更多 pants,您可以在 Travis CI 上使用此示例配置运行您的构建 cargo pants

language: rust
before_script:
  - cargo install --force cargo-pants
script:
  - cargo pants

我们使用 CircleCI 来构建此项目。有关我们如何在 CI 构建中使用 cargo-pants 的信息,请参阅我们的 CircleCI 配置:.circleci/config.yml。此文件也是一个很好的参考,其中包含许多有用的 cargo 命令。

贡献

我们非常关心让世界变得更安全,这就是我们创建 cargo-pants 的原因。如果您也想通过参与此项目来加快软件开发速度,请加入我们!在您开始工作之前,创建一个新问题,或评论现有问题,以让其他人知道您正在这样做!

致谢

cargo-pants 的代码主要是由 Glenn Mohre 编写的,我们想向 Glenn 表示最诚挚的感谢,感谢他为社区做出贡献。开源很棒,您帮助使其变得更好!

cargo-pants 的标志是从 www.pexels.com 夺取的,具体是从 这张图片 中获取的。

cargo-pants 的代码受到了 cargo-audit 的影响,我们承认我们是站在巨人的肩膀上。

开发

您可以通过以下方式运行本地更改而不安装包

cargo run --bin cargo-pants pants

cargo run --bin cargo-iq iq --iq-application sandbox-application

使用以下命令在本地上构建和安装包

cargo build --all --all-targets
cargo install cargo-pants --force --path .

发布流程

持续集成构建将在每次向 main 分支提交时自动执行新版本发布。

要跳过从 main 执行发布,请确保您的提交消息包含:[skip ci]

详细说明

请注意,这不受 Sonatype 支持,这是我们向开源社区(即您!)做出的贡献。

记住

  • 根据您所能承受的风险容忍度使用此贡献
  • 请勿为此项目相关的 cargo-pants 支持提交 Sonatype 支持票据
  • 在GitHub上存在DO文件问题,以便社区可以提供帮助

呼,比我预想的要容易。最后但同样重要的是

享受创建和使用 cargo-pants 以及 Sonatype OSS Index 的过程,我们很高兴在这里见到您!

寻求帮助

想为我们的代码做出贡献但需要一些帮助?有几个方法可以获取信息

  • Gitter 上与我们聊天

依赖项

~12–29MB
~441K SLoC