Skip to main content

SBOM標準の推進:SnykとSPDX

blog design Securing modern software supply chain

2021年6月16日

0 分で読めます

多くの方が、SPDXライセンスリストを通じてSPDXプロジェクトをご存じでしょう。このリストは、さまざまなソフトウェアライセンスの標準識別子をまとめたもので、SnykからGitHubまで、開発者向けの幅広いソフトウェアで利用されています。しかし、Linux Foundationの一部であるSPDXプロジェクトは、ソフトウェア部品表(SBOM)の情報を伝達するためのオープン標準の提供を、より広い目的としています。

ソフトウェア部品表(SBOM)とは、あるソフトウェアに含まれるコンポーネントの一覧です。よくある例えとして、食品のパッケージに記載された原材料一覧が挙げられます。ソフトウェアはますます複雑になり、含まれるコンポーネントも増え続けています。オープンソースのライブラリやフレームワークだけではありません。現代のソフトウェアアプリケーションは、それぞれに独自のSBOMを持つ複数のサービスで構成され、さらに多くの依存関係を取り込む可能性があるツール群とともにパッケージ化されることもあります。

SPDXは、SBOMの定義方法を標準化し、機械可読形式を提供することで、ソフトウェア業界全体が多種多様なサプライチェーンの課題を解決するツールを構築できるようにすることを目指しています。

こうした取り組みは、今日のソフトウェアセキュリティの課題を解決するうえで、ますます重要になっています。先月、バイデン米大統領は「国家のサイバーセキュリティ向上」に関する大統領令を発令し、SBOMの導入とSBOM標準の正式化を目標として明確に掲げました。この大統領令についてのSnykの見解は、ソフトウェアサプライチェーンセキュリティの要件に関するブログで詳しくご紹介しています。

SnykとSBOM

パッケージマネージャーが使用するマニフェストファイルにはソフトウェアの一覧が記載されていますが、一般にSBOMとは見なされていません。用途がより限定されており、一覧にあるソフトウェアのインストールに必要な情報だけが含まれています。

Snykは幅広いパッケージマネージャーや開発者向けツールと連携し、使用されているソフトウェアコンポーネントの脆弱性の特定を支援します。そのために、内部でSBOMを構築し、ソフトウェアの一覧を正規化するとともに、ほかの情報源から追加のメタデータを取り込んでいます。Snykのツールは主に、脆弱性情報とあわせてこれらの情報を表示しますが、Snykのお客様は組み込みのレポート機能や強力なAPIを通じて、生のSBOMにアクセスできます。

実際、CLIやCI/CDプラグインなどのSnykクライアントツールがSBOMを生成し、SnykのバックエンドがSBOMを受け取って脆弱性データを返す、あるいは問題の修正に役立つ自動化を提供すると考えることができます。この分野で培ってきた豊富な経験が、新たな標準への関心につながっています。

SnykとSPDX

SBOM標準としてのSPDXは数年前から存在していますが、最近のバージョン3.0ドラフト仕様には大きな可能性があります。Snykでは、SPDXに脆弱性プロファイルを追加するドラフト提案を詳しく検討してきました。このプロファイルを使うと、ソフトウェアコンポーネントの情報とあわせて脆弱性データ(SBOMの分野ではVEX(脆弱性の悪用可能性)と呼ばれることもあります)を追加できます。

仕様の検証を支援するため、snyk2spdxというシンプルなツールを開発しました。snyk2spdxの目的はただ一つ、SBOM情報を含むSnykのテストデータを取り込み、脆弱性プロファイルを含むSPDX v3.0形式で出力することです。以下にシンプルな出力例を示します。

$ snyk test --json | npx snyk2spdx | jq
{
  "id": "SPDXRef-todo-list",
  "name": "todo-list",
  "specVersion": "SPDX-3.0",
  "profile": [
    "base",
    "vulnerabilities"
  ],
  "dataLicense": "CC0-1.0",
  "creator": "Organization: Snyk Ltd",
  "documentNamespace": "spdx.org/spdxdocs/todo-list-2bd968c5-d497-41ec-83d7-5ee652720c53",
  "description": "Snyk test result for project todo-list in SPDX SBOM format",
  "created": "2021-05-05T16:20:28Z",
  "vulnerabilities": [

こちらはヘッダー部分のみです。形式に特に関心のある方は、SBOM出力の全体はこちらをご覧ください。

このツールは、実験を行い、現在のドラフト仕様にフィードバックを提供するために開発しました。SPDX v3.0はまだ仕様策定の途上で、広く利用されているツールのサポートも、公開済みのスキーマもありません。いずれこうしたものが整備されるのは間違いありません。そうなれば、この種の機能をSnyk CLIのコアに組み込み、Snykのほかの領域でもSPDXを公開・利用していく可能性があります。

SBOM全般、特にVEXに関心がある方は、snyk2spdxを使って試してみることができます。仕様策定への貢献や、より大きな取り組みとして、その普及や関連ソフトウェアの開発に参加するのもよいでしょう。

今後の展望

SPDXへの注目が高まるなか、SnykはLinux Foundationと緊密に連携し、標準の改善とツールのエコシステムの拡大に取り組んでいます。最近公開されたLinux Foundationのブログ記事では、10年以上前にオープンソースコミュニティがSBOMの課題に取り組む必要性を認識した背景と理由がまとめられています。

適切な時期と場所で策定された標準は、業界を前進させる力を持っています。バイデン大統領令では、ソフトウェアサプライチェーン全体のセキュリティ課題に対応するうえで、SBOMが重要な役割を果たすことが明確に示されています。Snykは、この分野の取り組みに今後も貢献していくことを楽しみにしています。