VOL. J106-D NO. 9
SEPTEMBER 2023
本PDFの扱いは、電子情報通信学会著作権規定に従うこと。
なお、本PDFは研究教育目的（非営利）に限り、著者が第三者に直接配布することができる。著者以外からの配布は禁じられている。

以降，様々な組織で活用が検討されている [3]．またDebian パッケージ間の依存関係を表す SPDX

SPDX はソフトウェアパッケージ（以降単にパッケー

ドキュメント自動生成ツールの開発ジ）の SBOM を実現する形式の一つであり，ISO/IEC

田邉傑士† a)眞鍋雄貴††（正員）

肥後芳樹†（正員）神田哲也†

JTC1 標準となった [4]．SPDX 形式で書かれた SBOM

井上克郎†††（正員：フェロー）

を SPDX ドキュメントと呼ぶ．

SPDX を活用する上では SPDX ドキュメントを自動Development of an Automatic SPDX Document Generation Tool to Show Dependencies between Debian Packages
Taketo TANABE† a) , Tetsuya KANDA† , Nonmembers, Yuki MANABE†† , Member,Katsuro INOUE††† , Fellow, and Yoshiki HIGO† , Member

生成するツールが必要である．このようなツールはSPDX ドキュメント生成における人為的なミスを防ぐことができる上に，SPDX 活用にかかるコストを大幅に減らしたという実証もある [3]．

† 大阪大学大学院情報科学研究科，吹田市

Graduate School of Information Science and Technology, Osaka University, Suitashi, 565–0871 Japan

そこで本研究では Debian パッケージに対して推移的な依存関係を解析して，SPDX ドキュメントを自動††† 南山大学理工学部，名古屋市

Faculty of Science and Technology, Nanzan University, Nagoya-shi, 466–8673
Japan生成するツール debiantospdx を作成した．Debian パッ
ケージは現在 Linux ディストリビューションのシェア†† 福知山公立大学情報学部，福知山市

Faculty of Informatics, The University of Fukuchiyama, Fukuchiyama-shi, 3370

で 1，2 位を占める Ubuntu と Debian で使われているJapanパッケージである（注 1）．しかしながら我々の知る限り，a) E-mail: tk-tanab@ist.osaka-u.ac.jp

提案ツールと同等の機能を有する無償ツールはまだな

DOI:10.14923/transinfj.2023JDL8004

い．またこのツールの効果を調べるため，既存のコマあらまし

Debian パッケージを対象にした推移的ンドを実行して推移的な依存関係を調査する場合や簡なパッケージ間の依存関係を表す SPDX (Software

易ツールで推移的な依存関係を調査する場合と比較しPackage Data Exchange) ドキュメント自動生成ツールた．その結果，提案ツールが依存関係特定のための工debiantospdx を開発した．ツールの背景と実証につい数を大幅に削減すること，及び，他の調査方法で多くて述べる．

出現する不要な依存関係を削除できることを確認した．

キーワード SBOM，SPDX，依存関係，ソフトウェ

2. 提案ツール

アライセンス，脆弱性

提案ツールはインストール済みの全ての Debian パッ

1. ま え が き

ケージをパッケージ間の依存関係を辿りながら推移的ソフトウェア開発にサードパーティ製のソフトウェに解析し，SPDX ドキュメントを生成するコマンドラ

アが利用される機会は多い．Contrast Security 社によインツールである．ツールは Python で記述されておると，今日のソフトウェアの大部分 (79%) にサードり，PyPI で公開している（注 2）．

パーティ製のライブラリが使用されている [1]．サー

提案ツールは図 1 に示す五つのステップから構成さドパーティ製のソフトウェアの利用は開発にかかるコれる．まずステップ 1 として，Debian パッケージのストを削減できる一方で，サードパーティ製のソフトパッケージ名から Debian パッケージのインストール

ウェアとの依存関係がソフトウェアライセンス（以降を制御する control ファイルに記載されている情報を単にライセンス）や脆弱性などの問題を引き起こすこ取得し，SPDX ドキュメントに必要な情報を抽出する．とがある．これらの問題を受けて SBOM (SPDX) を利

次にステップ 2 としてパッケージによってインストールされたファイルのリストを取得した後，ライセ用する動きが広まりつつある．

SBOM とは「Software Bill of Materials」の略称であンスやコピーライトが記載された copyright ファイル

り，対象とするソフトウェアの機械可読なメタデータのを解析して情報を抽出し，パッケージを構成する全てことを指す．ここでいうメタデータとは，ソフトウェのファイルのハッシュ値を計算する．この copyrightアのコンポーネントとその依存関係，及びライセンスファイルの解析には ScanCode Toolkit という既存のデータなどであり，SBOM にはそれらが一意に識別でツールを使った．

