This service is available only in Japanese-language.

Yocto2.5ベースのBSPでcve_check のタスクが動作しなくなった

自身で対応した件となります。

Yocto2.5ベースのBSPで、2019/10以前は実行できていたcve_checkタスクが
いつのまにか実行できなくなっていた。
対処方法は?

Yocto2.2 から追加されたcve-check.bbclass ですが、Yocto2.2からYocto2.5では
2019年10月以降使用できなくなっています。

理由は、cve-check.bbclass は NISTが提供するXML形式のデータベースを利用
していましたが、提供形式がjsonに変更となり、xmlでの参照ができなくなった
ためです。

2019年10月現在で、YoctoProjectでアップデートの対象であったYocto2.6,Yocto2.7Yoc
では、次のポイントリリースの際にはjson形式のデータベースを参照するように
Yocto3.0向けに開発されていたもののバックポートが行わており、pokyをアップデート
することで対応可能でしたが、既にEOLとなっていた2.5以前のバージョンは自力
で対応が必要となっています。

対応済のYocto2.6のcve-checkをクラス名(ファイル名)のみ変更したもので動作確認
を行ったところ
・Yocto2.5
・Yocto2.4
・Yocto2.3
では、動作することを確認しております。
残念ながらYocto2.2 ではYocto2.6のものは使えないことを確認しております。

以下対応した手順です。

1. 任意のディレクトリで、Yocto2.6 の最新版を入手します。
  git clone -b thud git://git.yoctoproject.org/poky

2. 現在のprojectでの構築環境を設定します。

3. 追加レイヤーを作成するディレクトリに移動し、新規レイヤーを作成する
  yocto2.3 は yocto-layer crete cve-chck-json

yocto2.4 以降は bitbake-layers create-layer meta-cve-check-json
  # Yocto2.5 の場合、生成されたlayerのconf/layer.conf に
  LAYERSERIES_COMPAT_meta-cve-check-json = "pyro rocko sumo"
  の1行を付け加えないと、
  WARNING: Layer meta-cve-check-json should set LAYERSERIES_COMPAT_meta-cve-check-
json in its conf/layer.conf file to list the core layer names it is compatible w
ith.
  と表示されます。

4. Yocto2.6 の poky/meta/classes/cve-check.bbclass をコピー

 生成したレイヤーに classes ディレクトリを作成し、Yocto2.6 の 
 poky/meta/classes/cve-check.bbclass を cve-check-json.bbclass
 と名称を変更してコピーします。

5.Yocto2.6 の poky/meta/recipes-core/meta/cve-update-db-native.bb
 をコピー

 生成したレイヤーに recipes-core/meta ディレクトリを作成し、Yocto2.6
 の poky/meta/recipes-core/meta/cve-update-db-native.bb をコピーします。

 以下、作成したレイヤーのファイル構成

meta-cve-check-json/ 
|-- COPYING.MIT (自動生成)
|-- README (自動生成)
|-- classes 作成
| `-- cve-check-json.bbclass 名前を変えてコピー
|-- conf (自動生成)
| `-- layer.conf (自動生成)※必要に応じて編集
|-- recipes-core 作成
| `-- meta 作成
| `-- cve-update-db-native.bb コピー
`-- recipes-example (自動生成)
`-- example (自動生成)
`-- example_0.1.bb (自動生成)

6.生成したレイヤーを bitbake-layers add-layer を使用して conf/bblayers.conf
 に追加します。

7.conf/local.conf に以下の一行を追加し、cve-check-json.bbclass で定義
 されたタスクが実行できるように設定します。

INHERIT += "cve-check-json"

8.bitbake レシピ名 -c cve_check 等を実行して、当該レシピの脆弱性情報が
 tmp/deploy/cve/[レシピ名]に出力されることを確認します。
 なお、当該レシピに対して登録された脆弱性が無い場合には、ファイルは生成
 されません。