Skip to content

Instantly share code, notes, and snippets.

@ishiDACo
Last active February 15, 2021 02:27
Show Gist options
  • Save ishiDACo/b3d47091427903bae1c8a7ef49b95707 to your computer and use it in GitHub Desktop.
Save ishiDACo/b3d47091427903bae1c8a7ef49b95707 to your computer and use it in GitHub Desktop.
VulsRepo-tutorial-ja

VulsRepo の表示

ブラウザで以下 URL にアクセスします。 ブラウザで JavaScript の動作を無効にしている場合は、JavaScript を有効にしてください。

http://<server-address>:5111

表示対象データの選択

初期状態では、スキャン直近日のデータが表示対象として選択されています。

日付で対象範囲を絞り込めます。ドロップダウンリストから範囲を選んでください。

daterange

Custom Range で任意の範囲指定ができます。

daterange-custom

対象範囲をサーバー名で絞り込めます。複数選択できます。

multiselect

サーバー名で対象をフィルタリングしてから、選択することもできます。

multiselect-filter

細かく選びたいときは、表示したいデータをファイル選択ツリーで選んでください。複数選択可能です。 すべて選ぶ場合は Select All、クリアする場合は Select None をクリックしてください。

選んだら Submit ボタンを押してください。

select-file

データの読み込みができたら、以下のように ピボットテーブル が表示されます。

filter-off

もしファイル選択ツリーが出ない場合

  • Vuls の出力結果として参照しているディレクトリ /home/vuls/vulsctl/results/ が正しいか確認してください。
  • Vuls の出力結果として参照しているディレクトリ配下のディレクトリ名、ファイル名を変更していないことを確認してください。
  • Vuls の出力結果として参照しているディレクトリに大量のファイルがある場合、ファイル選択ツリーの生成に失敗します。その場合は、不要な *.json ファイルを別ディレクトリに退避するか、削除してから VulsRepo の表示を行ってください。

もしピボットテーブルが出ない場合

  • /opt/vuls/results 配下のディレクトリやファイルの名前は変更しないでください。
  • resultsPath の値の末尾に / を付けないでください。例えば、resultsPath = "/opt/vuls/results/" は誤りで、resultsPath = "/opt/vuls/results" は正しいです。

大量データを読み込もうとすると失敗することがあります。以下の方法で対応してください。

  • 表示対象データの選択を減らしてから、再度読み込んでください。
  • SettingSummaryCvss MetricsAffected ProcessesOFF にすると改善する場合があります(表示設定 - Show / Hide the Item を参照してください)。

ピボットテーブル

フィルター未適用の初期状態

スキャンした日時・サーバー・コンテナごとに発見された脆弱性の個数が、深刻度ごとのヒートマップとして表示されます。

healty は脆弱性が見つからなかったことを示します。

filter-off

フィルターの操作

既存フィルターの適用

プルダウンでフィルターを変更すると、予め設定されたフィルターを適用して、ピボットテーブル を表示できます。

select-filter

####### プリセットのフィルター

5つ用意されています。

######### 01. Graph: CVSS-Severity => ServerName

サーバー・コンテナごとに、脆弱性の延べ検出数を積み上げた棒グラフです。

直近のデータを選択して、各サーバー、コンテナーの状態を横並びに比較するのに適しています。

filter-01

######### 02. Graph: CVSS-Severity => CVSS-Score

CVSS 基本値ごとに、脆弱性の延べ検出数を集計した棒グラフです。

直近のデータを選択して表示するとよいです。

filter-02

######### 03. Pivot: Package/CVSS-Severity/CveID/Summary => ServerName

脆弱性の発見されたパッケージ、深刻度、対応する CVE ID、脆弱性の概要と、サーバー・コンテナごとに、延べ検出数を集計したヒートマップです。

直近のデータを選択して各サーバー、コンテナーの状態を横並びに比較するのに適しています。

filter-03

######### 04. Pivot: Package/CveID => ScanTime

各 CVE ID の脆弱性が解消されたかまたは新たに検出されたかを確認するのに適しています。

単一サーバーもしくはコンテナを時系列で比較するのに適しています。

filter-04

######### 05. Pivot: CveID/PackageInfo => NotFixedYet

