我们创建 Scorecard 的目的是帮助开源维护者改进其安全最佳实践,并帮助开源消费者判断其依赖项是否安全。
Scorecard 是一款自动化工具,用于评估与软件安全相关的一系列重要启发式方法(“检查项”),并为每个检查项分配 0-10 的分数。您可以使用这些分数了解具体需要改进的领域,以增强项目的安全态势。您还可以评估依赖项引入的风险,并就接受这些风险、评估替代方案或与维护者合作进行改进做出明智的决策。
Scorecard 标志的灵感来源:“你通过了!全是 D……还有一个 A!”
自动化分析并做出关于开源项目安全态势的信任决策。
利用这些数据主动提高世界所依赖的关键项目的安全态势。
作为现有政策的衡量工具
如果开源软件消费者对其依赖项有特定行为要求,Scorecard 可用于衡量这些行为。在 V5 版本中,我们认为如果有受支持的分析,结构化结果(Structured Results)是实现这一目标的一种方式。与其依赖 X/10 的综合评分或 Y/10 的维护评分,开源软件消费者可能希望确保其依赖的仓库没有被归档(这由 archived 探针覆盖)。OpenSSF 在其项目安全基线中采用了这种方法。
成为所有项目都应遵循的确定性报告或要求。
Scorecard 并非旨在成为一刀切的解决方案。我们生成结果的每一步都是有倾向性的:包含或排除哪些检查项、每个检查项的重要性以及如何计算分数。检查项本身是启发式的;存在误报和漏报。
无论是由于适用性、可行性还是观点问题,Scorecard 结果中包含或排除的内容都引发了大量讨论。创建一个让所有人都满意的 Scorecard 是不可能的,因为不同的受众会关注不同的行为子集。
特别是综合评分,它无法告诉你仓库正在或未进行哪些具体行为。许多检查项的分数被聚合为单一分数,并且有多种方式得出相同分数。随着我们添加新的启发式方法或改进现有方法,这些分数会发生变化。
Scorecard 已在数千个项目上运行,用于监控和跟踪安全指标。使用 Scorecard 的知名项目包括:
要查看由 Scorecard 定期扫描的项目的评分,请访问 webviewer。您也可以替换以下模板链接中的占位文本(平台、用户/组织名称和仓库名称)来生成仓库的自定义 Scorecard 链接:
https://scorecard.dev/viewer/?uri=<github_or_gitlab>.com/<user_name_or_org>/<repository_name>
例如:
要查看未包含在 webviewer 中的项目的评分,请使用 Scorecard CLI。
我们每周对根据直接依赖项判断的最关键的 100 万个开源项目运行 Scorecard 扫描,并将结果发布到 BigQuery 公开数据集 中。
该数据可在公开的 BigQuery 数据集 openssf:scorecardcron.scorecard-v2 中获得。最新结果可在 BigQuery 视图 openssf:scorecardcron.scorecard-v2_latest 中获得。
您可以使用 BigQuery Explorer 通过导航到“添加数据”>“按名称收藏项目”>“openssf”来查询数据。
例如,您可能对项目评分随时间的变化感兴趣:```sql
SELECT date, score FROM openssf.scorecardcron.scorecard-v2 WHERE repo.name="github.com/ossf/scorecard" ORDER BY date ASC
您可以使用 [`bq`](https://cloud.google.com/bigquery/docs/bq-command-line-tool) 工具将最新结果以JSON格式提取到Google Cloud存储中:```
# Get the latest PARTITION_ID
bq query --nouse_legacy_sql 'SELECT partition_id FROM
openssf.scorecardcron.INFORMATION_SCHEMA.PARTITIONS WHERE table_name="scorecard-v2"
AND partition_id!="__NULL__" ORDER BY partition_id DESC
LIMIT 1'
# Extract to GCS
bq extract --destination_format=NEWLINE_DELIMITED_JSON
'openssf:scorecardcron.scorecard-v2$<partition_id>' gs://bucket-name/filename-*.json
被检查的项目列表可在本仓库的
cron/internal/data/projects.csv
文件中找到。如果您希望我们追踪更多项目,请随时通过 Pull Request 提交其他项目。目前,此列表仅来源于 托管在 GitHub 上的项目。我们计划在不久的将来扩展到其他源代码控制系统上的项目。
在您拥有的 GitHub 项目上使用 Scorecard 最简单的方式是通过 Scorecard GitHub Action。该 Action 会在每次仓库变更时运行,并发出警报,维护者可以在仓库的“安全”标签页中查看。更多信息,请参阅 Scorecard GitHub Action 的安装说明。
要查询 OSS 项目的预计算分数,请使用 REST API。
从我们的每周扫描计算出的分数省略了 CI-Tests、Contributors 和 Dependency-Update-Tool 检查,因为在大规模运行时相关的 API 成本较高。
API 结果通过 CDN 缓存(感谢 Fastly 及其 Fast Forward 项目)。当新结果可用时,CDN 中的缓存会被清除,但如果您发现数据过时的问题,请提交 issue。
要使您的项目在 REST API 上可用,请在 Scorecard GitHub Action 设置中设置
publish_results: true。
REST API 提供的数据采用 CDLA Permissive 2.0 许可。
在 Scorecard GitHub Actions 中启用 publish_results: true
还可以让维护者在其仓库上显示 Scorecard 徽章,以展示他们的工作成果。该徽章还会随着仓库的每次变更自动更新。更多详情请参阅 这篇 OSSF 博客文章。
要在项目仓库中包含徽章,只需在您的 README 中添加以下 Markdown:```
### Scorecard 命令行界面
要对你并不拥有的项目运行 Scorecard 扫描,请使用命令行界面安装选项。
#### 先决条件
平台:目前,Scorecard 支持 OSX 和 Linux 平台。如果你使用的是 Windows 操作系统,可能会遇到问题。欢迎为支持 Windows 做出贡献。
语言:你必须安装 GoLang 才能运行 Scorecard (https://golang.org/doc/install)
#### 安装
##### Docker
`scorecard` 可作为 Docker 容器使用:```shell
docker pull ghcr.io/ossf/scorecard:latest
要使用特定版本的 Scorecard(例如 v3.2.1),请运行:```shell docker pull ghcr.io/ossf/scorecard:v3.2.1
##### 独立使用
要安装独立版的 Scorecard:
访问我们的最新[发布页面](https://github.com/ossf/scorecard/releases/latest),并下载适用于您操作系统的正确 zip 文件。
将二进制文件添加到您的 `GOPATH/bin` 目录(如有必要,使用 `go env GOPATH` 确定您的目录)。
###### 验证下载版本的 SLSA 来源
在发布过程中,我们使用 OpenSSF 的 [slsa-framework/slsa-github-generator](https://github.com/slsa-framework/slsa-github-generator) 生成 [SLSA3 签名](https://slsa.dev)。要验证发布二进制文件:
1. 从 [slsa-framework/slsa-verifier#installation](https://github.com/slsa-framework/slsa-verifier#installation) 安装验证工具。
2. 从 [GitHub 发布页面](https://github.com/GoogleContainerTools/jib/releases/latest) 下载签名文件 `attestation.intoto.jsonl`。
3. 运行验证器:```shell
slsa-verifier -artifact-path <the-zip> -provenance attestation.intoto.jsonl -source github.com/ossf/scorecard -tag <the-tag>
GitHub 对未经过身份验证的请求施加了 API 速率限制。为了避免这些限制,在运行 Scorecard 之前,你必须对请求进行身份验证。有两种身份验证方式:创建一个 GitHub 个人访问令牌,或创建一个 GitHub 应用安装。
public_repo 范围。根据你的平台,使用以下命令将令牌设置为名为 GITHUB_AUTH_TOKEN、GITHUB_TOKEN、GH_AUTH_TOKEN 或 GH_TOKEN 的环境变量。```shellexport GITHUB_AUTH_TOKEN=
export GITHUB_AUTH_TOKEN=,
set GITHUB_AUTH_TOKEN= set GITHUB_AUTH_TOKEN=,
OR
- [创建一个GitHub App安装](https://docs.github.com/en/developers/apps/building-github-apps/creating-a-github-app)
以获得更高的速率限制配额。如果您有一个已安装的GitHub App和密钥文件,您可以按照上面展示的适用于您平台的命令(`set` 或 `export`)使用以下三个环境变量。```
GITHUB_APP_KEY_PATH=<path to the key file on disk>
GITHUB_APP_INSTALLATION_ID=<installation id>
GITHUB_APP_ID=<app id>
这些变量可以从GitHub的开发者设置页面获取。
Scorecard 可以仅使用一个参数运行,即目标仓库的URL:```shell scorecard --repo=github.com/ossf-tests/scorecard-check-branch-protection-e2e
```shell
Starting [CII-Best-Practices]
Starting [Fuzzing]
Starting [Pinned-Dependencies]
Starting [CI-Tests]
Starting [Maintained]
Starting [Packaging]
Starting [SAST]
Starting [Dependency-Update-Tool]
Starting [Token-Permissions]
Starting [Security-Policy]
Starting [Signed-Releases]
Starting [Binary-Artifacts]
Starting [Branch-Protection]
Starting [Code-Review]
Starting [Contributors]
Starting [Vulnerabilities]
Finished [CI-Tests]
Finished [Maintained]
Finished [Packaging]
Finished [SAST]
Finished [Signed-Releases]
Finished [Binary-Artifacts]
Finished [Branch-Protection]
Finished [Code-Review]
Finished [Contributors]
Finished [Dependency-Update-Tool]
Finished [Token-Permissions]
Finished [Security-Policy]
Finished [Vulnerabilities]
Finished [CII-Best-Practices]
Finished [Fuzzing]
Finished [Pinned-Dependencies]
RESULTS
-------
Aggregate score: 7.9 / 10
Check scores:
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| SCORE | NAME | REASON | DOCUMENTATION/REMEDIATION |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 10 / 10 | Binary-Artifacts | no binaries found in the repo | github.com/ossf/scorecard/blob/main/docs/checks.md#binary-artifacts |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 9 / 10 | Branch-Protection | branch protection is not | github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection |
| | | maximal on development and all | |
| | | release branches | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| ? | CI-Tests | no pull request found | github.com/ossf/scorecard/blob/main/docs/checks.md#ci-tests |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 0 / 10 | CII-Best-Practices | no badge found | github.com/ossf/scorecard/blob/main/docs/checks.md#cii-best-practices |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 10 / 10 | Code-Review | branch protection for default | github.com/ossf/scorecard/blob/main/docs/checks.md#code-review |
| | | branch is enabled | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 0 / 10 | Contributors | 0 different companies found -- | github.com/ossf/scorecard/blob/main/docs/checks.md#contributors |
| | | score normalized to 0 | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 0 / 10 | Dependency-Update-Tool | no update tool detected | github.com/ossf/scorecard/blob/main/docs/checks.md#dependency-update-tool |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 0 / 10 | Fuzzing | project is not fuzzed in | github.com/ossf/scorecard/blob/main/docs/checks.md#fuzzing |
| | | OSS-Fuzz | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 1 / 10 | Maintained | 2 commit(s) found in the last | github.com/ossf/scorecard/blob/main/docs/checks.md#maintained |
| | | 90 days -- score normalized to | |
| | | 1 | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| ? | Packaging | no published package detected | github.com/ossf/scorecard/blob/main/docs/checks.md#packaging |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 8 / 10 | Pinned-Dependencies | unpinned dependencies detected | github.com/ossf/scorecard/blob/main/docs/checks.md#pinned-dependencies |
| | | -- score normalized to 8 | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 0 / 10 | SAST | no SAST tool detected | github.com/ossf/scorecard/blob/main/docs/checks.md#sast |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 0 / 10 | Security-Policy | security policy file not | github.com/ossf/scorecard/blob/main/docs/checks.md#security-policy |
| | | detected | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| ? | Signed-Releases | no releases found | github.com/ossf/scorecard/blob/main/docs/checks.md#signed-releases |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 10 / 10 | Token-Permissions | tokens are read-only in GitHub | github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions |
| | | workflows | |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
| 10 / 10 | Vulnerabilities | no vulnerabilities detected | github.com/ossf/scorecard/blob/main/docs/checks.md#vulnerabilities |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
GITHUB_AUTH_TOKEN 必须设置为一个有效的令牌```shell
docker run -e GITHUB_AUTH_TOKEN=token ghcr.io/ossf/scorecard:latest --show-details --repo=https://github.com/ossf/scorecard
要使用特定scorecard版本(例如v3.2.1),请运行:```shell
docker run -e GITHUB_AUTH_TOKEN=token ghcr.io/ossf/scorecard:v3.2.1 --show-details --repo=https://github.com/ossf/scorecard
要了解检查失败原因的更多详细信息,请使用 --show-details 选项:```
./scorecard --repo=github.com/ossf-tests/scorecard-check-branch-protection-e2e --checks Branch-Protection --show-details
```shell
Starting [Pinned-Dependencies]
Finished [Pinned-Dependencies]
RESULTS
-------
|---------|------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------|
| SCORE | NAME | REASON | DETAILS | DOCUMENTATION/REMEDIATION |
|---------|------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------|
| 9 / 10 | Branch-Protection | branch protection is not | Info: 'force pushes' disabled | github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection |
| | | maximal on development and all | on branch 'main' Info: 'allow | |
| | | release branches | deletion' disabled on branch | |
| | | | 'main' Info: linear history | |
| | | | enabled on branch 'main' Info: | |
| | | | strict status check enabled | |
| | | | on branch 'main' Warn: status | |
| | | | checks for merging have no | |
| | | | specific status to check on | |
| | | | branch 'main' Info: number | |
| | | | of required reviewers is 2 | |
| | | | on branch 'main' Info: Stale | |
| | | | review dismissal enabled on | |
| | | | branch 'main' Info: Owner | |
| | | | review required on branch | |
| | | | 'main' Info: 'administrator' | |
| | | | PRs need reviews before being | |
| | | | merged on branch 'main' | |
|---------|------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------|
维护者注释 允许维护者在 Scorecard 检查结果旁添加上下文信息。当 Scorecard 对项目的安全实践评估不完整时,注释可以为用户提供额外信息。要查看每个检查的维护者注释,请使用 --show-annotations 选项。
有关可用注释或如何制作注释的更多信息,请参阅配置文档。
要在 GitLab 仓库上运行 Scorecard,您必须创建一个GitLab 访问令牌,并具有以下权限:
read_apiread_userread_repository您可以通过设置 GITLAB_AUTH_TOKEN 环境变量在 GitLab 仓库上运行 Scorecard:```bash
export GITLAB_AUTH_TOKEN=glpat-xxxx
scorecard --repo gitlab.com///
关于在GitLab CI/CD中使用Scorecard的示例,请参见[这里](https://gitlab.com/ossf-test/scorecard-pipeline-example)。
###### 自托管版本
虽然我们专注于GitLab.com的支持,但Scorecard也适用于自托管的GitLab安装。
如果你的平台托管在子域名下(例如 `gitlab.foo.com`),Scorecard应该开箱即用。
如果你的平台托管在某个路径下(例如 `foo.com/bar/`),你将需要设置`GL_HOST`环境变量。```bash
export GITLAB_AUTH_TOKEN=glpat-xxxx
export GL_HOST=foo.com/bar
scorecard --repo foo.com/bar/<org>/<project>
要使用 GitHub Enterprise 主机 github.corp.com,请使用 GH_HOST 环境变量。```shell
export GH_HOST=github.corp.com export GITHUB_AUTH_TOKEN=token
scorecard --repo=github.corp.com/org/repo
scorecard --repo=org/repo
##### 使用包管理器
对于 `--npm`、`--pypi`、`--rubygems` 或 `--nuget` 生态系统的项目,您可以选择使用包管理器运行 Scorecard。提供包名称以在相应的 GitHub 源代码上运行检查。
例如,`--npm=angular`。
注意:包生态系统标志仅用于查找 GitHub 仓库。
这些标志不会改变检查的最终评估。
此外,这些标志不能与 `--repo` 一起使用。
##### 运行特定检查
要仅运行特定检查,请使用 `--checks` 参数,并附带检查名称列表。
例如,`--checks=CI-Tests,Code-Review`。
##### 格式化结果
当前支持的格式有 `default`(文本)和 `json`。
可以使用 `--format` 标志指定这些格式。例如,`--format=json`。
## 检查项
### Scorecard 检查项
默认情况下,以下所有检查都会针对目标项目运行:
名称 | 描述 | 风险等级 | 需要 Token | GitLab 支持 | 备注
---- | ---- | -------- | ---------- | ------------ | --- |
[Binary-Artifacts](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#binary-artifacts) | 项目是否没有已检入的二进制文件? | 高 | PAT, GITHUB_TOKEN | 支持 |
[Branch-Protection](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#branch-protection) | 项目是否使用[分支保护](https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/about-protected-branches)? | 高 | PAT(`repo` 或 `repo> public_repo`),GITHUB_TOKEN | 支持(见备注) | 某些设置仅支持具有维护者 PAT 的情况
[CI-Tests](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#ci-tests) | 项目是否在 CI 中运行测试,例如 [GitHub Actions](https://docs.github.com/en/free-pro-team@latest/actions)、[Prow](https://github.com/kubernetes/test-infra/tree/master/prow)? | 低 | PAT, GITHUB_TOKEN | 支持 |
[CII-Best-Practices](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#cii-best-practices) | 项目是否已获得 [OpenSSF(原 CII)最佳实践徽章](https://www.bestpractices.dev)的通过、银牌或金牌级别? | 低 | PAT, GITHUB_TOKEN | 验证中 |
[Code-Review](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#code-review) | 项目是否在代码合并前进行代码审查? | 高 | PAT, GITHUB_TOKEN | 支持 |
[Contributors](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#contributors) | 项目是否拥有来自至少两个不同组织的贡献者? | 低 | PAT, GITHUB_TOKEN | 验证中 |
[Dangerous-Workflow](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#dangerous-workflow) | 项目是否避免在 GitHub Action 工作流中使用危险编码模式? | 严重 | PAT, GITHUB_TOKEN | 不支持 |
[Dependency-Update-Tool](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#dependency-update-tool) | 项目是否使用工具来帮助更新其依赖项? | 高 | PAT, GITHUB_TOKEN | 支持 |
[Fuzzing](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#fuzzing) | 项目是否使用模糊测试工具,例如 [OSS-Fuzz](https://github.com/google/oss-fuzz)、[QuickCheck](https://hackage.haskell.org/package/QuickCheck) 或 [fast-check](https://fast-check.dev/)? | 中 | PAT, GITHUB_TOKEN | 验证中 |
[License](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#license) | 项目是否声明了许可证? | 低 | PAT, GITHUB_TOKEN | 验证中 |
[Maintained](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#maintained) | 项目是否至少存在 90 天并得到维护? | 高 | PAT, GITHUB_TOKEN | 验证中 |
[Pinned-Dependencies](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#pinned-dependencies) | 项目是否声明并固定了[依赖项](https://docs.github.com/en/free-pro-team@latest/github/visualizing-repository-data-with-graphs/about-the-dependency-graph#supported-package-ecosystems)? | 中 | PAT, GITHUB_TOKEN | 验证中 |
[Packaging](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#packaging) | 项目是否从 CI/CD 构建并发布官方包,例如 [GitHub Publishing](https://docs.github.com/en/free-pro-team@latest/actions/guides/about-packaging-with-github-actions#workflows-for-publishing-packages)? | 中 | PAT, GITHUB_TOKEN | 验证中 |
[SAST](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#sast) | 项目是否使用静态代码分析工具,例如 [CodeQL](https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning-for-a-repository#enabling-code-scanning-using-actions)、[LGTM(已弃用)](https://lgtm.com)、[SonarCloud](https://sonarcloud.io)? | 中 | PAT, GITHUB_TOKEN | 不支持 |
[Security-Policy](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#security-policy) | 项目是否包含[安全策略](https://docs.github.com/en/free-pro-team@latest/github/managing-security-vulnerabilities/adding-a-security-policy-to-your-repository)? | 中 | PAT, GITHUB_TOKEN | 验证中 |
[Signed-Releases](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#signed-releases) | 项目是否对[发布版本进行加密签名](https://wiki.debian.org/Creating%20signed%20GitHub%20releases)? | 高 | PAT, GITHUB_TOKEN | 验证中 |
[Token-Permissions](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#token-permissions) | 项目是否将 GitHub 工作流令牌声明为[只读](https://docs.github.com/en/actions/reference/authentication-in-a-workflow)? | 高 | PAT, GITHUB_TOKEN | 不支持 |
[Vulnerabilities](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#vulnerabilities) | 项目是否有未修复的漏洞?使用 [OSV 服务](https://osv.dev)。 | 高 | PAT, GITHUB_TOKEN | 验证中 |
[Webhooks](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md#webhooks) | 仓库中定义的 webhook 是否配置了用于验证请求来源的令牌? | 严重 | 维护者 PAT(`admin: repo_hook` 或 `admin> read:repo_hook` [文档](https://docs.github.com/en/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository)) | | 实验性
### 详细检查文档
要查看每个检查的详细信息、评分标准和修复步骤,请查看[检查文档页面](https://github.com/ossf/scorecard/blob/HEAD/docs/checks.md)。
### Scorecard 检查初学者指南
有关入门时应使用的检查指南,请参阅[Scorecard 检查初学者指南](https://github.com/ossf/scorecard/blob/HEAD/docs/beginner-checks.md)。
## 其他重要建议
### 双因素认证 (2FA)
[双因素认证 (2FA)](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/about-two-factor-authentication) 为登录网站或应用增加了额外的安全层。如果您的密码被泄露,2FA 通过要求第二种形式的认证(例如通过短信或认证应用发送的验证码,或触摸物理安全密钥)来保护您的账户。
我们强烈建议您在可用的任何重要账户上启用 2FA。2FA 不是 Scorecard 检查项,因为 GitHub 和 GitLab 不会公开用户账户的此类数据。可以说,这些数据应该始终保持私密,因为未启用 2FA 的账户极易受到攻击。
尽管这不是官方检查项,但我们敦促所有项目维护者启用 2FA 以保护其项目免受侵害。
#### 启用 2FA
##### 对于用户
请按照[配置双因素认证](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)中所述的步骤操作。
如果可能,请使用以下方式之一:
- 物理安全密钥(首选),例如 Titan 或 Yubikey
- 存储在受访问保护和加密的保管库中的恢复代码
作为最后选择,请使用短信。请注意:使用短信的 2FA 容易受到 [SIM 卡交换攻击](https://en.wikipedia.org/wiki/SIM_swap_scam)。
##### 对于组织
1. [准备在组织中要求 2FA](https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/preparing-to-require-two-factor-authentication-in-your-organization)
2. [在组织中要求 2FA](https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization)
## 评分
### 总分
每个单独的检查都返回 0 到 10 的分数,10 代表最佳可能分数。Scorecard 还生成一个总分,它是按风险加权的各个检查的加权平均值。
* “严重”风险检查权重为 10
* “高”风险检查权重为 7.5
* “中”风险检查权重为 5
* “低”风险检查权重为 2.5
请参阅[当前 Scorecard 检查列表](#scorecard-checks)以了解每个检查的风险等级。
## 贡献
### 报告问题
如果您遇到看似错误的问题,请使用 [GitHub 问题跟踪系统。](https://github.com/ossf/scorecard/issues) 在提交问题之前,请搜索现有问题以确认您的问题是否已被涵盖。
### 为 Scorecard 做贡献
在贡献之前,请遵守我们的[行为准则](https://github.com/ossf/scorecard/blob/HEAD/CODE_OF_CONDUCT.md)。
请参阅[贡献](https://github.com/ossf/scorecard/blob/HEAD/CONTRIBUTING.md)文档,了解有关如何为项目做出贡献的指导。
### 添加 Scorecard 检查
如果您想添加一个检查,请参阅[此处](https://github.com/ossf/scorecard/blob/HEAD/checks/write.md)的指导。
### 与 Scorecard 社区联系
如果您想参与 Scorecard 社区或有想讨论的想法,我们在 [OSSF 最佳实践工作组](https://github.com/ossf/wg-best-practices-os-developers)会议中讨论该项目。
工件 | 链接
--- | ----
Scorecard 开发者论坛 | [ossf-scorecard-dev@](https://groups.google.com/g/ossf-scorecard-dev)
Scorecard 公告论坛 | [ossf-scorecard-announce@](https://groups.google.com/g/ossf-scorecard-announce)
社区会议 VC | [链接到 z o o m 会议](https://zoom-lfx.platform.linuxfoundation.org/meeting/95007214146?password=250040c3-80c0-48c4-80c1-07a373116d54)
社区会议日历 | **_亚太友好_** 每两周一次,周四下午 1:00-2:00 太平洋时间 ([OSSF 公共日历](https://calendar.google.com/calendar/u/0/embed?height=600&wkst=1&bgcolor=%238E24AA&showTitle=1&mode=WEEK&showCalendars=0&showTabs=1&showPrint=0&title=OpenSSF+Community+Calendar&src=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%238E24AA)) <br>视频通话:[LFX Zoom](https://zoom-lfx.platform.linuxfoundation.org/meeting/95007214146?password=250040c3-80c0-48c4-80c1-07a373116d54) <br> **_EMEA 友好_** 每四周一次,周一早上 7:00-8:00 太平洋时间 ([OSSF 公共日历](https://calendar.google.com/calendar/u/0/embed?height=600&wkst=1&bgcolor=%238E24AA&showTitle=1&mode=WEEK&showCalendars=0&showTabs=1&showPrint=0&title=OpenSSF+Community+Calendar&src=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%238E24AA)) <br> 视频通话:[LFX Zoom](https://zoom-lfx.platform.linuxfoundation.org/meeting/93377638314?password=d53af562-d908-4100-8ae1-52686756cc5d)
会议笔记 | [笔记](https://docs.google.com/document/d/1b6d3CVJLsl7YnTE7ZaZQHdkdYIvuOQ8rzAmvVdypOWM/edit?usp=sharing)
Slack 频道 | [#scorecard](https://slack.openssf.org/#scorecard)
__维护者__ 列在 [CODEOWNERS 文件](https://github.com/ossf/scorecard/blob/HEAD/.github/CODEOWNERS) 中。
### 报告安全问题
要报告安全问题,请按照[此处](https://github.com/ossf/scorecard/blob/HEAD/SECURITY.md)的说明操作。
### 加入 Scorecard 项目会议
#### Zoom
**_亚太友好_** 每两周一次,周四下午 1:00-2:00 太平洋时间 ([OSSF 公共日历](https://calendar.google.com/calendar/u/0/embed?height=600&wkst=1&bgcolor=%238E24AA&showTitle=1&mode=WEEK&showCalendars=0&showTabs=1&showPrint=0&title=OpenSSF+Community+Calendar&src=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%238E24AA))
视频通话:[LFX z o o m](https://zoom-lfx.platform.linuxfoundation.org/meeting/95007214146?password=250040c3-80c0-48c4-80c1-07a373116d54)
**_EMEA 友好_** 每四周一次,周一早上 7:00-8:00 太平洋时间 ([OSSF 公共日历](https://calendar.google.com/calendar/u/0/embed?height=600&wkst=1&bgcolor=%238E24AA&showTitle=1&mode=WEEK&showCalendars=0&showTabs=1&showPrint=0&title=OpenSSF+Community+Calendar&src=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%238E24AA))
视频通话:[LFX z o o m](https://zoom-lfx.platform.linuxfoundation.org/meeting/93377638314?password=d53af562-d908-4100-8ae1-52686756cc5d)
#### 议程
您可以在此处查看[议程和会议笔记](https://docs.google.com/document/d/1b6d3CVJLsl7YnTE7ZaZQHdkdYIvuOQ8rzAmvVdypOWM/edit?usp=sharing)。
## 随时间变化的星数
[](https://starchart.cc/ossf/scorecard)
## 常见问题解答
### 常见问题解答
有关 Scorecard 常见问题的解答,请参阅[常见问题解答](https://github.com/ossf/scorecard/blob/HEAD/docs/faq.md)。
| 包管理器 | 支持的发行版 | 命令 |
|---|
| Nix | NixOS | nix-shell -p nixpkgs.scorecard |
| AUR 助手 | Arch Linux | 使用你的 AUR 助手安装 scorecard |
| Homebrew | macOS 或 Linux | brew install scorecard |