小ネタ。
Trivyと言えばコンテナ向けの脆弱性スキャンツールとして有名だが、Linuxサーバに対してもスキャン出来る。
サポートしているOSの一覧はこちらになる。
一応'23/9/5時点でのサポート対象リストを一部抜粋したものも載せておく。
OS | Version | Target |
---|---|---|
Alpine | 2.2-2.7,3.0-3.16,edge | apk |
Redhat UBI | 7,8,9 | yum/rpm |
RHEL | 6,7,8 | yum/rpm |
CentOS | 6,7,8 | yum/rpm |
Amazon Linux | 1,2,2022 | yum/rpm |
Ubuntu | All version | apt/apt-get/dpkg |
Photon | 1.0,2.0,3.0,4.0 | tdnf/yum/rpm |
見てのように、メジャーどころは一通り抑えているので、Linux利用者のほとんどは利用できるのではないかと思う。
今回はこれを使ってどれだけ脆弱性が含まれているかを確認する。
検証
インストール
インストール方法はこちらに書かれている。
ディストリビューションによってインストール方法が異なるが、インストールスクリプトを使ってバイナリをインストールすればどこの環境でも間違いなく入ると思う。
ということでインストールスクリプトでインストールする。
rootで作業するため、rootに切り替える。
sudo su -
インストールする。
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin v0.45.0
問題なければ以下でバージョンが確認できるようになる。
# trivy version
Version: 0.45.0
脆弱性スキャン
OSに対するスキャンはFilesystemに対して実行する形になる。
OS全体なので、ファイルシステムとしてはrootディレクトリを指定する形となる。
今回はしばらく放置していたubuntu20.04に対して実行する。
なお、対象が多いとタイムアウトに引っかかるため、--timeout
でタイムアウトを延長する。以下実行コマンドとなる。
# trivy fs / --timeout 120m
今回の検証環境では30分くらいで結果を得た。
なお、パッケージの脆弱性スキャンの結果のみを知りたい場合は--scanners vuln
をつけて実行するとよい。これだと1分程度で結果が得られる。
出力結果は以下のような感じとなった。
2023-09-05T10:03:46.537Z INFO Vulnerability scanning is enabled
2023-09-05T10:03:46.540Z INFO Secret scanning is enabled
2023-09-05T10:03:46.541Z INFO If your scanning is slow, please try '--scanners vuln' to disable secret scanning
2023-09-05T10:03:46.541Z INFO Please see also https://aquasecurity.github.io/trivy/v0.45/docs/scanner/secret/#recommendation for faster secret detection
2023-09-05T10:28:29.013Z INFO Detected OS: ubuntu
2023-09-05T10:28:29.024Z INFO Detecting Ubuntu vulnerabilities...
2023-09-05T10:28:29.214Z INFO Number of language-specific files: 3
2023-09-05T10:28:29.214Z INFO Detecting gomod vulnerabilities...
2023-09-05T10:28:29.251Z INFO Detecting pip vulnerabilities...
wdc2-jumphost (ubuntu 20.04)
Total: 1001 (UNKNOWN: 0, LOW: 441, MEDIUM: 548, HIGH: 12, CRITICAL: 0)
┌─────────────────────────────────┬──────────────────┬──────────┬──────────┬─────────────────────────────────┬───────────────┬──────────────────────────────────────────────────────────────┐
│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │
├─────────────────────────────────┼──────────────────┼──────────┼──────────┼─────────────────────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ accountsservice │ CVE-2012-6655 │ LOW │ affected │ 0.6.55-0ubuntu12~20.04.6 │ │ accountsservice: local encrypted password disclosure when │
│ │ │ │ │ │ │ changing password │
│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2012-6655 │
├─────────────────────────────────┼──────────────────┼──────────┤ ├─────────────────────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ apache2-utils │ CVE-2019-17567 │ MEDIUM │ │ 2.4.41-4ubuntu3.14 │ │ httpd: mod_proxy_wstunnel tunneling of non Upgraded │
│ │ │ │ │ │ │ connection │
│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2019-17567 │
├─────────────────────────────────┼──────────────────┤ │ ├─────────────────────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
:(省略)
全体として脆弱性が1001件あり、またどういうパッケージにどういう脆弱性が含まれているかも分かる。
今回は幸いにもCRITICALは含まれなかった。
パッケージをupgradeすると結果がどう変わるか確認する。手始めにupgradeして、不要なパッケージも削除する。
apt-get update -y
apt-get upgrade -y
apt autoremove
スキャンする。
trivy fs / --timeout 120m --scanners vuln
以下のように少し減った。パッケージの更新はセキュリティ対策の1つとしては有効かと思われる。
Total: 739 (UNKNOWN: 0, LOW: 329, MEDIUM: 403, HIGH: 7, CRITICAL: 0)
ちなみにそれでも結構な数の問題が残っているように思えるが、これに対して対策出来るかどうかを見るには--ignore-unfixed
オプションをつけるとよい。
これは修正版が出ていない場合、脆弱性としてカウントしないオプションで、これを付けても表示されるパッケージは対策可能なパッケージとなる。
確認してみる。
# trivy fs / --timeout 120m --scanners vuln --ignore-unfixed
2023-09-05T23:39:50.750Z INFO Vulnerability scanning is enabled
2023-09-05T23:40:00.013Z INFO Detected OS: ubuntu
2023-09-05T23:40:00.014Z INFO Detecting Ubuntu vulnerabilities...
2023-09-05T23:40:00.097Z INFO Number of language-specific files: 3
2023-09-05T23:40:00.097Z INFO Detecting pip vulnerabilities...
2023-09-05T23:40:00.103Z INFO Detecting gomod vulnerabilities...
wdc2-jumphost (ubuntu 20.04)
Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
当たり前だが、パッケージを最新版にしたので、対策できるものは全て取り込んでおり、検出できる脆弱性はゼロ件となった。
なお、手元にPhoton1.0(2019年リリース)があったので、試しにこちらでも実行してみた。
2023-09-05T09:50:53.913Z INFO Detected OS: photon
2023-09-05T09:50:53.913Z INFO Detecting Photon Linux vulnerabilities...
2023-09-05T09:50:53.923Z INFO Number of language-specific files: 0
2023-09-05T09:50:53.960Z WARN This OS version is no longer supported by the distribution: photon 1.0
2023-09-05T09:50:53.960Z WARN The vulnerability detection may be insufficient because security updates are not provided
WARNの部分を見ると分かるが、このPhoton1.0はサポート期限が切れていることが分かる。
また、脆弱性としては以下の件数が報告された。
Total: 693 (UNKNOWN: 0, LOW: 26, MEDIUM: 312, HIGH: 287, CRITICAL: 68)
CRITICALが68件もある上、セキュリティアップデートが受けられないとなると結構ヤバい。
古いOSの利用は止めましょう。