各 CVE ID の脆弱性が含まれるパッケージに修正済みバージョンが提供されているかどうか確認するのに適しています。

直近の単一サーバーもしくはコンテナを選んで確認すると良いです。

filter-05

表示項目の追加・削除・並び替え

表示項目は項目をドラッグ&ドロップすると変更できます。

pivot-item-add-remove-move

フィルターの新規保存、上書き保存

表示項目を入れ替えたり並び替えた状態を保存することができます。Save ボタンを押すことで、フィルター保存パネル が開きます。

  • 新規で保存したければ、Save new filter を選択して、任意のフィルター名を入力してください。
  • 既存フィルターへ上書き保存したければ、Update filter を選び、プルダウンから上書きしたいフィルターを選んでください。
  • 保存するならば OK ボタン、やめるならば Cancelx ボタンまたは ESC キーを押してください。

なお、プリセットのフィルターの上書き保存はできません。

save-filter

フィルターの削除

Delete ボタンを押すことで、現在選択しているフィルターを削除できます。

Are you sure to delete? と確認ダイアログが表示されるので、削除するならば OK ボタン、やめるならば キャンセル ボタンを押してください。

なお、プリセットのフィルターは削除できません。

delete-filter

フィルターのクリア

Clear ボタンを押すことでフィルターが解除され、ピボットテーブル の表示がフィルター未適用の初期状態に戻ります。

clear-filter

印刷

Open print preview ボタンを押すことで、印刷プレビューウィンドウが開きます。

open-print-preview

Print ボタンを押すことで印刷ダイアログが出ます。

各項目の説明

項目 説明
ScanTime スキャンした日時
ServerName スキャン対象サーバー名
Container スキャン対象コンテナ名
CVSS Score 脆弱性の基本値。最高は 10.0
CVSS Severity 脆弱性の深刻度。赤いほうがより深刻
CVSS Score Type CVSS ScoreCVSS Severityおよび CVSS Vector の算出元。CVSS Score Typeを参照
Platform 稼働しているプラットフォーム。
Family OS
Release OS リリースバージョン
Errors Vuls のエラーメッセージ
Warnings Vuls の警告メッセージ。Vuls v0.15.x 以降で OS の EOL 情報が含まれます。
Diff (Vuls v0.15.8 以降 で差分情報を出力した場合のみ)
+ 前回スキャンに比べ新たに見つかった脆弱性
- 前回スキャンに比べ無くなった(対応した)脆弱性
CveID 脆弱性に割り当てられた CVE ID。クリックで 詳細パネル を表示します。
Packages 脆弱性を含むパッケージ名
FixedIn 脆弱性を塞いだパッケージのバージョン
FixState 脆弱性に対するパッケージの対応状況
NotFixedYet 脆弱性を修正したバージョンのパッケージが提供されているかどうか。
PackageVer インストールされているパッケージのバージョン
NewPackageVer 最新パッケージのバージョン
Repository パッケージ提供元のリポジトリ
CweID その CVE の CWE - Common Weakness Enumeration。クリックで MITRE もしくは JVN の該当する CWE の説明ページを別ウィンドウで表示します。
VulnType (WordPress のみ) WPScan が提供している脆弱性のタイプ
Status (WordPress テーマ、プラグインのみ) WordPress テーマ、プラグインが有効かどうか
Update (WordPress テーマ、プラグインのみ) WordPress テーマ、プラグインのアップデートが利用できるかどうか
Title 脆弱性のタイトル
Summary 脆弱性の概要
PortScannable ポートスキャンできるかどうか。クリックで Package パネル を表示します。
Process 脆弱性の影響を受けるプロセスの プロセスID:プロセス名。クリックで Package パネル を表示します。
Path ライブラリの脆弱性スキャンの元になった lock ファイルのパス。
Mitigation 緩和策の情報があるかどうか。あれば Yes
各種 CVSSv3 CVSS 3.0 Vector
各種 CVSS CVSS 2 Vector
AdvisoryID (Amazon Linux 2, RedHat, Oracle Linux のみ) 対応ディストリビューションのアドバイザリーID。クリックでアドバイザリーページを別ウィンドウで表示します。
CERT USCERT Alert または JPCERT 注意喚起 があるかどうか。
クリックで該当する情報を別ウィンドウで表示します。
PoC エクスプロイトコードが存在するかどうか。存在するならばその個数
Changelog Changelog があるかどうか。クリックで Package パネル を表示します。
DetectionMethod 脆弱性を検知した手法
ConfidenceScore 検知の信頼度。100 は信頼度が高い
Published 情報の公表日
Last Modified 情報の最終更新日
CVSS Score Type

