要約:QtオンラインインストーラーのQt 6.8以降のバイナリパッケージには、ビルドSBOMドキュメントが含まれています。
SBOMとは、
ソフトウェアのビルドに使用されるさまざまなコンポーネントの詳細と供給の流れを記載した、機械処理可能なドキュメントです。これは、食品のパッケージに記載される原材料ラベルに似ています。
ソフトウェアのビルドと出荷には、多くの注意が必要です。ソフトウェアのビルドには、しばしば軽視されながらも、多くの人々にとって重要な側面があります。セキュリティ、ビルドの再現性、サプライチェーンの追跡、ライセンスのコンプライアンス、著作権の帰属などがそれにあたります。
欧州連合(EU)もこの意見に一部同意しており、ハードウェアとソフトウェアのセキュリティを向上させることを目的としたサイバーレジリエンス法(CRA)規制を採択しています。
CRAでは、自動セキュリティアップデート、脆弱性およびインシデントレポートについても言及しています。通常、ソフトウェア製品はゼロから作成されることはなく、外部で作成されたサードパーティコンポーネントに依存しています。セキュリティアップデートを確実に実施し、自社のソフトウェアに脆弱性があるかどうかを確認するには、まずこれらのコンポーネントとバージョンを特定し、コンポーネントのどの部分が使用されているか、脆弱性があるのはどれか、更新が必要なのはどれかなどを確認する必要があります。
大規模なソフトウェアプロジェクトの場合、こうした作業は負担が大きいものとなります。そこで登場するのがSBOMです。
SBOMには多くの種類やフォーマットがありますが、最も有用なものの1つがビルドSBOMです。これは、ソースファイル、依存関係情報、既存のコンポーネント、一時的なビルドプロセスデータ、その他のSBOMに基づいて、ビルドプロセスの一部として生成されます。
そして、まさにそれが、現在Qt 6.8.0以降で出荷されているものです。
具体的には、各Qtフレームワークgitリポジトリでビルドされたものについて、SPDX v2.3形式の「タグ:値」形式とJSON形式の両方でドキュメントを1つずつ出荷しています。オンラインインストーラーでQtをインストールすると、インストールした関連パッケージのSBOMドキュメントが自動的にQt/<プラットフォーム>/sbomディレクトリに作成されます。
これらの文書には、以下の内容が含まれます。
これらのSBOM文書は機械で読み取り可能で構造が明確に定義されているため、以下のような有益な目的でさまざまなツールに情報を提供することができます。
これらの SBOM は Qt の公式パッケージに限定されるものではありません。
Qt をゼロからビルドする場合は、必要な依存関係がインストールされていることを確認(リンクは保留中)し、configure スクリプトに -sbom を追加引数として渡すだけです。これにより、SBOM ドキュメントが自動的に生成され、Qt フレームワークとともにインストールされます。
この機能は最近追加されたばかりなので、収集された情報にはまだいくつかの欠落があります(例えば、Qtの翻訳にはまだSBOM情報がありません)。しかし、今後改善していく予定です。QTBUG-122899の関連する問題を参照することで、既知の欠落を確認できます。
また、Qtプロジェクト用のSBOMを生成する公式CMake APIを追加することも検討しており、これによりCRAの対応が容易になります。
時間が経つにつれ、CRAがソフトウェア作成者に求めることがより明確になるでしょう。そして、弊社は生成されたSBOMに必要な変更を組み込んでいく予定です。
それまでは、SBOMをご活用ください!