コンテンツにスキップ

ネットワーク機器のスキャン#

CPE スキャンを利用して、ネットワーク機器の脆弱性も FutureVuls 上で検知・管理できるようになります。

ネットワーク機器の登録は、画面から手動で登録する手法と、コマンド実行による自動検知の2種類の方法で登録できます。

検知データソースの追加#

FutureVuls ではネットワーク機器のスキャンで利用するデータソースとして、NVD と JNV に加えてベンダ公開の一次情報も取り込んでいます。 これにより、NVD の参照に比べてより迅速にネットワーク機器の脆弱性が検知されるようになり、検知精度も向上します。

2025年4月現在、Fortinet 社の一次情報を検知用のデータソースとして追加しています。

ネットワーク機器をコマンドで登録する#

ネットワーク機器で使われているソフトウェアの CPE を取得してから登録するまで、コマンドを用いて各ネットワークごとに一括で行うことができます。 また cron 等を用いて定期的に実行させることをおすすめします。 コマンドの詳細な使い方は「README」も参考にしてください。

使用するコマンドは2つあります。

  1. future-vuls discover

  2. future-vuls add-cpe

順番に実行していくことで、ネットワーク単位での CPE 情報を管理できます。

コマンドのインストール手順#

releases」から future-vulssnmp2cpe のバイナリをダウンロードします。 future-vuls を実行する際は snmp2cpe のバイナリと同じディレクトリの階層に配置してください。

コマンドの説明と使用方法#

future-vuls discover#

CIDR レンジで指定したネットワーク内のホストを探査して応答があったホストに対して snmp2cpe を実行し CPE を取得できたホストを toml ファイルにリストアップします。 次回実行時には新しいホストを差分として追記します。 この際、古いファイルはタイムスタンプをつけてリネームされます。 snmp2cpe については「README」を参照してください。

このコマンドの実行には CIDR レンジの指定が必須です。 列挙されたホストの中で、CPE 情報を FutureVuls に登録したいものの fvuls_sync の値を true に書き換えます。

#コマンドのヘルプ
./future-vuls discover -h
discover hosts with CIDR range. Run snmp2cpe on active host to get CPE. Default outputFile is ./discover_list.toml

Usage:
  future-vuls discover --cidr <CIDR_RANGE> --output <OUTPUT_FILE> [flags]

Examples:
future-vuls discover --cidr 192.168.0.0/24 --output discover_list.toml

Flags:
      --cidr string           cidr range
      --community string      snmp community name. default: public
  -h, --help                  help for discover
      --output string         output file
      --snmp-version string   snmp version v1,v2c and v3. default: v2c
#使用例
./future-vuls discover --cidr 192.168.0.1/24
Discovering 192.168.0.1/24...
192.168.0.1: Execute snmp2cpe...
failed to execute snmp2cpe. err: failed to execute snmp2cpe. err: exit status 1
192.168.0.2: Execute snmp2cpe...
failed to execute snmp2cpe. err: failed to execute snmp2cpe. err: exit status 1
192.168.0.4: Execute snmp2cpe...
failed to execute snmp2cpe. err: failed to execute snmp2cpe. err: exit status 1
192.168.0.6: Execute snmp2cpe...
New network device found 192.168.0.6
wrote to discover_list.toml
#生成されるtomlファイルの例
["192.168.0.6"]
  ip = "192.168.0.10"
  server_name = "192.168.0.6"
  uuid = ""
  cpe_uri = ["cpe:2.3:h:fortinet:fortigate-50e:-:*:*:*:*:*:*:*","cpe:2.3:o:fortinet:fortios:5.4.6:*:*:*:*:*:*:*"]
  fvuls_sync = false

future-vuls add-cpe#

fvuls_sync が true になっているホストを FutureVuls に擬似サーバとして登録し、 UUID を取得します。 擬似サーバの登録名は server_name を変更することで変えることができます。 登録されているサーバ名と server_name が異なる場合は、登録されているサーバ名が優先され、コマンド実行時に自動的に変更されます。 その後 toml ファイルの cpe_uri を FutureVuls の擬似サーバに CPE として登録します。 このコマンドの実行には FutureVuls RESTAPI のトークンが必須です。 トークンの取得方法については「FutureVuls API」を参照してください。