いくつかの例を挙げます。

算出元
nvdV3 NVD の CVSS v3
nvd NVD の CVSS v2
jvnV3 JVN の CVSS v3
jvn JVN の CVSS v2
redhat_apiV3 RedHatの CVSS v3
oracleAdvisory Oracle Linux Errata repository
Unknown 未算出

項目ごとのフィルタリング

項目の 部分を押してください。

チェックボックスのオンオフで表示対象を選びます。 まとめて選ぶ場合は Select All、クリアする場合は Select None をクリックしてください。

候補が多い場合は絞り込みができます。以下の例では python で絞り込んで、いくつかのパッケージを選んでいます。

item-filter

適用するならば Apply ボタンを押してください。フィルタリングが効いている項目は 斜体 で表示されます。 適用せず閉じるならば Cancel ボタンを押してください。

item-filtered

ソート

ソートは一番左の列が最優先となります。

項目 昇順・降順
CVSS Score 降順
CVSS Severity Unknown, Critical, High, Important, Medium, Moderate, Low, Negligible, Unimportant, Pending, Not Vulnerable
各種 CVSSv3 評価値の降順
各種 CVSS 評価値の降順
CERT 降順
PoC 降順
Published 降順
Last Modified 降順
それ以外 昇順

なお、昇順降順は固定で切り替えはできません。

TSV エクスポート

レンダラーをTSV Export に変更すると、TSV データ表示できます。表示データはクリップボードにコピーできます。またDownload TSV ボタンを押すことで TSV ファイル保存できます。

tsv-export

その他ピボットテーブルの操作

レンダラーの変更や集計単位、集計値の行および列のソート順の変更ができます。

pivottable wiki および PivotTable.js Examples を参照してください。

pivot-table-misc

ヘッダー上ボタン

表示対象データの再選択

画面左上の ボタンを押すと、ファイル選択ツリーを表示します。もう一度押すと閉じます。

表示対象データを選び直すときに押してください。

hamburger

表示設定

画面右上の「レンチ」ボタンを押すと 表示設定パネル が開きます。

x を押すか、パネル枠外をクリックするか ESC キーを押してパネルを閉じることで設定が適用されます。

pivot-table-setting

Show / Hide the Item

ピボットテーブル で表示する項目を設定します。Summary, CVSS Metrics, Affected Processes(PortScannable, Process) のデータは非常に大きいため、脆弱性の数が多いとエラーが発生します。その場合は OFF にすると改善する場合があります。

####### Attention CweId

ピボットテーブルCweId で下記いずれかに該当する場合、ON にすることで CWE ID に要注意を示すマークがつきます。

cweid

Priority

ピボットテーブル および 詳細パネル に表示するデータの優先度を設定します。デフォルトは NVD です。

ブロックのドラッグ&ドロップで優先度を入れ替え出来ます。 また、表示したいものと表示したくないものの入れ替えができます。

以下の例では JVNUbuntu の優先度を上げて、日本語の情報および Ubuntu の情報を優先して表示するようにしています。 また、amazon, oracleHide 側に移動して、Amazon Linux と Oracle Linux の情報を出さないようにしています。

priority

フィルター・表示設定の共有

フィルターや表示設定はサーバー側ではなく各ブラウザの Local Storage に保存しています。そのため、複数人で同じフィルターおよび表示が必要ならば、他の人へ設定をおすそわけする必要があります。

渡す側の操作
  1. 画面右上の「🔗」ボタンをクリックすると 設定共有パネル が開きます。
  2. コピーボタンを押して設定内容を含む URL をクリップボードにコピーします。
  3. コピーした URL を何らかの方法で他の人に渡します。
  4. x を押すか、パネル枠外をクリックしてパネルを閉じてください。

share-setting

