TrivyでNextcloudの脆弱性を可視化してみた(Ubuntu 24.04環境)
はじめに
自宅サーバーで運用しているNextcloudについて、
「最新版にしているけど本当に安全なのか?」
という疑問から、SBOMツールを使った脆弱性チェックを行ってみました。
今回は以下の構成を対象としています。
- OS:Ubuntu 24.04
- アプリ:Nextcloud Hub 26(33.0.0)
- 対象範囲:/var/www/nextcloud
なぜTrivyを使うのか
脆弱性スキャンツールはいくつかありますが、今回は
Trivyを選択しました。
理由は以下の通りです。
- SBOM生成と脆弱性スキャンを1ツールで実現できる
- OS / アプリ / コンテナまで幅広く対応
- CLIベースで自動化しやすい
Trivyのインストール(Ubuntu 24.04)
以下の手順でインストールできます。
$ sudo apt update
$ sudo apt install -y wget gnupg lsb-release
$ wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key \
| gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
$ echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] \
https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/trivy.list
$ sudo apt update
$ sudo apt install -y trivy
インストール確認:
$ trivy -v
Version: 0.69.3
Nextcloudの脆弱性スキャン
Nextcloudディレクトリを対象にスキャンを実行します。
$ trivy fs /var/www/nextcloud

また、SBOMも生成できます。
trivy fs --format cyclonedx --output nextcloud-sbom.json /var/www/nextcloud
スキャン結果の概要
今回の結果は以下の通りでした。
- CRITICAL:15件
- HIGH:113件
- MEDIUM:41件
- LOW:33件
合計:202件
ただし、この件数は単純に「202個の異なる脆弱性がある」という意味ではありません。
Nextcloudには複数のアプリケーション(apps)が含まれており、それぞれが同じJavaScriptライブラリ(npm依存関係)を内部に持っています。そのため、同一の脆弱性が複数のアプリで重複して検出され、件数が多く見える傾向があります。
つまり、実際には「同じ脆弱性が複数箇所で検出されている」ケースが多く、ユニークな脆弱性の数は表示件数よりも少ない点に注意が必要です。
「最新版なのに脆弱性が出る理由」
Nextcloudは最新版(33.0.0)でしたが、
それでも多くの脆弱性が検出されました。
これは以下の理由によるものです。
① 依存ライブラリが内包されている
Nextcloudには以下が含まれています。
- npm(JavaScript依存)
- composer(PHP依存)
これらはNextcloud側でバージョン固定されています。
② ライブラリ側の修正が後から出る
例:
- axios → 修正版がリリース
- fast-xml-parser → 脆弱性修正
しかしNextcloudがまだ取り込んでいない場合があります。
③ 結果
👉 最新版でも脆弱性として検出される
Trivyの「Status: fixed」の意味
スキャン結果に表示される
Status: fixed

の意味は以下です。
👉 修正版が存在する(まだ適用されていない)
つまり:
- ❌ 安全という意味ではない
- ⭕ アップデートで解決可能
対応方針
ではどう対応するのが正しいのでしょうか?
❌ やってはいけないこと
npm update
composer update
👉 Nextcloudが壊れる可能性があるためNG
⭕ 正しい対応
1. Nextcloudを最新状態に保つ
今回のように最新版でも残る場合は:
👉 次のリリースを待つ
2. 不要アプリの削除
Nextcloudには多くのアプリが含まれています。
使っていないものは削除することで、
脆弱性の数を減らせます。
3. CRITICAL / HIGHのみ重点確認
trivy fs --severity CRITICAL,HIGH /var/www/nextcloud
多層防御(Defense in Depth)の重要性
今回の検証で重要だと感じたのは
「単一対策では不十分」という点です。
必要な対策の組み合わせ
- Trivy:脆弱性の可視化
- Nextcloud更新:根本対策
- fail2ban:不正アクセス防止
- WAF:Web攻撃の遮断
イメージ
インターネット
↓
WAF
↓
nginx
↓
fail2ban
↓
Nextcloud
↓
Trivy
👉 どこか1つが破られても他で防ぐ
まとめ
今回のポイントは以下の通りです。
- TrivyでNextcloudの脆弱性を可視化できる
- 最新版でも脆弱性は検出される
- 多くは依存ライブラリ由来
- 無理に手動アップデートはしない
- 多層防御が重要
次回予告
次回は以下に取り組みたいと思います。
- Trivyの自動実行(systemd timer)
- 危険度の高い脆弱性のみ抽出
- メール通知の仕組み構築
👉 「気づける仕組み」を作るのが目標です
おわりに
「最新版=安全」ではなく、
「見える化+多層防御」が重要だと実感しました。
今後も継続的にセキュリティを強化していきます。
ちなみに、Nextcloud Security Scanを実行してみたところ、セキュリティレベルは最高ランクのA+という判定でした。
