コンテンツにスキップ

アドバイザリ#

FutureVulsでは脆弱性に関する、各種OSベンダーのアドバイザリ情報を収集しています。

脆弱性一覧タスク一覧で、脆弱性に紐づくアドバイザリの有無を確認できます。 また、タスク詳細からアドバイザリへのリンクを確認できます。

サーバの OS が Windows の場合には、アドバイザリ詳細から KBID の手動登録も可能です。

アドバイザリ一覧#

サーバタブの第2ペインから、対象サーバで検知された脆弱性に紐づくすべてのアドバイザリを表示できます。

advisory-tab

項目 詳細
アドバイザリ名 アドバイザリ名
検知CVE-ID アドバイザリに関連するCVE-ID
適用済み アドバイザリに関連する更新プログラムが適用済みかどうか(Microsoft Knowledge Base用)
手動追加 アドバイザリがユーザによって手動登録されたものかどうか(Microsoft Knowledge Base用)
アドバイザリID アドバイザリの管理ID
初回検知日時 アドバイザリが紐づく脆弱性が初めて検知された日時
アドバイザリが登録された日時
更新日時 アドバイザリに紐づく情報が更新された日時

アドバイザリ詳細#

アドバイザリ一覧で任意のアドバイザリをクリックすると、第3ペインで詳細が確認できます。

アドバイザリ詳細では、以下の項目が表示されます。

項目 詳細
アドバイザリ名 アドバイザリ名
ステータス アドバイザリのステータス(適用済みかどうか・手動追加かどうか)
更新日時 アドバイザリに紐づく情報が更新された日時

また、アドバイザリに関連する脆弱性がある場合、その一覧が表示されます。脆弱性をクリックすると、脆弱性の詳細ページへ遷移します。

advisory-detail

KBIDの手動登録#

主に Windows ペーストスキャン 向けの機能です。 サーバに適用されている更新プログラム、サーバに未適用な更新プログラムに検知漏れがあった場合に、画面から手動登録をすることで補完できます。

  1. サーバタブで管理対象のサーバをクリックし、第2ペインからアドバイザリタブを開く。
  2. KBIDの登録 からWindowsに適用済み/未適用の更新プログラムを示すKBIDをすべて入力し、送信する。

    KBIDの手動登録

  3. 手動スキャンを実行すると、未適用な更新プログラムとそれに紐づく脆弱性が自動で検知される。

KBID 手動登録の際の注意点

  • 既に登録されているKBIDを登録しようとするとエラーが発生します。
    • 対象のKBIDが手動で登録したものの場合は、KBIDを削除し、一度手動スキャンを実行してから再度登録ください。
    • 対象のKBIDが手動で登録した他のKBIDから自動で登録されたものの場合は、基となるKBIDを削除し、一度手動スキャンを実行してから再度登録ください。
  • Windows PASTEスキャンでは、登録された適用済み更新プログラムから、未適用な更新プログラムを自動で検知します。KBIDの登録 から、未適用な更新プログラムを直接登録できますが、誤検知の発生するリスクが高まるため非推奨です。
  • KBIDは常にスキャナで検知したKBIDが手動登録のKBIDよりも優先されます。手動追加されたKBIDとスキャナで検知されたKBIDが同一のKBIDであり、適用状態が異なる場合、スキャナで検知されたKBIDを利用して脆弱性を検知します。スキャン履歴に警告情報が表示されますので、手動登録したKBIDを削除してください。

Windowsに適用済み/未適用の更新プログラム(KBID)を取得する#

Windowsに適用済み/未適用の更新プログラム(KBID)を取得する方法を3つ紹介します。

KBID取得方法 適用済み 未適用
Windows Update API (CUI)
Windowsの設定>更新とセキュリティ>Windows Update (GUI)
Get-HotFix (CUI)

Windows Update API#

この方法の特徴はwsusscn2.cabを用意すると、 インターネットから隔離された環境においてもスキャナと同様の結果を得ることが出来ます。 また、未適用なKBIDの取得をサポートしていて、さらに実行結果をKBIDを登録しやすい形へ整形可能なため、推奨の方法です。

PowerShellで以下のコマンドを実行します。

Windows Updateにオンラインで接続できない環境(インターネットから隔離された環境など)向け

# 事前に http://download.windowsupdate.com/microsoftupdate/v6/wsusscan/wsusscn2.cab をダウンロードしておく。
# 例では C:\Program Files\vuls-saas\wsusscn2.cab にダウンロードしている。