渡された側の操作
  1. ブラウザでコピーした URL にアクセスしてください。
  2. 必要に応じて URL をブックマークしてください。ブックマークから VulsRepo を開くことで次回以降も同じ設定で表示できます。
  3. 表示対象データを選択すると、ピボットテーブル は同様の設定で表示できます。
  4. 必要に応じて フィルターの新規保存、上書き保存 してください。

詳細パネル

詳細情報は Main タブPackage タブ に分かれています。初期表示は Main タブ です。適宜タブをクリックして表示を切り替えてください。

パネルを閉じる場合は パネル右上の x を押すか、パネル枠外をクリックするか、ESC キーを押してください。

detail-tab

Main タブ

detail-main

CVSS Detail セクション

各情報機関(Type)、ディストリビュータから提供された基本値および深刻度(Score)、脆弱性の概要(Summary)、情報の最終更新日(LastModified Date)を表示します。

各 Type をクリックすると、情報機関、ディストリビュータが提供しているページを新しいウィンドウで開きます。

基本値および深刻度の区分については ? のツールチップを参照してください。

参考情報: 共通脆弱性評価システムCVSS v3概説

####### CVSS Vector チャート

NVD, JVN, RedHat が算出した各評価項目の値をチャート表示します。 Cvss v2 タブ, Cvss v3.x タブ をクリックすると CVSS v2, CVSS v3.x チャートを切り替えできます。 初期表示は CVSS v3.x です。

NVD v3.x, JVN v3.x, RehHat v3.x をクリックするとチャート表示、非表示を制御できます。 以下の例では NVD v3.1, RehHat v3.0 のチャートを非表示にしています。

detail-main

Mitigation セクション

緩和策の情報がある場合に表示されます。 ヘッダー部分をクリックすると、セクションを開閉します。

mitigation

CweID セクション

MITRE および JVN をクリックすることで該当する CWE の詳細説明ページを別ウィンドウで表示します。

下記のいずれかにランクインしているしている場合、ランクをバッジとして表示します。バッジをクリックすることで各情報のページを別ウィンドウで表示します。

参考情報: 共通脆弱性タイプ一覧CWE概説

Links セクション

新しいウィンドウで下記ページを開きます。

項目 リンク先
MITRE MITRE が提供する該当 CVE のページ
CveDetails CVE Details が提供する該当 CVE のページ
CVSS Calculator V2 NIST が提供する Common Vulnerability Scoring System Calculator Version 2 のページ
CVSS Calculator V3 NIST が提供する Common Vulnerability Scoring System Calculator Version 3.0 のページ
CVSS Calculator V3 (JVN) JVN が提供する 共通脆弱性評価システム (Common Vulnerability Scoring System) Version 3.0 Calculator のページ
Amazon (Amazon Linux 2 のみ) Amazon Linux Security Center の該当 CVE のページ
RedHat Network (RedHat のみ) Red Hat Product Errata
OracleLinux Errata (Oracle Linux のみ) Unbreakable Linux Network

Calculator は、環境評価基準を含めた深刻度の算出に有用です。

USCERT / JPCERT Alert セクション

USCERT Alert または JPCERT 注意喚起 の情報がある場合に表示されます。 ヘッダー部分をクリックすると、セクションを開閉します。 USCERT Alert および JPCERT 注意喚起 のリンクを表示します。クリックすると別ウィンドウで該当のページを開きます。

cert-alert

Exploits セクション

Exploit Codes および Metasploit Modules の情報がある場合に表示されます。 ヘッダー部分をクリックすると、セクションを開閉します。 各 Exploit Codes および Metasploit Modules のリンクを表示します。クリックすると別ウィンドウで該当のページを開きます。

exploits

References セクション

ヘッダー部分をクリックすると、セクションを開閉します。 各情報機関、ディストリビュータが提供している参照情報です。リンクをクリックすると別ウィンドウで該当のページを開きます。

タグでフィルタリングできます。タグのクリックでオンオフが切り替わります。デフォルトはすべて表示です。 情報提供元ごとに表示を開閉できます。 をクリックしてください。デフォルトは開いています。

references

Package タブ

脆弱性を含むパッケージの一覧です。 各 PackageName をクリックすると Package パネル を開きます。

package

