Qt 6.8 ソフトウェア部品表 (SBOM)

本稿は「Qt 6.8 Software Bill of Materials」の抄訳です。
 

blog_sbom

要約:QtオンラインインストーラーのQt 6.8以降のバイナリパッケージには、ビルドSBOMドキュメントが含まれています。

SBOMとは、

ソフトウェアのビルドに使用されるさまざまなコンポーネントの詳細と供給の流れを記載した、機械処理可能なドキュメントです。これは、食品のパッケージに記載される原材料ラベルに似ています。

SBOMが必要な理由

ソフトウェアのビルドと出荷には、多くの注意が必要です。ソフトウェアのビルドには、しばしば軽視されながらも、多くの人々にとって重要な側面があります。セキュリティ、ビルドの再現性、サプライチェーンの追跡、ライセンスのコンプライアンス、著作権の帰属などがそれにあたります。

欧州連合(EU)もこの意見に一部同意しており、ハードウェアとソフトウェアのセキュリティを向上させることを目的としたサイバーレジリエンス法(CRA)規制を採択しています。

CRAでは、自動セキュリティアップデート、脆弱性およびインシデントレポートについても言及しています。通常、ソフトウェア製品はゼロから作成されることはなく、外部で作成されたサードパーティコンポーネントに依存しています。セキュリティアップデートを確実に実施し、自社のソフトウェアに脆弱性があるかどうかを確認するには、まずこれらのコンポーネントとバージョンを特定し、コンポーネントのどの部分が使用されているか、脆弱性があるのはどれか、更新が必要なのはどれかなどを確認する必要があります。

大規模なソフトウェアプロジェクトの場合、こうした作業は負担が大きいものとなります。そこで登場するのがSBOMです。

ビルド SBOM

SBOMには多くの種類やフォーマットがありますが、最も有用なものの1つがビルドSBOMです。これは、ソースファイル、依存関係情報、既存のコンポーネント、一時的なビルドプロセスデータ、その他のSBOMに基づいて、ビルドプロセスの一部として生成されます。

そして、まさにそれが、現在Qt 6.8.0以降で出荷されているものです。

具体的には、各Qtフレームワークgitリポジトリでビルドされたものについて、SPDX v2.3形式の「タグ:値」形式とJSON形式の両方でドキュメントを1つずつ出荷しています。オンラインインストーラーでQtをインストールすると、インストールした関連パッケージのSBOMドキュメントが自動的にQt/<プラットフォーム>/sbomディレクトリに作成されます。

これらの文書には、以下の内容が含まれます。

  • ビルドプロセスで作成された各 Qt モジュールまたはプラグインの説明
  • 使用された各サードパーティ製ライブラリまたはシステムライブラリの説明
  • これらのエントリ間の依存関係(例えば、Qt Core がシステム ZLIB ライブラリにリンクされていることなど)
  • 利用可能な場合、これらのコンポーネントのライセンス情報、著作権帰属、バージョン情報
  • 各ライブラリを生成するために使用されたソースファイル情報
  • インストールされた各バイナリファイルの SHA1 チェックサム、およびドキュメント全体のチェックサム
  • 脆弱性検出ツールの補助として、パッケージ固有の CPE や PURL などのセキュリティ関連情報。
  • 使用されたコンパイラのバージョン、使用されたビルドツールのバージョン、ビルドの日付、SBOM の作成日、SBOM ドキュメントを特定する一意の URI など、その他の情報

これらのSBOM文書は機械で読み取り可能で構造が明確に定義されているため、以下のような有益な目的でさまざまなツールに情報を提供することができます。

  • National Vulnerability Database(CVEが通常登録されるデータベース)やGithub Advisoriesなどのデータベース内のコンポーネントのバージョンに基づいて脆弱性を特定
  • ライセンスの順守(例:GPLライブラリの使用をすべて拒否)
  • ファイルの完全性チェック(SBOMに埋め込まれたチェックサムに基づく)
  • 著作権帰属情報の収集(すべての著作権情報を記載した「バージョン情報」ダイアログを生成するため)

ご自身の Qt 用の SBOM を作成

これらの SBOM は Qt の公式パッケージに限定されるものではありません。

Qt をゼロからビルドする場合は、必要な依存関係がインストールされていることを確認(リンクは保留中)し、configure スクリプトに -sbom を追加引数として渡すだけです。これにより、SBOM ドキュメントが自動的に生成され、Qt フレームワークとともにインストールされます。

この機能は最近追加されたばかりなので、収集された情報にはまだいくつかの欠落があります(例えば、Qtの翻訳にはまだSBOM情報がありません)。しかし、今後改善していく予定です。QTBUG-122899の関連する問題を参照することで、既知の欠落を確認できます。

また、Qtプロジェクト用のSBOMを生成する公式CMake APIを追加することも検討しており、これによりCRAの対応が容易になります。

時間が経つにつれ、CRAがソフトウェア作成者に求めることがより明確になるでしょう。そして、弊社は生成されたSBOMに必要な変更を組み込んでいく予定です。

それまでは、SBOMをご活用ください!


Blog Topics:

Comments