業務改善の専門家であり、多くの著書を持つH. James Harrington氏は、「測定できないものを理解することはできず、理解できないものを制御することはできず、制御できないものを改善することはできない」と述べている。Googleはこの助言に従って、異なるオープンソースエコシステム間で脆弱性情報を交換するための統一的な脆弱性記述方式を導入することで、オープンソースのセキュリティを強化しようとしている。
これはとても重要な問題だ。基本的な問題として、現状では、脆弱性データベースが数多く存在しているにもかかわらず、脆弱性に関する情報を記述するための標準的な共通フォーマットが存在していない。このため、複数のデータベースの情報を集約しようとすれば、それぞれの情報を個別に処理する必要がある。これでは時間とエネルギーが無駄になってしまう。
そこでGoogleは、「Open Sourdce Vulnerability」(OSV)のデータベースや脆弱性のデータセット「OSS-Fuzz」で積み上げてきた成果をもとに、共通フォーマットの作成に取り組むことにした。GoogleのオープンソースセキュリティチームやGoチームに加え、さまざまなオープンソースコミュニティーがこのシンプルな脆弱性情報共通フォーマットの作成に参加している。
その結果、今ではOSVとそのスキーマが拡張され、そのフォーマットがGo、Rust、Python、DWFなどの有力なオープンソースエコシステムでも利用されている。
この共通フォーマットは、オープンソースの脆弱性を管理する上での幾つかの重要な問題を解決することを目指したものだ。このフォーマットには次のような特徴がある。
- 実際のオープンソースパッケージのエコシステムで使用されているネーミングやバージョン体系に完全に一致するバージョンを指定できる。例えば、CPEなどの既存の仕組みでは、CVEなどで指定された脆弱性を、パッケージマネージャーで使用されているパッケージ名と一連のバージョン番号と自動的にマッチングすることは難しかった
- あらゆるオープンソースエコシステムの脆弱性を記述することができる一方で、エコシステムに依存したロジックを必要とせずに脆弱性を処理できる
- 自動化されたシステムと人間の両方が使いやすい
この共通フォーマットはまだ完成しているわけではない。作業チームは、最終版の決定を前に、第三者からのフィードバックを募集している。このフォーマットは既に現在公開されている多くの脆弱性データベースで使われており、今後このフォーマットを採用するデータベースは増える見込みだ。
またOSVは、これらの脆弱性データベースを全て集約し、同プロジェクトのウェブから閲覧できるサービスを提供している。また、OSVの既存のAPIから、コマンド1つでクエリーを実行することもできる。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。