Windowsのローカルスキャン#
FutureVuls では、Windows サーバの脆弱性を管理するため、以下の脆弱性管理方法を提供しています。
- Windows スキャン: KB(Microsoft Knowledge Base)を利用した脆弱性管理
- CPEスキャン (CPE割り当て): KB管理外のソフトウェアの脆弱性管理
- Lockfile スキャン: アプリケーションの依存関係ファイルを利用した脆弱性管理(2025年7月14日より)
古いスキャナを利用している場合
vuls-v0.24.1 build-9d8e510
よりも古い Windows 用スキャナをお使いの方は、手動でのアップデートが必要です。
旧バージョンの Windows スキャナをお使いの方は2024年1月1日までに手動アップデートを実施してください。スキャナバージョンの確認方法
Windows サーバの脆弱性管理の仕組み#
1. Windowsスキャン: KB(Microsoft Knowledge Base)を利用した脆弱性管理の概要#
KB(Microsoft Knowledge Base) は、Microsoft が提供する技術情報やサポート情報のリポジトリで、各 KB 記事には固有の ID 番号 (例. KB0000001) が付与されています。脆弱性解消のパッチやセキュリティ系のアップデート等に関する情報も、KB 記事として公開され KB-ID が付与されます。
プログラムの更新内容を識別するため、Windows の更新プログラムには、一部例外を除き KB-ID が付与されます。したがって、どの KB-ID が紐づく更新プログラムがシステムに適用されているかを確認することで、どの脆弱性が修正済みで、どの脆弱性が未修正のまま残っているか を特定できます。
FutureVuls の Windows スキャンでは、Windows への更新プログラムの適用状況 (どの更新プログラムが適用済み/未適用か) を用いた脆弱性検知と管理が可能です。未適用な更新プログラムに紐づく KB-ID を取得し、それらの KB-ID に紐づく CVE-ID を、システムに存在する脆弱性として検知します。
KB-ID から CVE に変換することで Linux やライブラリなどの他の管理対象と同じ指標で判断できます。また警戒情報や攻撃コードなどの情報をもとにトリアージ・対応できます。
下記のいずれの環境の Windows もスキャン可能です。
- インターネットの Windows Update に接続できる環境
- WSUS 配下の環境
- オフライン環境/スキャナがインストールできない場合
Windows OS の脆弱性検知の詳細な仕組みは、「ブログ」を参照してください。
2. CPEスキャン (CPE割り当て): KB管理対象外のソフトウェアの資産管理と脆弱性管理の概要#
「KB 管理対象外」の定義について
本マニュアルでは、以下のいずれかを満たすソフトウェアのことを「KB 管理対象外」と定義しています。
- 更新プログラムの管理対象外のソフトウェア
- 更新プログラムに KB-ID が紐づいていないソフトウェア
- 例えば、 Microsoft Office はこちらに含まれます。Microsoft Office は更新プログラムの管理対象内ですが、更新プログラムには通常 KB-ID が紐づいていません。
更新プログラム管理対象外のソフトウェア、あるいは更新プログラムに KB-ID が紐づいていないソフトウェアは、 KB を利用した脆弱性管理の対象外です。
これらの KB 管理対象外の資産管理機能とその脆弱性を、CPEスキャンを利用して管理する機能 を FutureVuls では提供しています。 詳細は「KB 管理対象外のソフトウェアの脆弱性を検知する」を参照してください。
Windowsスキャン: KB(Microsoft Knowledge Base)を利用した脆弱性管理#
スキャンの実行方法#
Windows スキャナはタスクスケジューラにより、1日1回自動でスキャンを実行します。
スキャナをインストールした直後や、任意のタイミングでスキャナを実行したい場合は、次の手順に従ってください。
- 方法1: タスクスケジュールから実行
- 方法2: コマンドプロンプトから実行
タスクスケジュールから実行する方法#
-
タスクスケジューラから、
vuls-saas
タスクを起動します。- タスクスケジューラを開きます。
- タスクの一番上の階層に存在する
vuls-saas
を 右クリック > 実行します。
コマンドプロンプトから手動スキャンする方法#
管理者権限 で以下のコマンドを実行することで手動スキャンが可能です。
C:\Program files\vuls-saas\vuls-saas.bat
スキャン結果の確認方法#
スキャン終了後、しばらくすると WEB 画面に反映されます。 数分待ってもスキャン結果が反映されない場合や、スキャンに失敗した場合は、以下のログファイルを見て原因を確認して下さい。
C:\Program Files\vuls-saas\vuls-saas.log
- スキャンの成否と、アップロードの成否が記載されています。
- スキャンが失敗している場合、レポート情報は FutureVuls にアップロードされません。
エラーが発生している場合は、WindowsスキャンのFAQを参照してください。
スキャン結果に検知漏れがあった場合
スキャナでスキャンした Windows のアドバイザリ一覧を確認した際に、適用済みの更新プログラム、未適用な更新プログラムに検知漏れがあった場合は、KBIDの手動登録機能で補完出来ます。
スキャン設定の記載箇所#
スキャン時の設定は、以下のように C:\Program Files\vuls-saas\config.toml
に記載されます。
PS C:\> type 'C:\Program Files\vuls-saas\config.toml'
# See README for details: https://vuls.io/docs/en/usage-settings.html
version = "v2"
[saas]
GroupID = 0000
Token = "xxxx-xxxxxxxx-xxxx-xxxxxx-xxxxxxxxx"
URL = "https://xxxxxxxxxxxx"
[default]
[servers]
[servers.server1]
host = "localhost"
port = "22"
scanMode = ["fast-root"]
[servers.server1.uuids]
server1 = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
[servers.server1.windows]
serverSelection = 2
version = "v2"
WSUS配下のWindowsのスキャン#
config.toml を設定することで、ローカルネットワーク上の WSUS を参照して未適用な KB を検知できます。
下記の環境でおすすめなスキャン方法です。
- インターネット上の Windows Update サービスに接続できないが、WSUS がローカルネットワークに構築されている
- スキャナプログラムをインストールできる
- スキャナプログラムからインターネット上の FutureVuls に構成情報をアップロードできる
- ペーストスキャンのように、Windows Update 実施のたびに KB を画面上にコピー&ペーストで更新したくない
Windows Update のアクセス先を変更する際は、config.toml の serverSelection
を、以下のように serverSelection = 1
で設定してください(デフォルトであるインターネット上の Windows Update を参照する場合は 2
で設定)。
~ 略 ~
[servers]
[servers.localhost]
host = "localhost"
port = "local"
[servers.localhost.uuids]
localhost = "xxxx-xxxx-xxxx"
[servers.localhost.windows]
serverSelection = 1
~ 略 ~
WSUS 配下の Windows スキャンがうまくいかない場合は以下を参照ください。
アップロードする情報をカスタマイズ#
config.toml の IgnoredJSONKeys
にアップロードしたくない情報の JSON のキーを指定することで、FutureVuls にアップロードする情報をフィルタリングできます。これは Windows スキャンの場合でのみ設定できます。
例として、インストール済みのソフトウェア一覧をアップロードしない設定は以下のようになります。
config.toml
に指定する JSON キーは以下の手順で確認するか、FAQを参照して下さい。
~ 略 ~
[servers]
[servers.localhost]
host = "localhost"
port = "local"
ignoredJSONKeys = ["packages"]
~ 略 ~
CPEスキャンを用いて、KB管理対象外のソフトウェアの脆弱性を管理する#
Windows スキャンによる KB を用いた脆弱性管理では、製品に提供された更新プログラムが修正する脆弱性を、更新プログラムに紐づく KB-ID を利用して検知します。
一方、更新プログラムの管理対象外のソフトウェア、あるいは更新プログラムに KB-ID が紐づいていないソフトウェアは、KB を利用した脆弱性管理の対象外です。これらの KB の管理対象外の製品の脆弱性を検知するために、FutureVuls では CPE スキャンにより各製品の脆弱性を管理する機能: CPE割り当て を提供しています。
詳細な割り当て方法などについては「WindowsでのCPEの割り当て」を参照してください。
各ソフトウェアが KB 管理の対象外かを判断するための参考情報#
以下に紹介する方法は、いずれも KB 管理されているかを 正確に判定できるものではございません。あくまで参考情報としてご活用ください。 各製品が KB で管理されているかについての正確な情報が必要な場合は、Microsoft にお問い合わせください。
- Windows Update / Microsoft Update の対象外のソフトウェアは、更新プログラムに KB-ID が紐づいていない可能性、すなわち KB 管理の対象外である可能性が高いです。
- 「Microsoft Update Catalog」 でソフトウェアを検索することで、その製品に KB が紐づく脆弱性があるかを調べることができます。また、「MSRCのSecurity Update Guide」でも、各ソフトウェアの更新方法を調べることができます。これらのサイトで、KB が紐づいている脆弱性が出てこない場合は、ソフトウェアが KB 管理の対象外である可能性が高いです。
ソフトウェアを手動で登録する#
Windows スキャナ以外の方法で登録した Windows の場合や、スキャナが認識できなかったソフトウェアは、手動でソフトウェアを登録できます。詳しくは、CPE登録を参照ください。
Lockfile スキャン: アプリケーションの依存関係ファイルを利用した脆弱性管理#
新機能(2025年7月14日より)
Linux 上では Vuls scanner による lockfile スキャンが可能でしたが、このリリースで Windows 上でも可能になりました。 これにより、Windows のパッケージと lockfile を FutureVuls 上でひとつのサーバとして管理できます。
Lockfile スキャンとは#
Lockfile スキャンは、アプリケーションの依存関係ファイル(lockfile)を解析し、使用しているライブラリの脆弱性を検出する機能です。 Windows 上で動作する様々なプログラミング言語のアプリケーションについて、その依存ライブラリの脆弱性を管理できます。
スキャン対象#
Windows 上で以下のような lockfile をスキャンできます:
- Node.js:
package-lock.json
,yarn.lock
- Python:
requirements.lock
,Pipfile.lock
,poetry.lock
- Ruby:
Gemfile.lock
- PHP:
composer.lock
- .NET:
packages.lock.json
- Go:
go.sum
- Rust:
Cargo.lock
- Java:
pom.xml
,build.gradle.lock
詳細なスキャン対象については、アプリケーションスキャンを参照してください。
スキャン方法#
Windows スキャナは、設定されたディレクトリを自動的にスキャンし、lockfile を検出します。 検出された lockfile は自動的に解析され、依存ライブラリの脆弱性が FutureVuls に報告されます。
設定方法#
config.toml に lockfile のスキャン対象ディレクトリを指定することで、Windows スキャン時に lockfile も一緒にスキャンされます。
[servers.localhost]
host = "localhost"
port = "local"
lockfiles = ["C:\\path\\to\\xxx.lock", "C:\\path\\to\\yyy.lock"]
[servers.localhost.uuids]
localhost = "xxxx-xxxx-xxxx"
統合管理のメリット#
Windows のパッケージと lockfile を FutureVuls 上でひとつのサーバとして管理することで、以下のメリットがあります:
- 一元管理: OS の脆弱性とアプリケーション依存関係の脆弱性を1つの画面で確認
- 優先度付け: KB による修正と依存ライブラリの更新を統合的に優先度付け
- トリアージの効率化: すべての脆弱性を同じワークフローで処理可能