JP2024034404A - 情報処理装置、情報処理方法およびシステム - Google Patents

情報処理装置、情報処理方法およびシステム Download PDF

Info

Publication number
JP2024034404A
JP2024034404A JP2022138615A JP2022138615A JP2024034404A JP 2024034404 A JP2024034404 A JP 2024034404A JP 2022138615 A JP2022138615 A JP 2022138615A JP 2022138615 A JP2022138615 A JP 2022138615A JP 2024034404 A JP2024034404 A JP 2024034404A
Authority
JP
Japan
Prior art keywords
vulnerability
identifier
information
version
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022138615A
Other languages
English (en)
Inventor
竜一 小池
Ryuichi Koike
龍也 上原
Tatsuya Uehara
河英 申
Hayeong Shin
遵 金井
Jun Kanai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Infrastructure Systems and Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Infrastructure Systems and Solutions Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Infrastructure Systems and Solutions Corp filed Critical Toshiba Corp
Priority to JP2022138615A priority Critical patent/JP2024034404A/ja
Priority to US18/174,714 priority patent/US20240070290A1/en
Publication of JP2024034404A publication Critical patent/JP2024034404A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】機器に含まれるソフトウェアを所定の形式で特定する識別子を容易に生成する。【解決手段】本実施形態に係る情報処理装置は、第1サーバから第1脆弱性情報を取得する第1脆弱性情報取得部と、第2サーバから第2脆弱性情報を取得する第2脆弱性情報取得部と、対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得する第1構成情報取得部と、第1構成情報に基づき、第1脆弱性情報から対象ソフトウェアの名称を含む第1識別子を検出し、検出した第1識別子に対応する脆弱性識別子を特定する、スキャナと、第2脆弱性情報に基づき、スキャナにより特定された脆弱性識別子に対応し、かつ対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定する検索部と、特定された第2識別子に含まれるバージョンを、対象ソフトウェアのバージョンに置換することにより、第3識別子を生成する出力部と、を備える。【選択図】図1

Description

