0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TrivyでLinuxサーバ上の脆弱性パッケージをスキャンする

Last updated at Posted at 2023-09-05

小ネタ。
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の利用は止めましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?