PS C:\Program Files\vuls-saas> $applied = @()
PS C:\Program Files\vuls-saas> $unapplied = @()
PS C:\Program Files\vuls-saas> $Session = New-Object -ComObject Microsoft.Update.Session
PS C:\Program Files\vuls-saas> $ServiceManager = New-Object -ComObject Microsoft.Update.ServiceManager
PS C:\Program Files\vuls-saas> $UpdateService = $ServiceManager.AddScanPackageService("Offline Sync Service", "C:\Program Files\vuls-saas\wsusscn2.cab", 1)
PS C:\Program Files\vuls-saas> $UpdateSearcher = $Session.CreateUpdateSearcher()
PS C:\Program Files\vuls-saas> $UpdateSearcher.WinUpdateSrc = 3
PS C:\Program Files\vuls-saas> $UpdateSearcher.ServiceID = $UpdateService.ServiceID
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.QueryHistory(0, $UpdateSearcher.GetTotalHistoryCount())){ If ($e.Title -match '(KB\d{6,7})') { $applied += $Matches[0] }}
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=0 and Type='Software'").Updates){ $applied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=0 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=1 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> ($applied | Select-Object -Unique) -Join ',' # 適用済みKBID
KB5011651,KB5012599
PS C:\Program Files\vuls-saas> ($unapplied | Select-Object -Unique) -Join ',' # 未適用KBID
KB5012117

Windows Updateにオンラインで接続できる環境(スキャナプログラムをサーバにインストールできない環境など)向け

PS C:\Program Files\vuls-saas> $applied = @()
PS C:\Program Files\vuls-saas> $unapplied = @()
PS C:\Program Files\vuls-saas> $Session = New-Object -ComObject Microsoft.Update.Session
PS C:\Program Files\vuls-saas> $UpdateSearcher = $Session.CreateUpdateSearcher()
PS C:\Program Files\vuls-saas> $UpdateSearcher.WinUpdateSrc = 1 # or 2
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.QueryHistory(0, $UpdateSearcher.GetTotalHistoryCount())){ If ($e.Title -match '(KB\d{6,7})') { $applied += $Matches[0] }}
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=0 and Type='Software'").Updates){ $applied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=0 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> foreach($e in $UpdateSearcher.search("IsInstalled=1 and RebootRequired=1 and Type='Software'").Updates){ $unapplied += ('KB'+$e.KBArticleIDs) }
PS C:\Program Files\vuls-saas> ($applied | Select-Object -Unique) -Join ',' # 適用済みKBID
KB5011651,KB5012599
PS C:\Program Files\vuls-saas> ($unapplied | Select-Object -Unique) -Join ',' # 未適用KBID
KB5012117

Windowsの設定>更新とセキュリティ>Windows Update#

この方法の特徴はコマンドを実行することなくKBIDを取得できます。 ただし、適用済みや未適用のKBIDが大量になると、KBIDの登録画面での入力作業が多くなります。

「Windowsの設定」から、「更新とセキュリティ」をクリックします。

windows_setting

「更新とセキュリティ」の「Windows Update」を見ます。 上部の赤枠部分に未適用な更新プログラムが表示されるため、更新プログラムのタイトルからKBIDを抽出してください。 この画像の場合は、「2022-04 .NET Framework 3.5 および 4.8 の累積的な更新プログラム(x64向けWindows 10 Version 21H2用)(KB5012117)」から「KB5012117」が未適用なKBIDとなります。 また、下部の赤枠部分「更新の履歴を表示する」をクリックすると、適用済みの更新プログラムのタイトルと日付が表示されます。

windows_update

同様にして、「更新の履歴を表示する」に表示されている更新プログラムのタイトルから適用済みのKBIDを取得します。

image

Get-HotFix#

この方法は上記の2つの方法のどちらも使えない場合に参考にしてください。 また、この方法では未適用なKBIDが取得できないことに注意してください。

PowerShellで以下のコマンドを実行します。

PS C:\Program Files\vuls-saas> (Get-HotFix | Select-Object HotFixID | % { If ($_ -match '(KB\d{6,7})') { $Matches[0] }}) -Join ','
KB5012117,KB4562830,KB5003791,KB5007401,KB5012599,KB5011651,KB5005699

KBIDの削除方法#

Windowsの状態に更新があった場合は、手動で登録したKBIDを以下の手順で削除してください。

  1. サーバタブで管理対象のサーバをクリックし、第2ペインからアドバイザリタブを開く。
  2. 削除したいアドバイザリをクリックし、第3ペインを開く。
  3. ゴミ箱アイコンをクリックし、KBIDを削除する。
  4. 手動スキャンを実行すると、削除した更新プログラムを基に自動で検知されていた未適用な更新プログラムが消去される。

KBID 削除時の注意点

削除可能なKBIDは手動で登録したもののみです。