GitHubとGoogleは、Open Source Security FoundationScorecardsプロジェクトのバージョン4リリースを発表した。スコアカードは自動化されたセキュリティツールである。このツールにより、オープンソースプロジェクトにおけるリスクの高いサプライチェーンのプラクティスが特定される。このリリースでは、新しいスコアカードGitHubアクション、新しいセキュリティチェックが追加され、Foundationsの毎週のスキャンに含まれるリポジトリが大幅に増加した。
スコアカードは、プロジェクトのセキュリティプラクティスをレビュー、評価する一連のスキャンである。このスキャンでは、プロジェクトにチェックインされたバイナリがないこと、ブランチ保護が実施されていること、コードレビューが必要であること、プロジェクトが暗号でリリースに署名していることが確認される。利用可能なスキャンの完全なリストは、プロジェクトリポジトリにある。ツールを実行すると、個々のセキュリティプラクティスを評価し、プロジェクト全体の合計スコアを含めて、0~10のスコアが返される。サンプルスキャンの出力の一部を以下に示す。
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 |
|---------|------------------------|--------------------------------|---------------------------------------------------------------------------|
新しいスコアカードGitHubアクションにより、ツールの実行プロセスがシンプルになる。アクションを設定すると、スコアカードワークフローは、各投稿で自動的に実行されるように事前構成される。結果はGitHubのコードスキャンアラートAPIに自動的に送信され、[セキュリティ]タブのコードスキャンアラートダッシュボードに表示される。そのため、ツールを手動で実行する必要があった以前のリリースよりも改善されている。
このリリースでは、GitHubアクションワークフローの危険なコーディングパターンに対する新しいスキャンが導入されている。これは、クリティカルレベルの評価となる最優先のリスクである。スキャンにより、pull_request_target
トリガーの不適切な使用と、GitHubワークフローでのスクリプトインジェクションのリスクが検出される。pull_request_target
ワークフロートリガーを信頼できないPRの明示的なチェックアウトと組み合わせると、リポジトリが危険にさらされる可能性がある。スクリプトインジェクションは、検証されていない入力がワークフローに直接流れ込み、実行可能コードとして解釈できる場合に起こりうる。
- name: Check PR title
run: |
title="${{ github.event.pull_request.title }}"
if [[ $title =~ ^octocat ]]; then
echo "PR title starts with 'octocat'"
exit 0
else
echo "PR title did not start with 'octocat'"
exit 1
fi
この例では、悪意のある攻撃によってプルリクエストのタイトルが、ls
コマンドの実行を強制するためにa"; Is $GITHUB_WORKSPACE
に設定される場合がある。これは、run
コマンドがランナーの一時的なシェルスクリプト内で実行されるため可能である。シェルスクリプトの前に実行すると、すべての式が評価され、評価された値に置き換えられる。
スコアカードチームは、重要なオープンソースプロジェクトのスキャンも毎週実行している。これらのプロジェクトは、それらが持つ直接の依存関係の数に基づいて特定される。このリリースでは、スキャンされるプロジェクトの数が50,000から100万に増加した。これらの毎週のスキャンは、自己実行型のスキャンツールで利用可能な0~10の評価スケールを反映している。これらの結果は、OpenSSF Security Metricsダッシュボード、Scorecards API、BigQueryパブリックデータセット、およびOpen Source Insights Webサイトから入手できる。
OpenSSFスコアカードはGitHubから入手できる。パブリックリポジトリは、コードスキャンAPIとしてGitHubアクションワークフローを利用できる。GitHub上のすべてのパブリックリポジトリにおいて月に1,000アクション分が無料である。他のGitHubユーザは、これらの機能をGitHub EnterpriseやGitHub Advanced Securityを介して利用できる。