きる形式でまとめられる [2]．2021 年 5 月に署名された「Executive Order on Improving the Nation’s Cyberse-curity」という大統領令で SBOM について言及されて
電子情報通信学会論文誌 D Vol. J106–D（注 1）：https://w3techs.com/technologies/history_details/os-linux（注 2）：https://pypi.org/project/debiantospdx/

No. 9 pp. 457–458 © 一般社団法人電子情報通信学会 2023457

電子情報通信学会論文誌 2023/9 Vol. J106–D No. 9

依存先にあるかを apt や dpkg などの既存コマンドを実行して調べる場合に必要となるコマンドの実行回数をインストール済みパッケージの全ての組み合わせに対して調べた．
調査の結果，平均 100.6 回のコマンドの実行が必要であることが分かった．この原因は依存先にないことを確かめるためには依存関係を最後まで追う必要があるからだと考えられる．一方，提案ツールを用いれば
図 1 処理の概要

1 回のコマンド実行で済むため，工数削減となる．
3. 2 簡易ツールとの比較

そしてステップ 3 としてステップ 1 とステップ 2 か提案ツールはインストール済みパッケージとの推移ら得られた情報をマージして，依存関係に関する情報的な依存関係を取得する．そこで control ファイルに以外の情報を SPDX の形式に変換する．

記載されている依存先になる可能性がある全てのパッ

更にステップ 4 として依存関係を処理する．control

ケージを表示するコマンド (apt depends) を繰り返す

ファイルには依存先として可能性がある全てのパッことで推移的な依存関係を取得する簡易ツールを作成

ケージを記載しており，実際にインストールされていし，提案ツールが生成する SPDX ファイルから取得でないものを含む．そこで依存先候補のパッケージが実きる推移的な依存関係との違いを調べた．

際に存在するか，存在する場合はバージョンの制約を調査の結果，提案ツールからは 1 パッケージ当り平満たしているか，依存関係を満たすパッケージがない

均 250.6 個，簡易ツールからは平均 9906.4 個の推移的場合は依存関係に指定されているパッケージの機能をな依存関係が検出された．よって提案ツールを用いれ提供する別のパッケージがないかを確認し，依存関係ば不要な依存先の検査を減らすことができる．

を満たしているパッケージが見つかった場合には現在

4. む す び

解析中のパッケージに対する SPDX ドキュメントは生Debian パッケージに対して推移的な依存関係を解成せず，依存先のパッケージに対してステップ 1 から析して，SPDX ドキュメントを生成するツール de-ステップ 5 までを繰り返し実行する．

biantospdx を作成し，簡単な評価を実施した．この評最後にステップ 5 として依存先の全てのパッケージの解析が終わると現在解析中のパッケージが他のパッ価は比較的断片的であったため，今後は実際のユースケースに応じた評価を実施していきたい．

ケージと循環依存していないかを検証する．本ツール

謝辞 本研究はJSPS科研費（JP19K20239,JP21K02862,

では基本的に一つのパッケージにつき一つの SPDX ド

JP23H03375），及び 2023 年度南山大学パッヘ研究奨キュメントを生成する．その際，依存先のパッケージ

励金 I-A-2 の助成を得て行われた．
文は SPDX ドキュメントのハッシュ値を用いて参照する．
しかし，その依存先を示すハッシュ値も SPDX ドキュ[1]of insecure libraries,” https://cdn2.hubspot.net/hub/203759/file-

メントの一部であるため，パッケージが循環依存して1100864196-pdf/docs/contrast/_-/_insecure/_libraries/_2014.pdf,いる場合は双方の SPDX ドキュメントのハッシュ値を同時に計算することはできない．よって，循環依存しMarch 2012.
[2]ている場合は循環依存している全てのパッケージの解析を終えてから循環依存に含まれるパッケージの情報

献J. Williams and A. Dabirsiaghi, “The unfortunate reality

Linux Foundation and its Contributors, “A common software package data exchange format,” 2.0 edition, 2015.

[3]

経済産 業省 商 務 情 報 政 策 局 サ イ バ ー セ キ ュ リ テ ィ 課 ，“サイバー・フィジカル・セキュリティ確保に向けたソをまとめて一つの SPDX ドキュメントとして出力する．

フトウェア管理手法等検討タスクフォースの検討の3. 実証・評価

方 向 性 ，” https://www.meti.go.jp/shingikai/mono_info_service/

実証・評価は Windows10 の WSL2 に新しくインス

sangyo_cyber/wg_seido/wg_bunyaodan/software/pdf/006_03_00.

トールした Ubuntu22.04 上で行った．システム内のインストール済みパッケージの数は 517 個である．

3. 1 既存コマンドによる依存関係取得との工数比較
1 組のパッケージ (A,B) に対して A が B の推移的な
458

pdf
[4]

ISO, “ISO/IEC 5962:2021 - Information technology – SPDX Specification V2.2.1,” https://www.iso.org/standard/81870.html, Aug.
2021.

（2023 年 3 月 16 日受付，5 月 11 日早期公開）