TrivyでNextcloudの脆弱性を可視化してみた(Ubuntu 24.04環境)

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+という判定でした。