Googleは最近、Open Source Vulnerability (OSV) データベースのオープンソースフロントエンドインターフェイスである「OSV-Scanner」を公開した。 OSVデータベースは、脆弱性情報をOSV形式で保存する分散型のオープンソースデータベースだ。 OSV-Scannerは、OSV データベースに対してプロジェクトとの依存関係を評価し、関連するすべての脆弱性を表示する。
プロジェクトで実行すると、OSV-Scanner はまず、マニフェスト、ソフトウェア部品表(SBOM)、コミットハッシュを分析することによって、使用中のすべての依存関係を決定する。この情報は、OSVデータベースへの問い合わせやプロジェクトに関連するあらゆる脆弱性について議論するために使用される。脆弱性は表形式またはオプションでJSONベースのOSV形式で報告される。
OSV-Scannerによる脆弱性の検出結果(出典:Google)
OSVフォーマットは、脆弱性情報を表示するために機械判読可能なJSON スキーマを提供する。このフォーマットは、実際のオープンソースパッケージで使用されているネーミングや、スキームに沿ったバージョン指定を実施するように設計されている。Google のシニアスタッフエンジニアである Oliver Chang 氏と Google の著名なエンジニアの Russ Cox 氏は、このアプローチについて、"あらゆるオープンソースエコシステムの脆弱性を記述するために使用でき、エコシステムに依存するロジックを必要としない "と述べている。
"schema_version": "1.3.0",
"id": "GHSA-c3g4-w6cv-6v7h",
"modified": "2022-04-01T13:56:42Z",
"published": "2022-04-01T13:56:42Z",
"aliases": [ "CVE-2022-27651" ],
"summary": "Non-empty default inheritable capabilities for linux container in Buildah",
"details": "A bug was found in Buildah where containers were created ...",
"affected": [
{
"package": {
"ecosystem": "Go",
"name": "github.com/containers/buildah"
},
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.25.0"
}
]
}
]
}
],
"references": [
{
"type": "WEB",
"url": "https://github.com/containers/buildah/commit/..."
},
{
"type": "PACKAGE",
"url": "https://github.com/containers/buildah"
}
]
}
ディレクトリをスキャンしてロックファイル、SBOM、およびgitディレクトリを見つけるにはosv-scanner -r /path/to/your/dir
を使用する。
オプションの -r
フラグを指定すると、再帰的なスキャンが可能だ。現在、SPDX と CycloneDX のパッケージ URL を使用した SBOM がサポートされている。現在、yarn.lock, composer.lock, go.mod, Gemfile.lockなどのロックファイルに対応している。
また、Debian イメージにインストールされているパッケージのリストをスキャンして、それらのパッケージの脆弱性を検出することも可能だ: $ osv-scanner --docker image_name:latest
. これは docker がインストールされている必要があり、現在のところ Docker コンテナのファイルシステムをスキャンしない。このプレビュー機能の詳細は、GitHub issueに記載されている。
OSV-Scannerは、IDによって脆弱性を無視するように設定できる。この機能では、その有効期限と理由をオプションで指定可能だ。脆弱性は、IgnoreVulns
キーで指定できる。
[[IgnoredVulns]]
id = "GO-2022-0968"
#ignoreUntil= 2022-11-09
reason = "No ssh servers are connected to or hosted in Go lang"
OSV-Scannerは、OpensSSF ScorecardのVulnerabilitiesチェックにも統合されている。Scorecardsは、オープンソースプロジェクトにおける危険なサプライチェーンの実践を特定する自動化されたセキュリティツールであり、これはScorecardsの分析をプロジェクトの直接的なものから、依存関係内のあらゆる脆弱性を含むように拡張するものだ。
GoogleのソフトウェアエンジニアであるRex Panは、OSV-Scannerの次の展開について、いくつかの詳細を話してくれた。チームは、ワークフローへのさらなる統合をするために、スタンドアロンCIアクションの提供を検討している。Pan氏は、"CVEsに正確なコミットレベルのメタデータを追加することによって、C/C++の脆弱性の高品質データベースを構築"し、CとC++のサポートを改善を試みていることを私達に話してくれた。
OSV-Scannerは、Apache License 2.0のもと、GitHub経由で入手可能だ。発表の詳細は、リリースブログ記事で閲覧できる。