本発明の実施形態は、情報処理装置、情報処理方法およびシステムに関する。
日々、世界中で様々な製品の脆弱性についての情報(脆弱性情報)が、公開されたサーバ(汎用サーバ)上で公表されている。製品の製造者は、公表された脆弱性が、自身が製造する製品に含まれているかを判断する必要がある。そのため、日々公表される脆弱性情報を収集して、機器(製品)の情報と比較することで脆弱性を検出する脆弱性監視システムの必要性が高まっている。
汎用サーバ上では、脆弱性と、当該脆弱性が影響を与えるソフトウェアなどの構成要素を示す構成情報が対応している。汎用サーバ上では、構成情報を表すために、CPE(Common Platform Enumeration)と呼ばれる、汎用的かつグローバルな識別子が用いられている。そのため、製造者は、汎用サーバ上のCPEを見ることで、自身が製造した機器に含まれる構成要素の情報を示すCPEと同じCPEが公表されているかを判断でき、公表されている場合、自身が製造した機器にどのような脆弱性が含まれているかを判断できる。そのために、脆弱性監視システムにおいては、機器の構成情報をCPEの所定の形式で記述して格納しておく必要がある。しかし、CPEの形式は複雑であり、CPEの作成には困難が伴うとともに、人手での作成には大きなコスト(時間および費用)がかかる。
特開2020-21309号公報
本発明の実施形態は、機器に含まれるソフトウェアを所定の形式で特定する識別子を容易に生成することを可能にする情報処理装置、情報処理方法およびシステムを提供する。
本実施形態に係る情報処理装置は、プラットフォームに固有の第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得する第1脆弱性情報取得部と、第2サーバから、機器に含まれるソフトウェアを前記ソフトウェアの名称およびバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得する第2脆弱性情報取得部と、脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得する第1構成情報取得部と、前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する、スキャナと、前記第2脆弱性情報に基づき、前記スキャナにより特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定する検索部と、前記検索部により特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する出力部と、を備える。
一実施形態に係る脆弱性監視システムのブロック図。 第1構成情報の一例を示す図。 第1脆弱性情報の一例を示す図。 第2脆弱性情報の一例を示す図。 第2構成情報の一例を示す図。 脆弱性監視システムの処理の一例を示すフローチャート。 一実施形態の第1構成例に係る構成情報変換部のブロック図。 バージョンが無効化された第1構成情報と第1脆弱性データベースにおける情報を示す図。 第1構成情報とバージョンが無効化された第1脆弱性データベースにおける情報を示す図。 構成情報変換部の処理の一例を示すフローチャート。 一実施形態の第2構成例に係る構成情報変換部のブロック図。 一実施形態の第3構成例に係る構成情報変換部のブロック図。 一実施形態の第4構成例に係る構成情報変換部のブロック図。 一実施形態に係る情報処理装置のハードウェア構成を示す図。
以下、図面を参照しながら、本発明の実施形態について説明する。
[脆弱性監視システム1の全体の概要]
図1は、一実施形態に係る情報処理システムである脆弱性監視システム1を示すブロック図である。以下、脆弱性監視システム1の全体の概要を説明する。
脆弱性監視システム1は、脆弱性監視装置2と、固有サーバ6と、汎用サーバ7と、複数種類の機器10_1~10_M(M≧1)を備える。Mは機器10の種類数を表しており、個数を表すものではない。以下、任意の種類iの機器10を機器10_i(i=1~M)と記載する。
脆弱性監視システム1は、出荷前の製品である複数種類の機器10_1~10_Mの構成情報を収集した上で、当該製品に発生し得る脆弱性を常時監視し、脆弱性が発見されると、その旨を脆弱性監視システム1のユーザに通知する。
種類iの機器10_iには種々の機能を実現する1つ以上のソフトウェアがインストールされている。通常、様々な種類の機器10_iが存在しており、それぞれ異なった構成情報を有する。機器10_iは、例えば、PC、またはIoT(Internet of Things)の対象となる機器などである。
構成情報とは、機器10_iがどのような構成要素(ソフトウェア等)で構成されているかを示す情報である。例えば、構成情報は、「機器10_iはソフトウェア1およびソフトウェア2を含む」のような情報である。
あるプラットフォーム(例:OS)に固有のソフトウェアは、例えば、プラットフォームがLinuxである場合、機器10にパッケージという単位でインストールされている。パッケージとは、ソフトウェアの実行ファイル、設定ファイル、ドキュメント等を1つに纏めたものである。Linux以外のプラットフォームにおいても、パッケージに相当する仕組みでソフトウェア一式を管理するのが一般的である。以下、説明の便宜上、あるプラットフォームに固有のソフトウェアを「パッケージ」と記載する場合があるが、これはプラットフォームをLinuxに限定するものではない。
図2は、機器10_1~10_Mの構成情報(第1構成情報)の一例を示す。つまり、図2は、機器10_1~10_Mにインストールされているパッケージの情報(パッケージ情報)の一例を示す。パッケージ情報には、パッケージの名称(パッケージ名)と、パッケージのバージョンが含まれている。パッケージ情報は、プラットフォームが用意した、プラットフォーム独自の識別子(第1識別子)である。つまり、機器10_iに含まれる構成情報は、プラットフォーム固有のものであり、汎用性はない。また、あるパッケージは、当該パッケージのパッケージ名とバージョンによって一意に特定される。
図2の例では、機器10_1に、「バージョン1.3.6」の「パッケージ1」がインストールされている。なお、同一種類の機器10_iにインストールされているパッケージのプラットフォームは、統一されていなくてもよい。以下、説明のために、機器10_1にインストールされているパッケージをパッケージX(対象ソフトウェア)と記載する場合がある。
固有サーバ6は、世界中で日々発見される脆弱性情報(第1脆弱性情報)を蓄積し、公表している。固有サーバ6は、インターネット上に公開されているサーバであり、誰でも内容を閲覧できる。
固有サーバ6は、あるベンダが、自身が提供するプラットフォームのために設けたサーバであり、当該プラットフォームでの利用に特化した内容で脆弱性情報が記述されている。当該ベンダは、当該プラットフォームに帰属する製品に関しては責任を持って管理している。例えば、Linuxのディストリビュータが提供する固有サーバ6には、Linuxにインストールされるパッケージに関しては確実に脆弱性が発見できる情報が蓄積されている。
図3に、固有サーバ6が有する第1脆弱性情報の一例を示す。脆弱性は、脆弱性番号によって一意に特定される。固有サーバ6上では、図3に示されるように、脆弱性番号と、当該脆弱性が与えるパッケージのパッケージ名およびバージョン(範囲)が対応している。例えば、脆弱性番号CVE-2018-XXXXで示される脆弱性は、バージョン1.1.1までのパッケージ1に影響することを示している。
固有サーバ6上では、パッケージ名、影響のあるバージョン(範囲)および脆弱性番号の表記内容には曖昧さや誤りはなく、仮に誤りがあったとしても、即座に修正される可能性が高い。
なお、脆弱性の影響範囲は、「0.5.1~1.1.1」のように上限と下限を伴って定義される場合もある。しかし、現実では、最新バージョン以外のパッケージには脆弱性がある場合が多く、固有サーバ6上では、影響範囲が上限のみによる定義が主流である。以下、現実的な登録内容を前提とし、影響範囲は上限のみによって定義されることとする。
脆弱性番号は、例えばCVE(Common Vulnerabilities and Exposures)である。CVEは、発行年および連番で記述される。CVEは全世界共通であり、固有サーバ6および汎用サーバ7において共通である。
機器10_iと固有サーバ6は、共に第1識別子(パッケージ名とバージョン(範囲))を用いている。これは、固有サーバ6は、主にプラットフォーム固有の脆弱性スキャナ(スキャナ)によって利用されることが想定されているためである。スキャナとは、検査対象プラットフォームのパッケージのパッケージ情報から、当該パッケージに脆弱性が含まれているかを判定するソフトウェアである。
例えば、スキャナの検査対象である機器10_1(対象機器)に、「バージョン1.3.6」の「パッケージ1」であるパッケージXがインストールされているとする。図3に示す情報に基づいて、スキャナは、パッケージXがパッケージ1であること、パッケージXのバージョンが1.1.1より大きいことを特定し、対象機器には脆弱性「CVE-2018-XXXX」が含まれないと判定する。同様に、スキャナは、パッケージXのバージョンが6.0.0より小さいことを特定し、パッケージXには脆弱性「CVE-2021-YYYY」が含まれると判定する。
汎用サーバ7は、世界中で日々発見される脆弱性情報(第2脆弱性情報)を蓄積し、公表している。汎用サーバ7は、インターネット上に公開されているサーバであり、誰でも内容を閲覧できる。
汎用サーバ7は、特定のプラットフォームには依存しておらず、汎用的な情報が記述されている。ここで、「汎用的な情報」とは、人間が読めば理解できる情報であり、特定のプラットフォームにとってのみ有益な情報を含まない情報を指す。そのため汎用サーバ上では、構成情報を表すために、汎用的な識別子(第2識別子)が用いられている。第2識別子は、例えばCPEである。汎用サーバ7は、例えばNVD(National Vulnerability Database)である。以下、第2識別子はCPEであるとして説明する。
CPEは、ある機器に含まれるソフトウェア(パッケージ)などの構成要素を所定の形式で記述した、構成要素を一意に識別する識別子である。例えば、ある機器に含まれる1つのソフトウェアは1つのCPEで記述される。そのため、複数のソフトウェアを含む機器に対しては複数のCPEが対応付けられる。構成要素にはソフトウェア以外に、ハードウェア、OS等も含まれ得る。
CPEは所定の形式(CPE形式)で記述される。CPE形式は、例えば、URI形式である。具体的には、「cpe:/種別:ベンダ名:製品名:バージョン:アップデート:エディション:言語」のように、構成要素を一意に特定するための各要素が記述される。
「種別」には、ハードウェア(h)、OS(o)、アプリケーション(a)等、構成要素のプラットフォームの種別が記述される。「ベンダ名」には、構成要素のベンダの名称が記述される。「製品名」には、構成要素の製品としての名称が記述される。「バージョン」には、構成要素のバージョンを示す特定の数字などが記述される。「アップデート」には、製品のアップデートやサービスパックの情報が記述される。「エディション」には、製品の提供方法が記述される。「言語」には、製品で使用されている言語が記述される。各要素は必要に応じて適宜省略されてもよい。これ以降に任意の要素が続く場合にはアスタリスク(*)で省略してもよい。
CPEは、ルール上は、既存のベンダ名と製品名とを流用した上で、バージョン以降の要素で1つのソフトウェア等を特定するように推奨されている。
図4に、汎用サーバ7が有する第2脆弱性情報を示す。図4に示されるように、汎用サーバ7では、脆弱性の概要と、危険度と、第2識別子で記述された構成情報が紐づけされた脆弱性情報が蓄積される。脆弱性情報は、脆弱性番号(CVE)によって一意に特定される。脆弱性の概要は自然言語で書かれている。脆弱性の危険度は、例えば、CVSSによって評価される。そして、1つの脆弱性に、CPE形式で既述された構成情報が対応している。つまり、汎用サーバ7上では、脆弱性(脆弱性番号)と、当該脆弱性が影響を与える、第2識別子で記述された構成情報が対応している。
機器10_iに含まれる第1構成情報を、第2識別子で記述できる者は、汎用サーバ7上の第2脆弱性情報から、機器10_iに含まれる脆弱性を特定することができる。例えば、機器10_iにCPE1で示される構成要素が含まれていることを知る者は、機器10_iに脆弱性「CVE-2018-XXXX」が含まれていることを知ることができる。
脆弱性監視装置2は、構成情報変換部3と、記憶部4と、脆弱機器判定部5を備える。脆弱性監視装置2は、出荷前の機器10_1~10_Mから構成情報を収集して保存し、機器10に脆弱性が発見された場合には警告を脆弱性監視システム1のユーザに通知する。具体的には、汎用サーバ7上および/または固有サーバ6上で、脆弱性情報が公表されると、当該脆弱性に対応する識別子から、当該脆弱性が影響を与える構成要素を特定し、当該構成要素が、機器10_1~10_Mに含まれている場合、警告を脆弱性監視システム1のユーザに通知する。
しかしながら、既述のように、機器10_iの第1構成情報は、第1識別子で記述されているため、そのままでは汎用サーバ7上で公表される第2脆弱性情報と対応しない。そこで、機器10_1~10_Mから収集した第1構成情報の第1識別子を、第2識別子と同じ形式(CPE形式)で記述された第3識別子(CPE’と記載する)に変換した第2構成情報を生成する必要がある。ここで、固有サーバ6上の第1脆弱性情報を用いた脆弱性検出は、機器10_iから取得した第1構成情報を変換せずそのまま用いて行うことができ、その動作は自明であるため、説明を適宜省略する。
構成情報変換部3は、まず、機器10_1~10_Mから第1構成情報を収集する。様々な種類の機器10が存在するため、構成情報変換部3は、特定プラットフォームに依存せず第1構成情報を収集する。
そして、構成情報変換部3は、収集した第1構成情報を、第3識別子(CPE’)で記述された第2構成情報に変換し、出力する。具体的な変換方法は後述する。
図5は、構成情報変換部3によって出力される第2構成情報の一例である。図5に示されるように、機器10_iの構成情報を予め第3識別子で記述しておくことで、機器10_iの脆弱性の検出に、汎用サーバ7上の第2脆弱性情報を用いることができる。CPE’には後述するように、CPE検索部312(図7参照)により特定されたCPE(第2識別子)のバージョン部分を、対象となる機器10_iにおけるソフトウェア(対象ソフトウェア)のバージョンに置換することによって生成されることができる。CPE’は、対象となる対象となる機器10_iにおけるソフトウェアを、ソフトウェアの名称とバージョンとを含む所定の形式(本実施形態ではCPEの形式)で記述した第3識別子に対応する。
記憶部4は、構成情報変換部3によって出力された第2構成情報を格納する。記憶部4があることにより、機器10_iが出荷されておりかつユーザ(製造者)の手元に機器10_iの実物が無い場合においても、機器10_iの第2構成情報を過去に遡って確認できる。なお、記憶部4は、第1構成情報を格納していてもよい。
脆弱機器判定部5は、汎用サーバ7を常時監視している。汎用サーバ7において新たな第2脆弱性情報が公表された場合、脆弱機器判定部5は、第2脆弱性情報を取得する。そして、脆弱機器判定部5は、第2脆弱性情報に含まれる第2識別子と、記憶部4に格納されている第2構成情報に含まれる第3識別子を比較する。一致する第2識別子が第2脆弱性情報に存在すれば、当該第3識別子を含む第2構成情報の機器10_iに脆弱性が含まれると判定する。なお、脆弱機器判定部5は、第1構成情報と第1脆弱性情報を用いて、上記と同様に機器10_iの脆弱性検出を行ってもよい。
図6は、脆弱性監視装置2が行う処理のフローチャートである。以下、図6を参照して、脆弱性監視装置2が行う処理を説明する。
まず、構成情報変換部3が、機器10_iから、機器10_iの全ての第1構成情報を取得する(ステップS1)。
次に、構成情報変換部3が、第1構成情報を第2構成情報に変換する(ステップS2)。
次に、構成情報変換部3が、第2構成情報を記憶部4に格納する(ステップS3)。
次に、脆弱機器判定部5が、記憶部4に格納されている第2構成情報に含まれる第3識別子と、汎用サーバ7上の第2脆弱性情報に含まれる第2識別子を比較する。両者が一致した場合、当該第3識別子を含む第2構成情報を含む機器10_iに脆弱性が含まれると判定する(ステップS4)。
以上説明したように、脆弱性監視システム1によれば、第1識別子で記述された構成情報を有する機器10_iの脆弱性を、第3識別子で記述された第2脆弱性情報を用いて検出できる。
<構成情報変換部3>
[第1構成例]
図7は、一実施形態の第1構成例に係る情報処理装置である構成情報変換部3のブロック図である。以下、構成情報変換部3の構成及び構成情報変換部3が行う処理の詳細を説明する。
既述のように、構成情報変換部3は、機器10_1~10_Mから取得した第1構成情報を第2構成情報に変換するための装置である。
第1構成情報を、CPEで記述された第2構成情報に変換するためには、汎用サーバ7が公開しているCPE辞書(CPE dictionary)を用いる手法がある。CPE辞書には、パッケージ情報とCPEの対応が記載されている。しかし、以下に示す歴史的な経緯から、CPE辞書には以下のような問題がある。
第一に、CPE辞書には大量のCPEが登録されており、どのCPEが適切なCPEなのか、判断することは難しい。ここで、「適切なCPE」とは、過去に渡って汎用サーバ7で常用されてきた実績のあるCPEを指す。適切なCPEは、下記に示すように、必ずしも記述形式が正しいとは限らない。
第二に、ベンダ名やソフトウェア名の表記が正規化されておらず、通称で表記されている等、表記揺れが大量に存在するため、どのCPEが適切なCPEなのか、判断することが難しい。また、ベンダ名やソフトウェア名は買収や社名変更により変更されることがあるが、過去のCPEとの互換性を考慮して、旧来のベンダ名やソフトウェア名で記述されているCPEもある。
第三に、CPEの記述には厳密なチェックが行われていないため、誤記を含むCPEが存在する。また、過去のCPEとの互換性を考慮して、誤記を含むCPEが利用され続けている場合もある。
以上の理由から、CPE辞書を用いても、第1構成情報を変換することは難しい。また、CPEの記述方法を熟知している者でも、適切なCPEを記述できるわけではない。上記の問題を鑑みて、構成情報変換部3は、固有サーバ6上の第1脆弱性情報を用いて第1構成情報の変換を行うように構成されている。
構成情報変換部3は、第1脆弱性情報取得部301と、第1脆弱性DB302と、第2脆弱性情報取得部303と、CPE候補DB304と、第1構成情報取得部305と、名称識別部306と、バージョン識別部307と、バージョン無効化部308と、DB内バージョン無効化部309と、スキャナ選択部310と、スキャナ311と、CPE検索部312(検索部)と、CPE出力部313(出力部)と、第1構成情報DB314を備える。
第1脆弱性情報取得部301は、固有サーバ6から、固有サーバ6上に公表されている第1脆弱性情報を取得する。取得する第1脆弱性情報は、図3に示されるような、固有サーバ6が公開している情報そのものでもよい。第1脆弱性情報取得部301は、固有サーバ6から定期的に第1脆弱性情報を取得してもよいし、固有サーバ6上で第1脆弱性情報が更新される度に第1脆弱性情報を取得してもよい。
第1脆弱性DB302は、第1脆弱性情報取得部301によって取得された第1脆弱性情報を格納する。第1脆弱性DB302は、予め初期化されており、第1脆弱性情報取得部301によって都度第1脆弱性情報が追加更新される。これは、固有サーバ6上の情報が日々変化するためである。
以下、第1脆弱性DB302には、図3に示される情報が格納されているとする。第1脆弱性DB302は、スキャナ311が、機器10_iの第1構成情報から脆弱性を検出する際に用いられるデータベースである。パッケージ名およびバージョンが分かれば、第1脆弱性DB302の情報を参照することで、パッケージが内包する脆弱性のCVEを特定できる。
なお、第1脆弱性DB302の保存形式は、第1脆弱性DB302を利用するスキャナ311に依存する。保存形式は、例えば、SQLite3形式、CSV(Comma Separated Value)形式である。後述するように、スキャナ311は既存のスキャナを流用してもよく、第1脆弱性情報取得部301として、既存のスキャナに付属の情報取得プログラムを流用しても良い。その際は、スキャナやプラットフォームの種類ごとに第1脆弱性DB302が複数作成されてもよい。
第2脆弱性情報取得部303は、汎用サーバ7から、汎用サーバ7上に公表されている第2脆弱性情報を取得する。取得する第2脆弱性情報は、図4に示されるような、汎用サーバ7が公開している情報そのものでもよい。或いは、第2脆弱性情報取得部303は、汎用サーバ7がWebサイトとして公開している情報をパースして取り込んでも良いし、プログラム処理しやすいようにJSONやXMLなど構造化された状態で公開されている第2脆弱性情報を取得してもよい。第2脆弱性情報取得部303は、汎用サーバ7から定期的に第2脆弱性情報を取得してもよいし、汎用サーバ7上で第2脆弱性情報が更新される度に第2脆弱性情報を取得してもよい。
CPE候補DB304は、第2脆弱性情報取得部303によって取得された第2脆弱性情報を格納する。CPE候補DB304は予め初期化されており、第2脆弱性情報取得部303によって都度第2脆弱性情報が追加更新される。これは、汎用サーバ7上の情報は日々変化するためである。
以下、CPE候補DB304には、図4に示される情報が格納されているものとする。CPE候補DB304は、後述するCPE検索部312が、CVEからCPEを特定する際に用いるデータベースであり、少なくともCVEとCPEとのペアを格納していればよい。そのため、CPE候補DB304は、処理速度の向上や保存容量の削減を目的として、CVEとCPE以外の要素(図4に示される脆弱性の概要、危険度等)を適宜削除してもよい。1つのCVEに対応するCPEの個数は1つのみならず、複数の場合もあり得る。
第1構成情報取得部305は、機器10_iから、機器10_iに含まれる全ての第1構成情報(パッケージ情報)を取得する。第1構成情報取得部305は、出荷前の機器10_iとネットワークを通じて接続されており、任意のタイミングで機器10_iから第1構成情報を収集する。第1構成情報取得部305は、機器10_iと無線アクセスポイントを通じて無線で接続されていてもよいし、工場などに設置されたイーサネットを含む有線で接続されていてもよい。また、第1構成情報取得部305は、機器10_iの製造者等から間接的に第1構成情報を収集してもよい。
第1構成情報取得部305は、第1構成情報の取得にあたって、まずは機器10_iのプラットフォームを判別し、その後、適切な方法で機器10_iにアクセスして第1構成情報を得る。プラットフォームがLinuxであれば、第1構成情報取得部305は、OSのパッケージ管理コマンドを利用しても良いし、インストール済みのソフトウェア管理ファイルを参照しても良い。プラットフォームがWindowsであれば、第1構成情報取得部305は、レジストリの内容を確認しても良い。また、第1構成情報取得部305は、機器10のプラットフォームの種類を第1構成情報DB314に格納する。
第1構成情報DB314は、機器10_iの第1構成情報を格納する。後述するスキャナ311とCPE検索部312は、パッケージのCPEを特定する処理を行うが、その処理は、第1脆弱性DB302とCPE候補DB304の内容に依存する。両データベースの内容は、固有サーバ6および汎用サーバ7の内容と共に日々変化していくため、後日、処理をやり直すこともあり得る。そのために、第1構成情報取得部305は、これまでに取得した機器の第1構成情報を第1構成情報DB314に格納しておいてもよい。
名称識別部306は、第1構成情報取得部305によって取得された第1構成情報のうち、パッケージ名を識別する。
バージョン識別部307は、第1構成情報取得部305によって取得された第1構成情報のうち、パッケージのバージョンを識別する。名称識別部306とバージョン識別部307は、パッケージ名とバージョンを第1構成情報DB314に格納する。
スキャナ311は、第1構成情報(パッケージ名およびバージョン)が入力されると、固有サーバ6上の第1脆弱性情報を参照して、当該第1構成情報が示すパッケージに含まれる脆弱性の有無を判定するスキャナである。
スキャナ311は独自に実装しても良いし、商用あるいはオープンソースなどの既存のスキャナを流用してもよい。既存のスキャナを利用する場合は、プラットフォーム毎に異なった既存のスキャナが必要となる。そのため、スキャナ311は、最大で機器10_1~10_Mに含まれるパッケージのプラットフォームの種類だけ必要となる。以下、スキャナ311は、既存のスキャナを流用することを想定して説明する。
スキャナ311には、固有の形式で第1構成情報を入力する必要がある。例えば、第1構成情報の入力を、JSON形式のファイルで受領するスキャナ311もあれば、XML形式のファイルで受領するスキャナ311もある。また、第1構成情報の入力を、プロセス間通信で受領するスキャナ311もあれば、TCP通信を通じて受領するスキャナ311もある。
スキャナ選択部310は、第1構成情報DB314に基づき、機器10_iのプラットフォームを判別し、複数あるスキャナ311の中から機器10_iの脆弱性を判定可能なスキャナ311を決定する。また、後述するバージョンを無効化する手法も併せて決定する。
バージョン無効化部308は、スキャナ311が行う脆弱性スキャンの前準備として、スキャナ311に入力される機器10_iの第1構成情報に含まれるバージョンを無効化する。バージョン無効化部308は、スキャナ311に入力される第1構成情報のバージョンを、バージョンが取り得る値より小さい値に書き替える。本実施形態では、一例として、図8に示されるように、「0.0.0」に強制的に書き替える。バージョン無効化部308は、スキャナ311に固有の、第1構成情報の入力方法に従って、スキャナ311に対応する形式のまま、第1構成情報を書き換える。
例えば、スキャナ選択部310によって選択されたスキャナ311が、ファイル経由で情報を入力する仕様であれば、バージョン無効化部308は、事前にファイルの内容を書き換える。或いは、スキャナ選択部310によって選択されたスキャナ311が、何らかの通信を伴う仕様であれば、バージョン無効化部308は、通信内容を強制的に変更する。
上記のような処理を行うことで、一般的には、パッケージのバージョンが0.0.0よりも小さくなることはないため、あるパッケージの全てのバージョンについての脆弱性が検出される。つまり、本来であればパッケージ名およびバージョンで判定されるはずの脆弱性の有無が、パッケージ名だけで判定されるようになる。
例えば、機器10_1に「バージョン1.3.6」の「パッケージ1」であるパッケージXがインストールされているとする。本来であれば、スキャナ311には、パッケージ名として「パッケージ1」、バージョンとして「1.3.6」が入力される。そして、既述のように、スキャナ311は、パッケージXがパッケージ1であり、そのバージョンが「6.0.0」より小さいことを特定し、パッケージXには脆弱性「CVE-2021-YYYY」が含まれると判定する(図3参照)。
しかし、バージョン無効化部308により、バージョンとして「0.0.0」が入力されると、スキャナ311は、パッケージXがパッケージ1であり、そのバージョンが「1.1.1」および「6.0.0」より小さいということを特定する。そのため、パッケージXには、脆弱性「CVE-2018-XXXX」と脆弱性「CVE-2021-YYYY」が含まれると判定される(図8参照)。
上記のように、入力されるパッケージのバージョンが「0.0.0」であると、「パッケージ1」の既知脆弱性が全て検出されることになる。また、書き替えるバージョンは0.0.0である必要は無く、バージョン番号として一般的に利用されない程度に十分に小さな数であればよい。
DB内バージョン無効化部309は、バージョン無効化部308とは別の方法でバージョンを無効化する。DB内バージョン無効化部309は、第1脆弱性DB固有の保存形式(つまりスキャナ311に対応する形式)に従い、脆弱性の影響範囲の上限値、すなわち脆弱性が影響するバージョンの範囲の上限値を、バージョンが取り得る値より大きい値に書き替える。本実施形態では、一例として、図9に示すように、「~9999」に強制的に書き替える。これによりバージョンの範囲を拡張する。
上記のような処理を行うことで、一般的には、パッケージのバージョンがこれほど大きな値になることはないため、あるパッケージの全てのバージョンについての脆弱性が検出される。つまり、本来であればパッケージ名およびバージョンで判定されるはずの脆弱性の有無が、パッケージ名だけで判定されるようになる。
例えば、機器10_1に「バージョン1.3.6」の「パッケージ1」であるパッケージXがインストールされているとする。既述のように、本来であれば、パッケージXには脆弱性「CVE-2021-YYYY」が含まれると判定される(図3参照)。
しかし、DB内バージョン無効化部309により、第1脆弱性DB302上の第1脆弱性情報のバージョン範囲が「~9999」に書き換えられると、スキャナ311は、パッケージXがパッケージ1であり、そのバージョンが9999より小さいということを特定する。そのため、パッケージXには、脆弱性「CVE-2018-XXXX」と脆弱性「CVE-2021-YYYY」が含まれると判定される(図9参照)。
上記のように、第1脆弱性情報のバージョン範囲が「~9999」であると、「パッケージ1」の既知脆弱性が全て検出されることになる。
なお、DB内バージョン無効化部309は、第1脆弱性DB302の値を直接書き替えずに、スキャナ311の第1構成情報の読み込みを動的にフックして、当該第1構成情報のバージョン部分を書き替えても良い。また、書き替えるバージョン範囲(の上限)は9999である必要は無く、バージョン番号として一般的に利用されない程度に十分に大きな数であれば良い。例えば、第1脆弱性DB302が扱える整数の最大値などでもよい。
バージョンを無効化するために、バージョン無効化部308またはDB内バージョン無効化部309のどちらを用いるかは、スキャナ選択部310によって決定される。例えば、第1脆弱性情報が上限と下限を伴って定義される場合、DB内バージョン無効化部309を用いてバージョンを無効化するように決定されてもよい。
なお、スキャナ311が完全に独自実装であり、入力される第1構成情報や第1脆弱性DBの内容を書き替えなくても、バージョンを無視してスキャンが可能であれば、DB内バージョン無効化部309およびバージョン無効化部308は動作しない。
いずれにせよ、パッケージXがインストールされている機器10_1に、バージョンを無効化した上で脆弱性スキャンを行うことにより、パッケージXの全てのバージョンに含まれる既知脆弱性が検出されることになる。
また、日々更新される固有サーバ6の内容に伴い、第1脆弱性DB302の内容も日々変化する。そのため、スキャナ311は、一度脆弱性スキャンを行った後でも、後日脆弱性スキャンを再度行ってもよい。その場合、第1構成情報DB314に格納された第1構成情報が用いられてもよい。
CPE検索部312は、CPE候補DB304(図4参照)におけるCVEの行を検索して、スキャナ311によって取得されたCVEが存在するかを判定する。CVEが存在した場合には、当該CVEに対応するCPEを特定する。例えば、パッケージXに含まれていたCVEは「CVE-2018-XXXX」と「CVE-2021-YYYY」であるので、「CPE1」と「CPE2」を特定する。
上記のCPE検索部312の処理は、CPE候補DB304の内容に依存する。日々更新される汎用サーバ7の内容に伴い、CPE候補DB304の内容も日々変化する。そのため、CPE検索部312は、CPE候補DB304内に、スキャナ311によって取得されたCVEが存在しないと一度判定しても、後日変更されたCPE候補DB304の内容に基づき、上記処理を再度行ってもよい。またその際、スキャナ311は、第1構成情報DB314に格納された第1構成情報に基づき、脆弱性スキャンを再度行ってもよい。
CPE出力部313は、CPE検索部312により特定されたCPEを、パッケージのバージョンを考慮したCPEに整形した上で記憶部4に格納する。CPE1、CPE2は、「パッケージ1」の過去のバージョンが有していた脆弱性が影響を与える構成要素を記述するCPEに過ぎない。そのため、特定されたCPEのバージョン部分は、機器10_1に実際にインストールされているパッケージXのバージョンとは異なる可能性が高い。
そこで、CPE出力部313は、CPEのバージョン部分を本来のバージョンに置き換える整形処理を行う。例えば、CPE1が「cpe:/a:vendor1:package1:10:*」と記述されるとする。CPE出力部313は、CPE1「cpe:/a:vendor1:package1:10:*」のバージョン「10」を「1.3.6」に置換して、CPE1’「cpe:/a:vendor1:package1:1.3.6:*」を生成する。同様にして、CPE出力部313は、CPE2のバージョン部分を本来のバージョンに置換して、CPE2’を生成する。CPE出力部313は、生成したCPE1’、CPE2’を出力する。CPE出力部31により生成されるCPE1’、CPE2’は、機器10_1にインストールされている複数のパッケージのそれぞれを、パッケージ名とバージョンとを含む所定の形式(CPEの形式)により特定した第3識別子に対応する。
なお、出力されたCPE1’、CPE2’は、出力された時点で、汎用サーバ7上で使用されていないCPEであってもよい。既述のように、CPEは、ルール上は、既存のベンダ名と製品名とを流用した上で、バージョン以降の要素で1つのソフトウェア等を特定するように推奨されている。そのため、パッケージXに新たな脆弱性が発見された場合、その脆弱性は、CPE1’またはCPE2’と一致するCPEで記述される可能性が高い。
また、CPE検索部により特定されるCPEが複数の場合に、複数のCPEの中にはパッケージ名とバージョンとを含まないCPEも存在し得る。このようなCPEについてはバージョン部分の置き換えを行わずに、CPEを出力すればよい。
以上のように、CPE出力部313によって適切なCPEの可能性が高いCPE(CPE1’、CPE2’等)が出力される。出力されたCPEは、記憶部4で機器10_1と対応付けられ、保存される。
以上の処理により、1つの第1構成情報(一組のパッケージ名とバージョン)からCPEが特定できたことになる。これを、機器10_iに含まれる全てのパッケージの第1構成情報について繰り返し、機器10_iにインストールされている全てのパッケージのCPE特定および保存処理を行う。これによって、図5に示されるような第2構成情報が生成される。
図10は、構成情報変換部3が実行する処理を説明するフローチャートである。以下、図を参照して構成情報変換部3が実行する処理を説明する。
まず、構成情報変換部3は、第1脆弱性DB302およびCPE候補DB304を初期化する(ステップS21)。
次に、第1脆弱性情報取得部301および第2脆弱性情報取得部303が、それぞれ固有サーバ6および汎用サーバ7から第1脆弱性情報および第2脆弱性情報を取得する(ステップS22)。取得された第1脆弱性情報および第2脆弱性情報は、それぞれ第1脆弱性DB302およびCPE候補DB304に格納される。
次に、第1構成情報取得部305が、機器10_iから、機器10_iに含まれる全てのパッケージの第1構成情報を取得する(ステップS23)。
次に、名称識別部306およびバージョン識別部307が、第1構成情報取得部305によって取得された第1構成情報から、それぞれパッケージの名称およびバージョンを識別する(ステップS24)。
次に、バージョン無効化部308、DB内バージョン無効化部309または独自実装されたスキャナ311によってバージョンを無効化された状態で、スキャナ311が、第1構成情報のスキャンを行う(ステップS25)。
次に、スキャンの結果、スキャナ311が、上記のパッケージが過去に有していた脆弱性(CVE)をバージョンに拘わらず、全て検出する(ステップS26)。
次に、CPE検索部312が、CPE候補DB304において、検出されたCVEが存在するか判定する(ステップS27)。
検出されたCVEが存在すると判定された場合(ステップS27:Yes)、当該CVEに対応するCPEのバージョン部分を、実際のパッケージのバージョンに置換して出力する(ステップS28)。
検出されたCVEが存在しないと判定された場合、ステップS29に移行する(ステップS27:No)。
次に、機器10_iにインストールされているパッケージのうち、未処理のパッケージが無いかを判定する(ステップS29)。
未処理のパッケージがある場合、ステップS24に戻って、未処理のパッケージについてステップS24~S28までの処理を行う(ステップS29:No)。
未処理のパッケージが無い場合、処理を終了する(ステップS29:Yes)。
なお、ステップS27で、検出されたCVEが存在しないと判定された場合、後日、新たなCPE候補DB304および第1脆弱性DB302を用いて、改めてステップS21~S27を実行してもよい。
以上説明したように、一実施形態の第1構成例によれば、第1識別子で記述された第1構成情報を、適切な第3識別子(CPE’)で記述された第2構成情報に変換することができる。
[第2構成例]
固有サーバ6は、同一のプラットフォームに対して1つ設けられるが、プラットフォームによって、同一プラットフォームと見なす粒度は様々である。例えば、OSが大幅に変更になっても長期に渡り同一と見做される場合もあれば、細かなリリース毎に別のプラットフォームと見做される場合もある。後者の場合には、1つの固有サーバ6の第1脆弱性情報だけを用いると、短い期間の間に発見された脆弱性しか検出されない可能性がある。
例えば、あるベンダが、自身が提供しているあるOSについて、既存のバージョンである「OS ver1」に加えて、新たに「OS ver2」をリリースしたとする。この場合、当該ベンダは、「OS ver1」に対応する固有サーバ6に加えて、新たに「OS ver2」に対応する固有サーバ6を用意する。そして、「OS ver2」がリリースされる以前に、「バージョン3」の「パッケージ1」が既に当該OSに導入されている場合、「OS ver2」向けの固有サーバ6には、「バージョン3」以前のバージョンのパッケージ1の脆弱性情報が含まれない可能性が高い。
よって、パッケージの過去のバージョンの脆弱性を全て検出するためには、最新のプラットフォーム向けに設けられた固有サーバ6(およびそれに基づく第1脆弱性DB)だけではなく、過去のプラットフォーム向けに設けられた固有サーバ6を参照する必要がある。
第1構成例では、固有サーバ6は、プラットフォームのリリース等によって増加しないことを前提としていた。第2構成例では、固有サーバ6がプラットフォームのリリース等によって増加する場合の処理を説明する。
図11は、一実施形態の第2構成例に係る情報処理装置である構成情報変換部3Aのブロック図である。既述の構成例と同じ名称または機能の要素には同じ符号を付している。以後、変更または追加された事項を除き説明を省略する。
構成情報変換部3Aは、第1脆弱性DB切替部315を備える。第1脆弱性DB切替部315は、スキャナ311によるバージョンを無視した脆弱性スキャンの精度を向上させる。
第1脆弱性DB切替部315は、スキャナ311が用いる第1脆弱性DB302を、異なるプラットフォーム(即ち過去のプラットフォーム)向けの第1脆弱性DB302と切り替えて、より多くの脆弱性が検出されるようにする。
例えば、第1脆弱性DB切替部315は、スキャナ311が読み込む第1脆弱性DB302のファイルをシンボリックリンクで置き換えてもよいし、引数を書き替えて異なるファイルを読み込ませてもよい。同一形式であり、スキャナ311が矛盾なく読込可能な第1脆弱性DB302であれば、第1脆弱性DB切替部315によって切り替えられることが可能である。換言すれば、本実施形態においては、スキャナ311が矛盾なく読込可能な複数の第1脆弱性DB302がある場合、当該複数の第1脆弱性DB302は同一プラットフォームの第1脆弱性DB302と見做すということである。
以上説明したように、一実施形態の第2構成例によれば、固有サーバ6が、プラットフォームのリリース等によって増加した場合であっても、パッケージの過去の全てのバージョンの脆弱性を検出することができる。
[第3構成例]
あるパッケージに脆弱性が発見された場合には、1種類のCPEにのみ関連がある(つまり、CVEとCPEが一対一で対応している)とされるのが好ましい。
一方で、世の中にはパッケージを1つの部品として組み込んでいるOSやハードウェアなどが存在する。この場合、当該パッケージに脆弱性が発見されると、当該パッケージを用いているOSやハードウェアにも脆弱性があると見做されることがある。
例えば、脆弱性「CVE-2022-XXXX」は「vendor」社が開発したパッケージ「package1」の「バージョン1」に影響を与える場合、汎用サーバ7上では、以下のような内容が列挙されている。
脆弱性番号
CVE-2022-XXXX
概要
この脆弱性はpackage1に関する脆弱性であり・・・
影響を受ける構成要素(CPEリスト)
cpe:/a:vendor:package1:1:*
cpe:/o:vendor:os_system:2:*
cpe:/h:vendor:hardware1:1:*
上記のように、影響を受ける構成要素(CPEリスト)には、脆弱性の根本的な原因であるパッケージ「cpe:/a:vendor1:package1:1:*」以外にも、「package1」を用いているOS「cpe:/o:vendor2:os_system:2:*」やハードウェア「cpe:/h:vendor3:hardware1:1:*」も列挙されることになる。
しかしながら、脆弱性管理の視点からは、当該パッケージを用いているOSやハードウェアを特定したいケースは稀であり、根本的な脆弱性原因「cpe:/a:vendor1:package1:1:*」を特定したいケースが殆どである。
また、上記の例以外でも、1つのCVEに対して、適切なCPE以外に、適切でないCPEが複数列挙されることが考えられる。
このような汎用サーバ7のWeb情報を元に、第2脆弱性情報取得部303がCPE候補DB304に格納されている第2脆弱性情報を追加更新すると、1つのCVEに対して複数のCPEが対応付けられることになる。そのため、記憶部4に格納される第2構成情報が冗長なものになり、また重要でない脆弱性も脆弱機器判定部5によって検出されるようになる。
第1構成例および第2構成例では、汎用サーバ7上では、CVEとCPEが一対一で対応していることを前提としていた。第3構成例では、CVEとCPEが一対多で対応する場合に優先度の高いCPEを選択する処理を説明する。
図12は、一実施形態の第3構成例に係る情報処理装置である構成情報変換部3Bのブロック図である。既述の構成例と同じ名称または機能の要素には同じ符号を付している。以後、変更または追加された事項を除き説明を省略する。
構成情報変換部3Bは、優先CPE選択部316と、劣後CPE排除部317を備える。
優先CPE選択部316は、より優先度の高いCPEを特定可能なCPE候補DB304の更新をサポートする。優先CPE選択部316は、CPE候補DB304が更新された後、当該CPE候補DB304を優先CPEのみで構成されたCPE候補DB304に書き換える。
具体的には、まず、優先CPE選択部316は、CPE候補DB304をスキャンして、複数のCPEに対応付けられているCVEを検索する。検索の結果、該当するCVEが存在した場合には、当該CVEをキーに、汎用サーバ7のWeb情報を参照して、CPEリストの一番上に記載されているCPEを優先CPEとする。つまりCPEリストのCPEをリストの順番に並べた場合の先頭のCPEを優先CPEとする。そして、優先CPE選択部316は、当該CVEに対応付けられたCPEのうち優先CPE以外のCPEを削除する。
Webサイトは人間が閲覧するという性質上、重要な意味合いを持つ脆弱性から順に列挙されるケースが多く、通常は上記のように、最初に脆弱性の根本的な原因となったパッケージ、続いてそのパッケージを含むOSとハードウェアというような順序で列挙される。そのため、CPEリストの一番上に記載されているCPEが所望の、適切なCPEである可能性が高い。
また、汎用サーバ7が配布しているJSONまたはXMLなどの構造化された脆弱性情報(第2脆弱性情報)から、CPE候補DB304に格納されている第2脆弱性情報が追加更新されると、CPE候補DB304内でCPE掲載順序が不定になる場合もある。そのため、優先CPEの選択は、Webに記載されている汎用サーバ7の脆弱性情報に基づいて行われる。
上記処理の後、CPE検索部312が、優先CPE選択部316が書き換えたCPE候補DB304を利用してCPE検索を行うことで、1つのCVEに対して脆弱性の根本原因となっているCPEのみが特定されるようになる。
なお、CPE候補DB304を直接書き替えない方式もありうる。例えば、CPE検索部312がCPE候補DB304を用いてCPEを特定する毎に、優先CPE選択部316を参照して、特定されたCPEが優先CPEでなければ無視する等の処理を行ってもよい。
以上説明したように、一実施形態の第3構成例によれば、スキャナ311によって特定されたCVEに対して、所望のまたは優先度の高いCPEのみを対応付けることができる。またこれにより、第2構成情報が冗長化することを防ぐことができる。
[第4構成例]
1つのパッケージに対して複数の脆弱性が発見された際には、それぞれの脆弱性からCPEが特定される。一方で、脆弱性監視システム1の運用が進むにつれて、特定のCPEが付与されている場合には、その他のCPEが誤りまたは不要という知見が得られる場合がある。
上記の知見が得られた後も、1つのパッケージに対して複数のCPEを対応付けておくことは、記憶部4に格納される第2構成情報を冗長なものにする。第4構成例では、そのような冗長なCPEを予め排除する処理について説明する。
図13は、一実施形態の第4構成例に係る情報処理装置である構成情報変換部3Cのブロック図である。既述の構成例と同じ名称または機能の要素には同じ符号を付している。以後、変更または追加された事項を除き説明を省略する。
構成情報変換部3Cは、劣後CPE排除部317を備える。劣後CPE排除部317は、事前に指定されたCPEが選択された場合に、それ以外のCPEを排除する。
劣後CPE排除部317は、CPE検索部312の処理が完了した後に、事前にユーザによって指定されたCPEが、CPE検索部312によって選択されたCPEに含まれるか否かを判定する。指定されたCPEが含まれている場合には、それ以外のCPEを排除する。
以上説明したように、一実施形態の第4構成例によれば、特定のCPEが付与されている場合には、予め当該特定のCPE以外のCPEを排除することで、第2構成情報が冗長化することを防ぐことができる。また、CPE出力部313の処理負荷を低減することができる。
(ハードウェア構成)
図14は、各実施形態に係る情報処理装置のハードウェア構成を示す。情報処理装置は、コンピュータ装置600により構成される。コンピュータ装置600は、CPU601と、入力インタフェース602と、表示装置603と、通信装置604と、主記憶装置605と、外部記憶装置606とを備え、これらはバス607により相互に接続されている。
CPU(中央演算装置)601は、主記憶装置605上で、コンピュータプログラムである情報処理プログラムを実行する。情報処理プログラムは、情報処理装置の上述の各機能構成を実現するプログラムのことである。情報処理プログラムは、1つのプログラムではなく、複数のプログラムやスクリプトの組み合わせにより実現されていてもよい。CPU601が、情報処理プログラムを実行することにより、各機能構成は実現される。
入力インタフェース602は、キーボード、マウス、及びタッチパネルなどの入力装置からの操作信号を、情報処理装置に入力するための回路である。入力インタフェース602は各実施形態に係る情報処理装置の入力部に対応する。
表示装置603は、情報処理装置から出力されるデータを表示する。表示装置603は、例えば、LCD(液晶ディスプレイ)、有機エレクトロルミネッセンスディスプレイ、CRT(ブラウン管)、又はPDP(プラズマディスプレイ)であるが、これに限られない。コンピュータ装置600から出力されたデータは、この表示装置603に表示することができる。表示装置603は各実施形態に係る情報処理装置の出力部に対応する。
通信装置604は、情報処理装置が外部装置と無線又は有線で通信するための回路である。データは、通信装置604を介して外部装置から入力することができる。外部装置から入力したデータを、主記憶装置605や外部記憶装置606に格納することができる。
主記憶装置605は、情報処理プログラム、情報処理プログラムの実行に必要なデータ、及び情報処理プログラムの実行により生成されたデータなどを記憶する。情報処理プログラムは、主記憶装置605上で展開され、実行される。主記憶装置605は、例えば、RAM、DRAM、SRAMであるが、これに限られない。各実施形態に係る情報処理装置の各記憶部又はデータベースは、主記憶装置605上に構築されてもよい。
外部記憶装置606は、情報処理プログラム、情報処理プログラムの実行に必要なデータ、及び情報処理プログラムの実行により生成されたデータなどを記憶する。これらの情報処理プログラムやデータは、情報処理プログラムの実行の際に、主記憶装置605に読み出される。外部記憶装置606は、例えば、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。情報処理装置の各記憶部又はデータベースは、外部記憶装置606上に構築されてもよい。
なお、情報処理プログラムは、コンピュータ装置600に予めインストールされていてもよいし、CD-ROMなどの記憶媒体に記憶されていてもよい。また、情報処理プログラムは、インターネット上にアップロードされていてもよい。
また、情報処理装置は、単一のコンピュータ装置600により構成されてもよいし、相互に接続された複数のコンピュータ装置600からなるシステムとして構成されてもよい。
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
本実施形態は、以下のように構成することもできる。
[項目1]
プラットフォームに固有の第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得する第1脆弱性情報取得部と、
第2サーバから、機器に含まれるソフトウェアを前記ソフトウェアの名称およびバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得する第2脆弱性情報取得部と、
脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得する第1構成情報取得部と、
前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する、スキャナと、
前記第2脆弱性情報に基づき、前記スキャナにより特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定する検索部と、
前記検索部により特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する出力部と、
を備えた情報処理装置。
[項目2]
取得した前記第1構成情報における前記対象ソフトウェアのバージョンの値を、前記バージョンが取り得る値より小さい値に書き替えるバージョン無効化部をさらに備え、
前記第1脆弱性情報に含まれる前記第1識別子は前記ソフトウェアの名称と前記バージョンの範囲により前記ソフトウェアを特定し、
前記スキャナは、前記第1構成情報に含まれる前記バージョンが前記バージョンの範囲に含まれる前記第1識別子を検出する
項目1に記載の情報処理装置。
[項目3]
前記第1脆弱性情報に含まれる前記第1識別子は前記ソフトウェアの名称と前記バージョンの範囲により前記ソフトウェアを特定し、
取得した前記第1脆弱性情報のバージョンの前記範囲の上限値を、前記バージョンが取り得る値より大きい値に書き替えることにより前記範囲を拡張するDBバージョン無効化部をさらに備え、
前記スキャナは、前記第1構成情報に含まれる前記バージョンが、拡張された前記範囲に含まれる前記第1識別子を検出する
項目1または2に記載の情報処理装置。
[項目4]
前記第1脆弱性情報取得部は、複数の前記プラットフォームに関連する複数の前記第1サーバから複数の前記第1脆弱性情報を取得し、
複数の前記第1脆弱性情報は、前記ソフトウェアの名称が同じでありかつ前記バージョンが異なる第1識別子と、前記脆弱性識別子とをそれぞれ対応づけており、
前記スキャナは、複数の前記第1脆弱性情報のそれぞれから前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する
項目1~3のいずれか一項に記載の情報処理装置。
[項目5]
前記第2サーバから取得される前記第2脆弱性情報は、複数の前記第2識別子を1つの前記脆弱性識別子に対応づけており、前記第2脆弱性情報における複数の前記第2識別子は、任意の順序で並べられており、
前記第2脆弱性情報における複数の前記第2識別子のうち選択条件を満たす位置の第2識別子を選択する選択部をさらに備え、
前記検索部は、前記第2脆弱性情報の一部として、選択された前記第2識別子と前記脆弱性識別子とのみを用いる
項目1~4のいずれか一項に記載の情報処理装置。
[項目6]
前記選択条件を満たす位置は、先頭の位置である
項目5に記載の情報処理装置。
[項目7]
前記スキャナは前記第1脆弱性情報から複数の前記第1識別子を検出し、検出した複数の前記第1識別子に対応する複数の前記脆弱性識別子を特定し、
複数の前記脆弱性識別子に対して前記検索部により特定された複数の前記第2識別子に、指定された第2識別子が含まれている場合、前記検索部により特定された複数の前記第2識別子から、前記指定された第2識別子以外の第2識別子を排除する排除部をさらに備え、
前記出力部は、前記指定された第2識別子のみを用いて、前記対象ソフトウェアの前記第3識別子を生成する
項目1~6のいずれか一項に記載の情報処理装置。
[項目8]
プラットフォームに固有の第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得し、
第2サーバから、機器に含まれるソフトウェアをソフトウェアの名称及びバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得し、
脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得し、
前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定し、
前記第2脆弱性情報に基づき、特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定し、
特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する、
情報処理方法。
[項目9]
脆弱性検査の対象機器と、
プラットフォームに固有の、前記プラットフォームに関するソフトウェアの脆弱性を管理する第1サーバと、
機器に含まれる構成要素の脆弱性を管理する第2サーバと、
前記対象機器、前記第1サーバおよび前記第2サーバと通信可能な情報処理装置と、を備え、
前記情報処理装置は、
前記第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得する第1脆弱性情報取得部と、
前記第2サーバから、機器に含まれるソフトウェアをソフトウェアの名称およびバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得する第2脆弱性情報取得部と、
前記脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得する第1構成情報取得部と、
前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する、スキャナと、
前記第2脆弱性情報に基づき、前記スキャナにより特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定する検索部と、
前記検索部により特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する出力部と、
前記第2サーバから取得される前記第2脆弱性情報に、前記第3識別子に一致する第2識別子が含まれているかを検査することにより、前記対象機器の脆弱性を判定する脆弱機器判定部と、
を備える情報処理システム。
1 脆弱性監視システム
2 脆弱性監視装置
3、3A、3B、3C 構成情報変換部
4 記憶部
5 脆弱機器判定部
6 固有サーバ
7 汎用サーバ
10、10_i、10_1~10_M 機器
301 第1脆弱性情報取得部
302 第1脆弱性DB
303 第2脆弱性情報取得部
304 CPE候補DB
305 第1構成情報取得部
306 名称識別部
307 バージョン識別部
308 バージョン無効化部
309 内バージョン無効化部
310 スキャナ選択部
311 スキャナ
312 CPE検索部
313 CPE出力部
314 第1構成情報DB
315 第1脆弱性DB切替部
316 優先CPE選択部
317 劣後CPE排除部
600 コンピュータ装置
602 入力インタフェース
603 表示装置
604 通信装置
605 主記憶装置
606 外部記憶装置
607 バス

