はじめに
grypeを使ってSBOMに関連する脆弱性をリストアップしてみます。
grypeはコンテナイメージやファイルシステム向けの脆弱性スキャナーです。
https://github.com/anchore/grype
前回に引き続き、例としてCentOS 7のrpmdbを元に生成したSPDX-JSON形式のSBOMに関連する脆弱性情報を調べてみます。
環境情報
macOS上にDockerでCentOS 7のコンテナを立ち上げて、その中で作業をします。
今回の環境情報は以下です。
コンポーネント | バージョン | 備考 |
---|---|---|
PC | M1 MacBook Pro | |
OS | macOS Ventura 13.0.1 | |
Docker | 4.15.0 | |
CentOS | 7.9.2009 | |
grype | v0.59.0 | |
syft | v0.62.3 |
手順
CentOS 7のコンテナを作成
macOS上での作業です。
dockerイメージをpullし、コンテナを作成します。
$ docker pull centos:centos7
$ docker run -it -d --name centos7 centos:centos7
ログインして、バージョンを確認します。
$ docker exec -it centos7 /bin/bash
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (AltArch)
grypeをインストール
/usr/local/binにgrypeをインストールします。
# curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
syftで生成したSBOM(SPDX-JSON形式)を元に脆弱性を調べる
前回の記事に従って、CentOS 7のrpmdbを元にSPDX-JSON形式のSBOMを生成しておきます。
ファイル名はcentos7_rpm.jsonとします。
syftを使ってCentOS 7のrpmdbを元にSPDX-JSON形式のSBOMを生成する
https://qiita.com/ykmchd/items/b28bca1663d957ae1956
SBOMをパイプでgrypeに渡し、リダイレクトでcentos7_rpm_vulnerability.txtというテキストファイルに出力します。
# cat centos7_rpm.json | grype --distro centos:7 > centos7_rpm_vulnerability.txt
出力結果を一部確認すると、openssl-libsパッケージに該当する脆弱性が紐付けされていることがわかります。
[root@6252d20a0c65 ~]# grep openssl centos7_rpm_vulnerability.txt
openssl-libs 1:1.0.2k-25.el7_9 rpm CVE-2015-2808 Medium
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2019-1547 Medium
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2019-1551 Low
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2019-1563 Low
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2020-1968 Low
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2022-3358 Low
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2022-4304 Medium
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2022-4450 Medium
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2023-0215 Medium
openssl-libs 1:1.0.2k-25.el7_9 (won't fix) rpm CVE-2023-0286 Medium
[root@6252d20a0c65 ~]#
最後に
grype(とsyft)を使ってSPDX-JSON形式のSBOMに関連する脆弱性情報を調べることができました。
syftとgrypeをCIに取り入れて、シフトレフトによって早期に脆弱性を検知・対応するDevSecOpsを推進していきたいですね。
参考情報
- anchore/grype
- 開発に使える脆弱性スキャンツール
- syftを使ってCentOS 7のrpmdbを元にSPDX-JSON形式のSBOMを生成する