google/oss-rebuild
GitHub: google/oss-rebuild
Google 开源的可复现构建验证工具,通过独立重建开源软件包并生成构建证明来保障软件供应链安全。
Stars: 683 | Forks: 46
# [OSS Rebuild](https://oss-rebuild.dev/)
[](https://docs.oss-rebuild.dev/)
[](https://goreportcard.com/report/google/oss-rebuild)
[](https://pkg.go.dev/github.com/google/oss-rebuild)
通过生成、验证和增强构建证明来保护开源软件包生态系统的安全。
## 概述
[OSS Rebuild](https://oss-rebuild.dev/) 旨在以低成本和高规模为开源软件包生态系统应用[可复现构建](https://reproducible-builds.org/)概念。重建是通过分析已发布的元数据和工件推导出来的,并根据上游软件包版本进行评估。成功后,会为上游工件发布构建证明,从而验证上游工件的完整性并消除许多可能的入侵来源。
我们目前支持以下生态系统:
- npm (JavaScript/TypeScript)
- PyPI (Python)
- Crates.io (Rust)
虽然目标是实现完全覆盖,但目前仅重建每个生态系统中最受欢迎的软件包。
## 使用说明
`oss-rebuild` CLI 工具提供了访问 OSS Rebuild 数据的途径:
```
$ go run github.com/google/oss-rebuild/cmd/oss-rebuild@latest --help
$ # Alternatively, install the binary locally.
$ # Just make sure it's on your PATH: https://go.dev/ref/mod#go-install
$ go install github.com/google/oss-rebuild/cmd/oss-rebuild@latest
$ oss-rebuild --help
```
要查看特定软件包的重建信息,请使用 `get` 命令:
```
$ oss-rebuild get pypi absl-py 2.0.0
```
默认情况下,这仅提供摘要视图。要更细致地访问重建数据,请使用 `--output` 格式之一。例如,要访问完整的证明载荷,请使用 `--output=payload` 选项:
```
$ oss-rebuild get pypi absl-py 2.0.0 --output=payload
```
要查看 dockerfile,请使用 `--output=dockerfile` 选项。这可以与 `docker` 链接以在本地执行重建:
```
$ oss-rebuild get pypi absl-py 2.0.0 --output=dockerfile | docker run $(docker buildx build -q -)
```
虽然上述 `--output=payload` 选项生成更具可读性的内容,但可以通过以下方式访问原始证明包:
```
$ oss-rebuild get pypi absl-py 2.0.0 --output=bundle
```
要探索更多软件包,可以使用 `list` 命令查看已重建的软件包版本:
```
$ oss-rebuild list pypi absl-py
```
### 使用要求
`oss-rebuild` 使用公共 [Cloud KMS](https://cloud.google.com/kms/docs) 密钥来验证证明签名。不支持匿名身份验证,因此必须提供 [ADC 凭证](https://cloud.google.com/docs/authentication/set-up-adc-local-dev-environment)。
这可以通过以下方式完成:
```
$ gcloud init
$ gcloud auth application-default login
```
要禁用签名验证并跳过 KMS 访问要求,请使用:`--verify=false`。
## 目的
- **缓解供应链攻击**:检测开源软件包中的差异,帮助防止像 Solarwinds 和 Codecov 那样的入侵事件。
- **规模化安全标准**:利用行业最佳实践,如 SLSA、Sigstore 和容器化构建。
- **社区参与**:创建一个汇聚力量以保护开源供应链安全的场所。
- **赋能未来创新**:推导数据以利用 AI 驱动的重建。
## 安全
要更好地理解重建的安全属性,请参阅[信任与重建](./docs/trust.md)。
## 相关项目
查看这些为可复现构建工作做出贡献的相关项目:
- [reproducible-central](https://github.com/jvm-repo-rebuild/reproducible-central):Java、Kotlin 可复现性。
- [kpcyrd/rebuilderd](https://github.com/kpcyrd/rebuilderd):支持多个发行版的重建调度器。
## 免责声明
这不是一个官方支持的 Google 产品。
标签:Crates.io, DevSecOps, EVTX分析, EVTX分析, EVTX分析, Golang, Google, npm, Nuclei, PyPI, SBOM, SLSA, Waymore结果处理, 上游代理, 依赖安全, 制品分析, 包管理器, 反向工程, 可重现构建, 安全编程, 完整性验证, 开源软件安全, 攻击面缩减, 文档安全, 日志审计, 构建证明, 源码审计, 硬件无关, 统一API, 请求拦截, 跌倒检测, 软件物料清单