Claims (9)

  1. プラットフォームに固有の第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得する第1脆弱性情報取得部と、
    第2サーバから、機器に含まれるソフトウェアを前記ソフトウェアの名称およびバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得する第2脆弱性情報取得部と、
    脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得する第1構成情報取得部と、
    前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する、スキャナと、
    前記第2脆弱性情報に基づき、前記スキャナにより特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定する検索部と、
    前記検索部により特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する出力部と、
    を備えた情報処理装置。
  2. 取得した前記第1構成情報における前記対象ソフトウェアのバージョンの値を、前記バージョンが取り得る値より小さい値に書き替えるバージョン無効化部をさらに備え、
    前記第1脆弱性情報に含まれる前記第1識別子は前記ソフトウェアの名称と前記バージョンの範囲により前記ソフトウェアを特定し、
    前記スキャナは、前記第1構成情報に含まれる前記バージョンが前記バージョンの範囲に含まれる前記第1識別子を検出する
    請求項1に記載の情報処理装置。
  3. 前記第1脆弱性情報に含まれる前記第1識別子は前記ソフトウェアの名称と前記バージョンの範囲により前記ソフトウェアを特定し、
    取得した前記第1脆弱性情報のバージョンの前記範囲の上限値を、前記バージョンが取り得る値より大きい値に書き替えることにより前記範囲を拡張するDBバージョン無効化部をさらに備え、
    前記スキャナは、前記第1構成情報に含まれる前記バージョンが、拡張された前記範囲に含まれる前記第1識別子を検出する
    請求項1に記載の情報処理装置。
  4. 前記第1脆弱性情報取得部は、複数の前記プラットフォームに関連する複数の前記第1サーバから複数の前記第1脆弱性情報を取得し、
    複数の前記第1脆弱性情報は、前記ソフトウェアの名称が同じでありかつ前記バージョンが異なる第1識別子と、前記脆弱性識別子とをそれぞれ対応づけており、
    前記スキャナは、複数の前記第1脆弱性情報のそれぞれから前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する
    請求項1に記載の情報処理装置。
  5. 前記第2サーバから取得される前記第2脆弱性情報は、複数の前記第2識別子を1つの前記脆弱性識別子に対応づけており、前記第2脆弱性情報における複数の前記第2識別子は、任意の順序で並べられており、
    前記第2脆弱性情報における複数の前記第2識別子のうち選択条件を満たす位置の第2識別子を選択する選択部をさらに備え、
    前記検索部は、前記第2脆弱性情報の一部として、選択された前記第2識別子と前記脆弱性識別子とのみを用いる
    請求項1に記載の情報処理装置。
  6. 前記選択条件を満たす位置は、先頭の位置である
    請求項5に記載の情報処理装置。
  7. 前記スキャナは前記第1脆弱性情報から複数の前記第1識別子を検出し、検出した複数の前記第1識別子に対応する複数の前記脆弱性識別子を特定し、
    複数の前記脆弱性識別子に対して前記検索部により特定された複数の前記第2識別子に、指定された第2識別子が含まれている場合、前記検索部により特定された複数の前記第2識別子から、前記指定された第2識別子以外の第2識別子を排除する排除部をさらに備え、
    前記出力部は、前記指定された第2識別子のみを用いて、前記対象ソフトウェアの前記第3識別子を生成する
    請求項1に記載の情報処理装置。
  8. プラットフォームに固有の第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得し、
    第2サーバから、機器に含まれるソフトウェアをソフトウェアの名称及びバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得し、
    脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得し、
    前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定し、
    前記第2脆弱性情報に基づき、特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定し、
    特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する、
    情報処理方法。
  9. 脆弱性検査の対象機器と、
    プラットフォームに固有の、前記プラットフォームに関するソフトウェアの脆弱性を管理する第1サーバと、
    機器に含まれる構成要素の脆弱性を管理する第2サーバと、
    前記対象機器、前記第1サーバおよび前記第2サーバと通信可能な情報処理装置と、を備え、
    前記情報処理装置は、
    前記第1サーバから、前記プラットフォームに関するソフトウェアを前記ソフトウェアの名称およびバージョンにより特定する第1識別子と、前記ソフトウェアの脆弱性を特定する脆弱性識別子とが対応している第1脆弱性情報を取得する第1脆弱性情報取得部と、
    前記第2サーバから、機器に含まれるソフトウェアをソフトウェアの名称およびバージョンを含む所定の形式で特定する第2識別子と、前記脆弱性識別子とが対応している第2脆弱性情報を取得する第2脆弱性情報取得部と、
    前記脆弱性検査の対象機器から、前記対象機器に含まれる対象ソフトウェアの名称およびバージョンを含む第1構成情報を取得する第1構成情報取得部と、
    前記第1構成情報に基づき、前記第1脆弱性情報から前記対象ソフトウェアの名称を含む第1識別子を検出し、検出した前記第1識別子に対応する脆弱性識別子を特定する、スキャナと、
    前記第2脆弱性情報に基づき、前記スキャナにより特定された前記脆弱性識別子に対応し、かつ前記対象ソフトウェアの名称と同じソフトウェアの名称を含む第2識別子を特定する検索部と、
    前記検索部により特定された前記第2識別子に含まれる前記バージョンを、前記対象ソフトウェアの前記バージョンに置換することにより、前記対象機器に含まれる前記対象ソフトウェアを前記所定の形式で特定する第3識別子を生成する出力部と、
    前記第2サーバから取得される前記第2脆弱性情報に、前記第3識別子に一致する第2識別子が含まれているかを検査することにより、前記対象機器の脆弱性を判定する脆弱機器判定部と、
    を備える情報処理システム。
