OpenSSF Scorecard / プロジェクトの姿勢

Security-Policy
脆弱性の報告先が公開されているか

脆弱性を見つけた人が、どこへ報告すればよいかが公開されているかを見るチェックです。ファイルの有無だけでなく、中身に連絡先や手順が書かれているかまで見ています。

何を見るチェックか

Scorecard は、リポジトリに SECURITY.md(または security.md.github/SECURITY.mddocs/SECURITY.md など)があるかを探します。

見つかった場合、さらに中身を確認します。

  • メールアドレスや報告用URLなど、連絡先が書かれているか
  • 報告からの流れや、対応の目安期間が書かれているか
  • 十分な長さの説明があるか(1行だけのファイルは低く評価されます)

GitHub の Private vulnerability reporting が有効になっている場合も評価されます。

ファイルを置いただけでは満点になりません。中身が見られています。

点が低いと何を意味するか

点が低いということは、脆弱性を見つけた人が、どこへ知らせればよいか分からない状態を意味します。

これが実際に困るのは、次のような場面です。

  • 発見者が Issue に脆弱性の詳細を書いてしまい、修正前に公開されてしまう
  • 報告先が分からず、そのまま放置されて誰にも直されない
  • 報告してもいつ対応されるのか分からず、発見者が独自に公表してしまう

つまりこの項目は、**そのプロジェクトが「悪い知らせを受け取る準備をしているか」**を示します。

なお、これは「脆弱性がある」という意味ではまったくありません。 脆弱性の有無を見ているのは Vulnerabilities の方です。

誤解しやすい点

「SECURITY.md が無い=ずさんなプロジェクト」ではありません。

次のようなケースでは、点が低くても実害はほとんどありません。

  • 組織全体で共通の SECURITY.md を持っている場合。 GitHub は組織の .github リポジトリに置いたファイルを全リポジトリに適用しますが、 Scorecard がそれを拾えないことがあります。
  • 小さなユーティリティで、報告先が README に書かれている場合。 実質的に連絡はできますが、決められたファイル名ではないため評価されません。
  • 報告先がプロジェクトの公式サイト側にある場合。

逆に、ファイルはあるのに中身が空に近い場合も低く出ます。 「Please report security issues.」の一行だけ、というファイルがこれにあたります。

判断するときは、点数ではなく実際に SECURITY.md を開いて読むのが確実です。

採用する側が確認すべきこと

  1. リポジトリの SECURITY.md を実際に開く。 連絡先が書かれているか、対応の目安が書かれているかを見ます。

  2. 無ければ、組織の .github リポジトリを見る。 github.com/{組織名}/.github に共通のファイルが置かれていることがあります。

  3. 過去の Advisory の扱われ方を見る。 リポジトリの Security タブに公開済みの Advisory があれば、 報告から公開までの流れが実際に機能していた証拠になります。 これは SECURITY.md の有無よりも強い材料です。

業務で使う依存であれば、自分が脆弱性を見つけたときに誰へ連絡するかを、 採用の時点で1行メモしておくと後で困りません。

メンテナーなら何を改善できるか

リポジトリのルートに SECURITY.md を置きます。GitHub のリポジトリ設定にある **Security policy の「Start setup」**から雛形を作れます。

最低限、次を書いておくと十分に機能します。

  • 報告先(メールアドレス、または GitHub の Private vulnerability reporting を使う旨)
  • サポートしているバージョン(どのバージョンなら修正を出すか)
  • 返信の目安(例: 3営業日以内に一次返信)
  • 公開までの流れ(修正版の公開後に Advisory を出す、など)

あわせて、リポジトリ設定の Private vulnerability reporting を有効にすることをおすすめします。 発見者が GitHub 上から非公開で報告でき、Issue に書かれてしまう事故を減らせます。

1人で開発している場合でも、「返信は遅れることがあります」と正直に書いておく方が、 何も書かれていないより発見者にとって親切です。

あわせて読む