#コマンドのヘルプ
./future-vuls add-cpe -h
Create a pseudo server in Fvuls and register CPE. Default outputFile is ./discover_list.toml

Usage:
  future-vuls add-cpe --token <VULS_TOKEN> --output <OUTPUT_FILE> [flags]

Examples:
future-vuls add-cpe --token <VULS_TOKEN>

Flags:
  -h, --help                help for add-cpe
      --http-proxy string   proxy url
      --output string       output file
  -t, --token string        future vuls token ENV: VULS_TOKEN
#使用例
$ ./future-vuls add-cpe --token xxxx-xxxxxx-xxxx-xxxx-xxxx-xxxxxx
Creating 1 pseudo server...
192.168.0.6: Created FutureVuls pseudo server ce024b45-1c59-5b86-1a67-e78a40dfec01
wrote to discover_list.toml

Uploading 1 server's CPE...
192.168.0.6: Uploaded CPE cpe:2.3:h:fortinet:fortigate-50e:-:*:*:*:*:*:*:*
192.168.0.6: Uploaded CPE cpe:2.3:o:fortinet:fortios:5.4.6:*:*:*:*:*:*:*
# 生成されるtomlファイルの例
["192.168.0.6"]
  ip = "192.168.0.6"
  server_name = "192.168.0.6"
  uuid = "ce024b45-1c59-5b86-1a67-e78a40dfec01"
  cpe_uri = ["cpe:2.3:h:fortinet:fortigate-50e:-:*:*:*:*:*:*:*", "cpe:2.3:o:fortinet:fortios:5.4.6:*:*:*:*:*:*:*"]
  fvuls_sync = true

注意事項#

ネットワーク機器の種別#

ネットワーク機器を CPE 登録する場合には、種別は h(=ハードウェア)ではなく o(OS)に該当する情報を登録してください。

以下のように、種別として h で登録した機器の脆弱性は検知されません。

Version 2.2: cpe:/h
Version 2.3: cpe:2.3:h

ネットワーク機器の場合、NVD の「Known Affected Software Configurations」には、ハードウェア(h)ではなく、OS(o)の CPE が定義されております。 FutureVuls でネットワーク機器の脆弱性も管理したい場合、OS の CPE 定義のご登録をお願いします。

NVD 掲載の CPE 形式について

NVD の CVE ページに記載されている「Known Affected Software Configurations」は、その脆弱性が該当するソフトウェアのバージョンについて示すセクションです。 ここに表記されているバージョンは、脆弱性が存在すると確認されたものです。 ユーザやシステム管理者はこの情報を使って、自分のシステムが影響を受けるかどうかを判断できます。

一方で「Running on/with」は、その脆弱性が存在するソフトウェアが特定のオペレーティングシステムや他のソフトウェア、ハードウェアなどと共に動作しているときに影響を受けるかどうかを示します。 例えば、「Running on/with」に「cpe:2.3:h:cisco:catalyst_ie9300:-:::::::*」が記載されている場合、その脆弱性は「Cisco Catalyst IE9300」上で動作するソフトウェアに影響を及ぼす可能性があることを示します。

「cpe:2.3:h:cisco:1120_connected_grid_router:-:::::::*」の脆弱性を検知する#

例として、以下の CPE で表される「ネットワーク機器」の脆弱性を検知したい場合を考えます。

- Version 2.2: `cpe:/h:cisco:1120_connected_grid_router:-`
- Version 2.3: `cpe:2.3:h:cisco:1120_connected_grid_router:-:*:*:*:*:*:*:*`

CPE の種別が h となっている場合の、 o に該当する情報は以下の手順で検索できます。

  1. 該当の CPE に紐づく脆弱性を検索する

    - NVD -> Search -> Search Common Platform Enumerations (CPE) -> ※2 - ※2 -> CPE Usage -> View Vulnerabilities -> Search Results

  2. Vuln ID を選択して、ハードウェアの CPE に紐づく OS の CPE を確認する

    - Vuln ID -> CVE-2020-3426 -> ※3 - ※3 -> Known Affected Software Configurations -> Running on/with -> Configuration - 「cpe:2.3⭕cisco:ios:-:::::::*」

  3. OS の CPE を FutureVuls に登録する

nvd_cpe_example