JP2022138615A 2022-08-31 2022-08-31 情報処理装置、情報処理方法およびシステム Pending JP2024034404A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022138615A JP2024034404A (ja) 2022-08-31 2022-08-31 情報処理装置、情報処理方法およびシステム
US18/174,714 US20240070290A1 (en) 2022-08-31 2023-02-27 Information processing apparatus, information processing method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022138615A JP2024034404A (ja) 2022-08-31 2022-08-31 情報処理装置、情報処理方法およびシステム

Publications (1)

Publication Number Publication Date
JP2024034404A true JP2024034404A (ja) 2024-03-13

Family

ID=90000712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022138615A Pending JP2024034404A (ja) 2022-08-31 2022-08-31 情報処理装置、情報処理方法およびシステム

Country Status (2)

Country Link
US (1) US20240070290A1 (ja)
JP (1) JP2024034404A (ja)

Also Published As

Publication number Publication date
US20240070290A1 (en) 2024-02-29

Similar Documents

Publication Publication Date Title
JP3946057B2 (ja) 整合性検査支援方法および整合性検査支援システム
US10621212B2 (en) Language tag management on international data storage
US20170262361A1 (en) Dynamic testing based on automated impact analysis
US10210240B2 (en) Systems and methods for code parsing and lineage detection
WO2011039826A1 (ja) 取得可能な機器情報に応じた障害原因解析ルールの設計方法及び計算機
US7562342B2 (en) Method and apparatus for incrementally processing program annotations
US20160259636A1 (en) Software patch evaluator
US20190116178A1 (en) Application error fingerprinting
JP6573452B2 (ja) 階層参照データにおけるコンフリクトを解消する方法およびシステム
CN112711438A (zh) 依赖组件信息提取方法、设备及计算机可读存储介质
JP2009217455A (ja) 情報処理装置、情報処理プログラム及び方法
US8626894B2 (en) Generating visualization output of event correlation information
US8479163B2 (en) Simplifying maintenance of large software systems
US20190220549A1 (en) Analysis model preparing system, programming apparatus, and analysis model preparing method
EP3422177A1 (en) Systems and methods for code parsing and lineage detection
CN112650526A (zh) 版本一致性的检测方法、装置、电子设备和介质
JP2024034404A (ja) 情報処理装置、情報処理方法およびシステム
US20220027804A1 (en) Asset Model Configuration and Validation
US11256602B2 (en) Source code file retrieval
De Roover et al. The implementation of the Cha-Q meta-model: A comprehensive, change-centric software representation
CN114706918B (zh) 一种多类型数据库兼容方法、装置、设备、存储介质
CN113626423B (zh) 业务数据库的日志管理方法、装置、系统
US20240134967A1 (en) Systems and methods for contextual alert enrichment in computing infrastructure and remediation thereof
US20240232333A9 (en) Systems and methods for contextual alert enrichment in computing infrastructure and remediation thereof
CN114547404B (zh) 一种大数据平台系统