Package パネル

パネルを閉じる場合は パネル枠外をクリックするか ESC キーを押してください。

changelog

Affected Processes

脆弱性の影響を受けるプロセスが存在する場合に表示されます。 プロセスID、プロセス名、IPアドレスおよびポートの一覧です。

affected-processes

Changelog

パッケージの changelog を表示します。

changelog の記述に、該当する CVE ID が存在すると橙色でハイライト表示されます。それ以外の CVE ID が存在すると水色でハイライト表示されます。

URL パラメータ

日付、サーバーやフィルターを URL パラメータで決め打ちすることで、対象データをフィルタリングしてすぐに表示できます。 表示対象の期間やサーバー、フィルターがあらかじめ決まっているならば、 VulsRepo を開く際の URL に各種パラメータを指定することで、毎回手動で選ぶ手間が省けます。

以下のパラメータが指定可能です。

パラメータ 用途 指定できる値
server 対象サーバー(コンテナ)の指定 すべての場合は all。 複数の場合は + で連結 例)foo.json foo.json+bar.json+baz@foo.json
daterange 日付範囲指定 today yesterday last7days last30days thismonth lastmonth alldays のいずれか一つ
datefrom 日付範囲指定 from (*) YYYY-MM-DD 形式の日付 例)2020-11-01
dateto 日付範囲指定 to (*) YYYY-MM-DD 形式の日付 例)2021-01-23
time 特定日時の指定 ISO8601 形式の時刻 例) 2020-02-04T01:25:11Z2021-01-25T12:34:56+09:00
filter フィルターの指定 フィルター名。未指定ならばフィルター無し 例) 01.%20Graph:%20CVSS-Severity%20=>%20ServerName

(*) datefromdateto はセットで指定してください。

日付関連パラメータの優先度

daterange > datefromdateto > time

いずれも未指定の場合は最新日を設定とみなします。

いくつか例を示します。クリックするとデモサイトに飛びます。

最新日の localhost.json

https://monocosel.jp/vulsrepo/?server=localhost.json

直近30日の localhost.jsonraspberry10.json

https://monocosel.jp/vulsrepo/?daterange=last30days&server=localhost.json+raspberry10.json

2020-09-18 〜 2020-11-16 の全サーバー(コンテナ)

https://monocosel.jp/vulsrepo/?datefrom=2020-09-18&dateto=2020-11-16&server=all

2020-02-04T01:25:11Zlocalhost.json

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json

2020-02-04T01:25:11Zlocalhost.jsonvulsrepo@localhost.json

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json+vulsrepo@localhost.json

2020-02-04T01:25:11Zlocalhost.json01. Graph: CVSS-Severity => ServerName フィルター適用

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json&filter=01.%20Graph:%20CVSS-Severity%20=%3E%20ServerName

2020-02-04T01:25:11Zlocalhost.json02. Graph: CVSS-Severity => CVSS-Score フィルター適用

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json&filter=02.%20Graph:%20CVSS-Severity%20=%3E%20CVSS-Score

2020-02-04T01:25:11Zlocalhost.json03. Pivot: Package/CVSS-Severity/CveID/Summary => ServerName フィルター適用

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json&filter=03.%20Pivot:%20Package/CVSS-Severity/CveID/Summary%20=%3E%20ServerName

2020-02-04T01:25:11Zlocalhost.json04. Pivot: Package/CveID => ScanTime フィルター適用

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json&filter=04.%20Pivot:%20Package/CveID%20=%3E%20ScanTime

2020-02-04T01:25:11Zlocalhost.json05. Pivot: CveID/PackageInfo => NotFixedYet フィルター適用

https://monocosel.jp/vulsrepo/?time=2020-02-04T01:25:11Z&server=localhost.json&filter=05.%20Pivot:%20CveID/PackageInfo%20=%3E%20NotFixedYet

FAQ

  • 何故、VulsとVulsRepoで結果の集計値が違うのか?

Vuls はホストに含まれる CveID の数を集計します。しかしながら、VulsRepo では CveID に関連するパッケージを1件としてカウントしています。よって、1つの CveID に関連するパッケージが複数ある場合、Vuls よりも集計値が多くなります。

count

ギャラリー

image image image image image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment