Configuration Manager を使って組織内の脆弱性のあるソフトウェアを特定する

皆さん、おはようございます。(朝の 4 時台に本記事を書いています)

今回は、Configuration Manager (Microsoft Configuration Manager (MCM), Microsoft Endpoint Configuration Manager (MECM), SCCM) を用いて、組織内にあるソフトウェア (アプリケーション) で脆弱性のあるソフトウェア バージョンを特定する方法をご紹介します。

このブログをご覧いただいている皆さんは、システム管理者の方が多いかと思います。日々、組織の Windows クライアントを管理する上で欠かせない、ソフトウェアの脆弱性対応について少しでも役立つ情報を届けられればと思い、この記事を書いています。

今回の記事は、Configuration Manager が収集したハードウェア インベントリ情報を基に、SQL クエリにて、組織内にあるソフトウェアの情報 (バージョン情報など) をレポート化して、脆弱性が見つかった際に調査する工数を削減するための方法を紹介します。

ラージ エンタープライズの組織では、組織内で脆弱性情報をウォッチしており、CVE 番号がアサインされた脆弱性の場合は、SOC (Security Operation Center) やセキュリティ対応チームからクライアント PC を管理するチームに確認が入る場合があります。ラージ エンタープライズで無くても、ソフトウェアの脆弱性を放置しておくことは望ましくないため、組織内のクライアント PC にどのようなソフトウェアおよびバージョンがインストールされているかの把握はとても重要です。

では、実際に、SQL クエリにて、ハードウェア インベントリ情報からインストールされているソフトウェアを見て行きましょう!

今回の題材は、Wireshark というネットワーク キャプチャ ツールとします。最近、脆弱性が報告されていましたので、古いバージョンの Wireshark をインストールしているクライアントを見ていきます。

<SQL クエリ>

Select
v_R_System.Name0 as 'Hostname',
v_R_System.User_Name0 as 'User Name',
v_R_System.Build01 as 'Current OS Build',
v_GS_INSTALLED_SOFTWARE.Publisher0 as 'Software Publisher',
v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 as 'Software Name',
v_GS_INSTALLED_SOFTWARE.ProductVersion0 as 'Software Version',
v_GS_INSTALLED_SOFTWARE.InstallDate0 as 'Install Date'
from v_R_System
inner join v_GS_INSTALLED_SOFTWARE on v_GS_INSTALLED_SOFTWARE.ResourceID=v_R_System.ResourceID
inner join v_FullCollectionMembership on v_FullCollectionMembership.ResourceID=v_R_System.ResourceID
where v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 like '%Wireshark%' and v_FullCollectionMembership.CollectionID = 'XXX000XX'

※ v_FullCollectionMembership.CollectionID = ‘XXX000XX’ の ‘XXX000XX’ は絞り込みたいコレクション ID を設定してください。

v_GS_INSTALLED_SOFTWARE.ARPDisplayName0 like ‘%Wireshark%’ の箇所は、 ‘%Wireshark%’ 部分を任意の文字列に変えることで目的のソフトウェアのレポートを抽出できます。(例 : 7-Zip の場合、 ‘%7-Zip%’  となります。% はアスタリスク扱いとなります。)

<表示結果>

上記のように、組織内にインストールされているソフトウェアのインベントリ情報をレポート化できますので、その後の対応を検討できるようになります。

皆さんも上記のクエリを参考に、自組織内のソフトウェアのインストール状況を確認されてみてはいかがでしょうか。