GitHub Advisory Database について
アドバイザリは、以下のソースから GitHub Advisory Database に追加されます。
- GitHubで報告されたセキュリティアドバイザリ
- National Vulnerability Database
- npm セキュリティ アドバイザリ データベース
- FriendsOfPHP データベース
- Go Vulncheck データベース
- GitHub Packaging Advisory データベース
- Ruby Advisory データベース
- RustSec Advisory データベース
- コミュニティのコード提供。 詳細については、「https://github.com/github/advisory-database/pulls」を参照してください。
アドバイザリのインポート元として他のデータベースに心当たりがある場合は、https://github.com/github/advisory-database で issue をオープンしてお知らせください。
セキュリティ アドバイザリは、オープン ソース脆弱性 (OSV) 形式の JSON ファイルとして公開されます。 OSV 形式の詳細については、「オープンソース脆弱性の形式」を参照してください。
セキュリティ アドバイザリの種類
GitHub Advisory Database の各アドバイザリは、オープンソース プロジェクトの脆弱性または悪意のあるオープンソース ソフトウェアに関する情報です。
脆弱性とは、プロジェクトあるいはそのコードを利用する他のプロジェクトにおいて、秘密性、一貫性、可用性を損なうために悪用されうる、プロジェクトコードの問題です。 脆弱性の種類、重要度、攻撃の方法は様々です。 コードの脆弱性は通常、誤って導入され、検出された直後に修正されます。 依存関係が使用可能になったらすぐに、修正された依存関係を使用するようにコードを更新する必要があります。
これに対し、悪意のあるソフトウェア (マルウェア) は、望ましくない、または有害な機能を実行するように意図的に設計されたコードです。 マルウェアは、ハードウェア、ソフトウェア、機密データ、またはマルウェアを使用するアプリケーションのユーザーを対象とすることがあります。 プロジェクトからマルウェアを削除し、依存関係に対するより安全な代替手段を見つける必要があります。
GitHub-レビュードされた勧告
** GitHubレビューされた** アドバイザリは、サポートされているエコシステム内のパッケージにマップされます。 各アドバイザリの有効性を慎重に確認し、完全な説明とエコシステムとパッケージ情報の両方が含まれていることを確認します。
一般に、サポートされているエコシステムは、ソフトウェア プログラミング言語の関連するパッケージ レジストリにちなんで名前が付けられます。 サポートされているレジストリから取得されたパッケージの脆弱性を対象としている場合は、アドバイザリをレビューします。
- Composer (レジストリ: https://packagist.org/)
- Erlang (レジストリ: https://hex.pm/)
- Go (レジストリ: https://pkg.go.dev/)
- GitHub Actions (https://github.com/marketplace?type=actions/)
- Maven (レジストリ: https://repo.maven.apache.org/maven2)
- Npm (レジストリ: https://www.npmjs.com/)
- NuGet (レジストリ: https://www.nuget.org/)
- Pip (レジストリ: https://pypi.org/)
- Pub (レジストリ: https://pub.dev/packages/registry)
- RubyGems (レジストリ: https://rubygems.org/)
- Rust (レジストリ: https://crates.io/)
- Swift (レジストリ: N/A)
サポートする必要がある新しいエコシステムの提案がある場合は、ディスカッションのために issue を開いてください。
リポジトリの Dependabot alerts を有効にすると、新しい GitHubレビューアドバイザリから依存しているパッケージの脆弱性が報告されると、自動的に通知されます。 詳しくは、「Dependabot アラートについて」をご覧ください。
レビューされていないアドバイザリについて
未確認の アドバイザリは、National Vulnerability Database フィードから直接、 GitHub Advisory Databaseに自動的に発行されます。
Dependabot では、この種類のアドバイザリは有効性や完了が確認されないため、未確認のアドバイザリのDependabot alerts は作成されません。
マルウェア アドバイザリ
マルウェア アドバイザリは、マルウェアによって引き起こされる脆弱性に関連し、 npm エコシステムに限定されます。 私たちは、npm セキュリティ チームから提供された情報をもとに、GitHub Advisory Database に自動的に公開します。
Dependabot は、マルウェアが検出されたときにアラートを生成しません。これは、ほとんどの脆弱性をダウンストリーム ユーザーが解決できないためです。
`type:malware`でGitHub Advisory Databaseを検索することで、マルウェアアドバイザリを表示できます。
マイクロソフトのマルウェア アドバイザリは、主に代替攻撃に関するものです。 この種の攻撃では、攻撃者は、悪意のあるバージョンが使用されることを期待して、サード パーティまたはプライベート レジストリからのユーザーが信頼している依存関係と同じ名前のパッケージをパブリック レジストリに公開します。 Dependabot では、プロジェクト構成を調べてパッケージがプライベート レジストリから取得されているかどうかを判断しないため、悪意のあるバージョンまたは悪意のないバージョンを使用しているかどうかはわかりません。 依存関係のスコープが適切に設定されているユーザーは、マルウェアの影響を受けないはずです。
セキュリティアドバイザリ情報
このセクションでは、 GitHub Advisory Databaseの特定のデータ属性に関する詳細情報を確認できます。
GHSA識別子
その種類に関係なく、セキュリティ アドバイザリにはそれぞれ、GHSA ID と呼ばれている一意の識別子が与えられます。
GHSA-ID修飾子は、GitHubで新しいアドバイザリが作成されるか、サポートされている任意のソースからGitHub Advisory Databaseに追加されるときに割り当てられます。
GHSA ID の構文は形式 GHSA-xxxx-xxxx-xxxx に従います。各部分は次のようになります。
xはセット23456789cfghjmpqrvwxからの文字または数字です。- 名前の
GHSA部分の外側- 数字と文字はランダムに割り当てられます。
- 文字はすべて小文字になります。
正規表現を使って GHSA ID の有効性を検証できます。
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
/GHSA(-[23456789cfghjmpqrvwx]{4}){3}/
CVSS レベル
GitHub Advisory Databaseでは、CVSS バージョン 3.1 と CVSS バージョン 4.0 の両方がサポートされています。
各セキュリティ アドバイザリには、脆弱性またはマルウェアに関する情報が含まれています。このような情報としては、説明、重要度、影響を受けるパッケージ、パッケージ エコシステム、影響を受けるバージョンとパッチを適用したバージョン、影響、オプションの情報 (リファレンス、回避策、クレジットなど) などがあります。 さらに、National Vulnerability Database リストのアドバイザリには、CVE レコードへのリンクが含まれており、脆弱性、その CVSS スコア、その定性的な重要度レベルの詳細を確認できます。 詳細については、アメリカ国立標準技術研究所の National Vulnerability Database を参照してください。
重大度レベルは、「Common Vulnerability Scoring System (CVSS)」(共通脆弱性評価システム (CVSS)) のセクション 5 で定義されている 4 つの可能なレベルのいずれかです。
-
Low
-
中程度/適度
-
High
-
危うい
GitHub Advisory Databaseでは、上記の CVSS レベルを使用します。 GitHub CVE を取得した場合、GitHub Advisory Databaseは、保守担当者によって割り当てられた CVSS バージョン (バージョン 3.1 または 4.0) を使用します。 CVE がインポートされている場合、 GitHub Advisory Database は CVSS バージョン 4.0、3.1、および 3.0 をサポートします。
GitHub Security Lab に参加して、セキュリティ関連のトピックを見たり、セキュリティのツールやプロジェクトに貢献したりすることもできます。
EPSS スコア
Exploit Prediction Scoring System (EPSS) は、脆弱性を悪用する可能性を定量化するために、インシデント対応およびセキュリティ チーム (FIRST) のグローバル フォーラムによって考案されたシステムです。 このモデルは、0 ~ 1 (0 ~ 100%) の確率スコアを生成します。スコアが高いほど、脆弱性が悪用される確率が高くなります。 FIRST の詳細については、「https://www.first.org/」を参照してください。
GitHub Advisory Databaseには、対応する EPSS データを含む CVE を含むアドバイザリの FIRST からの EPSS スコアが含まれています。
GitHub には、EPSS スコアパーセンタイルも表示されます。これは、同じまたは低い EPSS スコアを持つすべてのスコア付けされた脆弱性の割合です。
たとえば、アドバイザリに 95 パーセンタイルで 90.534% のパーセンテージを持つ EPSS スコアがある場合、EPSS モデルによるとこれは次のことを意味します:
- この脆弱性が今後 30 日間に実際に悪用される可能性は 90.534% です。
- モデル化された脆弱性のうち 95% は、この脆弱性よりも今後 30 日間に悪用される可能性が低いと考えられています。
このデータを解釈する詳しい方法については、「FIRST の EPSS ユーザー ガイド」を参照してください。 この情報は、FIRST のモデルに従って脆弱性が実際に悪用される可能性を解釈する際に、パーセンテージとパーセンタイルの両方がどのように使用されるかを理解するのに役立ちます。 詳細については、FIRST Web サイトの「FIRST の EPSS ユーザー ガイド」を参照してください。
FIRST は、EPSS データの分布に関して更に情報を提供します。 詳細については、FIRST Web サイトの「EPSS のデータと統計に関するドキュメント」を参照してください。
メモ
GitHub は、毎日の同期アクションを使用して EPSS データを最新の状態に保ちます。 EPSS スコアのパーセンテージは常に完全な同期が行われますが、スコアパーセンタイルは大幅に異なる場合にのみ更新されます。
GitHubでは、このデータを作成するのではなく、FIRST からソース化します。つまり、このデータはコミュニティの投稿では編集できません。 コミュニティ コントリビューションの詳細については、「[AUTOTITLE](/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/editing-security-advisories-in-the-github-advisory-database)」を参照してください。
コミュニティへの貢献
**コミュニティ コントリビューション**は、グローバル セキュリティ アドバイザリの内容を改善するために、[github/advisory-database](https://github.com/github/advisory-database?ref_product=security-advisories&ref_type=engagement&ref_style=text) リポジトリに送信される pull request です。 コミュニティへの投稿を行うときは、影響を受けるエコシステムの追加、重大度レベル、影響を受けるユーザーの説明など、詳細を編集または追加できます。
GitHub Security Labキュレーション チームは、送信された投稿を確認し、受け入れられた場合はGitHub Advisory Databaseに公開します。
コミュニティの投稿を受け入れて公開すると、コミュニティコントリビューション pull request を送信したユーザーには、クレジットの種類として "アナリスト" が自動的に割り当てられます。 詳細については、 AUTOTITLE を参照してください。
詳細については、次を参照してください。
- Dependabot アラートについて
- CVE プログラムの"脆弱性" の定義