EUサイバーレジリエンス法(CRA)では、ソフトウェア部品表(SBOM)の作成が義務付けられています。しかし、具体的にどのような情報を、どのような形式で準備すればよいのか、不明瞭な点も少なくありません。
CRAのANNEXⅠ PartⅡ(1)には、次のように記載されています。
identify and document vulnerabilities and components contained in products with digital elements, including by drawing up a software bill of materials in a commonly used and machine-readable format covering at the very least the top-level dependencies of the products;
(日本語訳)デジタル要素を含む製品に含まれる脆弱性やコンポーネントを特定し、文書化すること。これには、少なくとも製品の最上位レベルの依存関係をカバーする、一般的に使用され、機械可読な形式でのソフトウェア部品表の作成も含まれます。
この記述は抽象的ですが、「ソフトウェア部品表(Software Bill of Materials)」がSBOMを指すことは明白です。CRAの詳細な要求事項は2025年3月時点では未公開ですが、EU域外の文書も含め、SBOMに関する情報を参照することで、CRAが求めるSBOMの姿を推測できます。
SBOMに関してCRA以外で言及している文書にはどのようなものがあるでしょうか?
昨今では様々な組織からSBOMに関わる文書が公開されていますが、その参照元をたどるといくつかの文書がもとになっていることがわかります。また、EUに属する国の政府機関が発行している文書が参考にできると考えられます。
今回はこれらのうち下記の文書を確認しています。
CRAの要件における表現として、SBOMについては「一般的に使用され、機械可読な形式で」とあることから、世の中的にある程度標準化されたフォーマットであることが要求されていることがわかります。
NTIAの文書ではSBOMの最小要素が定義されており、これらの要素をサポートしていることが望ましいと考えられます。
CRAのSBOMに関する要件の一部として、「少なくとも製品の最上位レベルの依存関係をカバーする」といった表現が含まれています。
上記を踏まえて具体的なCRAの対象製品においてはどういったSBOMを作成していくことになるのかを整理してみます。
一般的にCRAの対象となっている製品においては、複数のユニットで構成されており、それらには複数のマイコンやファームウェアが搭載されていることが多いと思います。
例えば製品Aが下記のような構造になっていたとします。この場合、CRAではどういったSBOMを作成する必要があるのでしょうか。
CRAでは「少なくとも製品の最上位レベルの依存関係をカバーする」必要があるため、製品AのSBOMとしては、3つのファームウェアそれぞれについて、ルートとなるメインコンポーネントと最上位レベルのコンポーネントを記載する必要があると考えられます。
ただし、脆弱性管理を目的とする場合、他社製ソフトウェアを使用しているレベルまで含めることが現実的です。
例えば、ファームウェアAは、内部で自社製ソフトウェアであるソフトウェアAを使用し、さらにその下位で他社製ソフトウェアである「ソフトウェアA-1」を使用しています。この場合、「ソフトウェアA-1」までをSBOMに含めることが妥当と考えられます。
したがって、製品AのSBOMとしては、下図の点線で囲った部分を作成することが、CRA準拠として妥当と考えられます。