Vuls は、サーバーにインストールされているパッケージを調べ、既知の脆弱性に当たるものを教えてくれるツールです。日本のフューチャーアーキテクトで生まれた OSS で、日本の脆弱性データベース JVN の情報も使えます。
この記事は、Linux サーバーを自分で管理している人に向けています。読み終えると、次のことができるようになります。
- 自分の Linux マシンを SSH なしでスキャンする
- 結果を一覧やターミナル画面で読む
- SSH で別のサーバーをスキャンする仕組みを理解する
Vuls でできること
公式 README では、Vuls の役目を次のように説明しています。
- システムに関係する脆弱性を知らせる
- どのサーバーが影響を受けるかを知らせる
- 検出を自動化して、見落としを防ぐ
- cron などで定期的にレポートを作る
脆弱性の情報源には NVD と JVN、各ディストリビューションの OVAL などを使います。スキャン対象として、公式の対応表には Ubuntu、Debian、RHEL、AlmaLinux、Rocky Linux、Amazon Linux などの Linux のほか、FreeBSD、Windows、macOS が載っています。対応しているバージョンは対応表で確かめてください。
3 つのスキャン方法
公式ドキュメントは、スキャンの方法を 3 つに分けています。
| 方法 | 仕組み | 向いている場面 |
|---|---|---|
| リモートスキャン | Vuls を入れた 1 台から、対象サーバーへ SSH でつないでコマンドを実行する | 1 台から複数のサーバーをまとめて見る |
| ローカルスキャン | 対象サーバーに Vuls を置き、SSH を使わずにその場でコマンドを実行する | 中央から SSH でつなぎたくない |
| サーバーモード | Vuls を HTTP サーバーとして起動し、対象サーバーが集めたソフトウェア情報を HTTP で送る | 対象サーバーにスキャナーを置きたくない |
リモートスキャンでは、SSH のパスワード認証は使えません。鍵認証を設定し、対象サーバーのホスト鍵を事前に known_hosts に登録しておきます。
安全な試し方:自分のマシンをローカルスキャンする
最初は、自分の Linux マシン(または自分で作った仮想マシン)1 台だけを対象にします。外部のサーバーにはつながないので、相手を間違える心配がありません。
-
公式の vulsctl でホストに入れる手順に従い、
sudo bash install.shで Vuls を入れます。スクリプトの中身は実行前に読んでおきます。 -
update-all.shで脆弱性データベースを取得します。全部取ると時間がかかるので、公式は必要なものだけ取るよう勧めています。 -
ホームディレクトリに
config.tomlを作り、次のように書きます。port = "local"がローカルスキャンの指定です。[servers] [servers.localhost] host = "localhost" port = "local" -
vuls configtestで設定と環境を確かめます。 -
vuls scanでスキャンします。 -
vuls report -format-listで結果の一覧を表示します。
結果を読む
vuls report には出力形式を選ぶオプションがあります。公式のチュートリアルに載っているものを挙げます。
| コマンド | 表示されるもの |
|---|---|
vuls report -format-one-line-text |
サーバーごとの件数を 1 行で |
vuls report -format-list |
CVE 番号と深刻度の一覧 |
vuls report -format-full-text |
各 CVE の詳しい説明と参考 URL |
vuls report -format-list -lang ja |
一覧を日本語の情報で |
vuls tui |
ターミナル上で結果を行き来して読む画面 |
一覧には CVE 番号ごとに CVSS のスコアが付きます。数字が大きいものから確かめ、更新できるパッケージがあればアップデートを検討します。
スキャンの重さを選ぶ
config.toml の scanMode で、対象サーバーへの負荷と必要な権限を選べます。
fast:root 権限なしで、対象サーバーにほとんど負荷をかけずにスキャンしますfast-root:root 権限でスキャンします。こちらも負荷はほとんどかかりませんoffline:fastやfast-rootと組み合わせて、インターネットにつながらないサーバーをスキャンします
注意点
- リモートスキャンで SSH 接続してよいのは、自分が管理するサーバーか、書面で許可を得たサーバーだけです。
config.tomlのhostを書き間違えると、無関係な機器へ接続しにいきます。 - スキャン用の SSH 鍵は、ほかのサーバーにも入れる強い鍵になりがちです。スキャン専用の鍵とユーザーを用意してください。
- 公式サイトには日本語版ページへのリンクがありますが、2026 年 10 月 24 日時点では多くの日本語ページが表示されませんでした。この記事は英語版のドキュメントをもとにしています。
- 脆弱性データベースは定期的に取り直さないと、新しい CVE が結果に出ません。
次に読む
出典
- 公式リポジトリ READMEgithub.com/future-architect/vuls
- 公式ドキュメント:対応 OSvuls.io/docs/en/supported-os.html
- 公式ドキュメント:リモート・ローカル・サーバーの各モードvuls.io/docs/en/architecture-remote-local.html
- 公式ドキュメント:ローカルスキャンのチュートリアルvuls.io/docs/en/tutorial-local-scan.html
- 公式ドキュメント:リモートスキャンのチュートリアルvuls.io/docs/en/tutorial-remote-scan.html
- 公式ドキュメント:vulsctl でホストに入れるvuls.io/docs/en/install-with-vulsctl-host.html
- 公式ドキュメント:fast / fast-root / offline の各スキャンvuls.io/docs/en/architecture-fast-deep.html
確認日 2026-10-24
似たツール
OSV-Scanner
影響範囲 手元だけプロジェクトが使っている依存ライブラリを読み取り、OSV.dev の脆弱性データベースと照らし合わせる Google 製のコマンドラインツール。
- 用途
- 防御
- 形式
- コマンドライン
- 難易度
- 初級
- ライセンス
- 自由に使えるApache-2.0
- 分類
- 脆弱性スキャン
Trivy
影響範囲 手元だけコンテナイメージやコード、Kubernetes の脆弱性・設定ミス・埋め込まれた秘密情報を見つけるスキャナー。
- 用途
- 防御
- 形式
- コマンドライン
- 難易度
- 初級
- ライセンス
- 自由に使えるApache-2.0
- 分類
- 脆弱性スキャン/コンテナ・クラウド
Wazuh
影響範囲 手元だけ端末に入れたエージェントからログや設定、脆弱性の情報を集め、1 つの画面で監視できる無料のセキュリティ基盤(SIEM/XDR)。
- 用途
- 防御
- 形式
- サーバーで動かす
- 難易度
- 上級
- ライセンス
- 条件つきGPL-2.0(一部の構成要素は Apache-2.0)
- 分類
- 脆弱性スキャン/フォレンジック