(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024145577
(43)【公開日】2024-10-15
(54)【発明の名称】予測システム、プログラム及び予測方法
(51)【国際特許分類】
G06Q 50/00 20240101AFI20241004BHJP
G06Q 10/00 20230101ALI20241004BHJP
【FI】
G06Q50/00 300
G06Q10/00
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023057991
(22)【出願日】2023-03-31
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り (1)令和5年1月19日に2023年 暗号と情報セキュリティシンポジウム(SCIS2023;2023 Symposium on Cryptography and Information Security)のウェブサイト内(https://www.iwsec.org/scis/2023/)で、SCIC2023の参加者に対して論文「ツイート傾向を活用した深刻度の高い脆弱性の早期検知の検討」を含む予稿集を公開した。 (2)令和5年1月27日にSCIS2023で発表した。
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TWITTER
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】源平 祐太
(72)【発明者】
【氏名】中村 徹
(72)【発明者】
【氏名】磯原 隆将
(72)【発明者】
【氏名】清本 晋作
【テーマコード(参考)】
5L010
5L049
5L050
【Fターム(参考)】
5L010AA04
5L049AA04
5L049CC00
5L050CC00
(57)【要約】 (修正有)
【課題】脆弱性の脅威度を従来よりも早期に予測可能な予測システム、プログラム及び予測方法を提供すること。
【解決手段】分析システム1において、収集サーバーのプロセッサーは、脆弱性に付与された識別情報を投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を学習済みモデルに入力し、学習済みモデルの出力として、脆弱性の脅威度の予測値を得る予測部として機能する。分析サーバーのプロセッサーは、予め定められた期間内における前記識別情報を投稿内容に含む投稿の投稿数が、予め定められた閾値以上である場合に、脆弱性を脅威度の予測の対象として決定する決定部して機能する。予測部は、決定部が決定した脆弱性の脅威度の予測値を得る。
【選択図】
図1
【特許請求の範囲】
【請求項1】
脆弱性に付与された識別情報を投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を学習済みモデルに入力し、前記学習済みモデルの出力として、前記脆弱性の脅威度の予測値を得る、予測部を備える予測システム。
【請求項2】
予め定められた期間内における前記識別情報を投稿内容に含む投稿の投稿数が、予め定められた閾値以上である場合に、前記脆弱性を前記脅威度の予測の対象として決定する決定部をさらに備え、
前記予測部は、前記決定部によって決定された前記脆弱性の脅威度の予測値を得る、請求項1に記載の予測システム。
【請求項3】
複数の脆弱性のそれぞれに付与された識別情報ごとの、前記識別情報を投稿内容に含む前記SNSへの投稿の時間帯ごとの投稿数を説明変数とし、前記複数の脆弱性のそれぞれの脅威度を目的変数として、機械学習を行うことで前記学習済みモデルを作成する学習部をさらに備える、請求項1に記載の予測システム。
【請求項4】
前記学習部は、投稿人数が予め定められた人数以上である前記識別情報を投稿内容に含む前記SNSへの投稿の時間帯ごとの投稿数を前記説明変数として用いる、請求項3に記載の予測システム。
【請求項5】
予測システムが備えるプロセッサーを、
脆弱性に付与された識別情報を投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を学習済みモデルに入力し、前記学習済みモデルの出力として、前記脆弱性の脅威度の予測値を得る、予測部として機能させるプログラム。
【請求項6】
脆弱性に付与された識別情報を投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を学習済みモデルに入力し、前記学習済みモデルの出力として、前記脆弱性の脅威度の予測値を得る予測方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、予測システム、プログラム及び予測方法に関する。
【背景技術】
【0002】
特許文献1は、サイバー脅威インテリジェンス(cyber threat intelligence: CTI)を提供するサイトの情報を取得・分析し、固有表現を抽出・重要度算出等を行う、CTIを対象とした分析支援技術について開示している。
【0003】
非特許文献1は、特定SNS(social networking service)の投稿及び脆弱性の公開情報を利用して、脆弱性が悪用されるかどうかを予測する機械学習モデルの構築及びSNSを利用した機械学習モデルにおける敵対的攻撃について評価を行うことを記載している。
【0004】
非特許文献2は、CTIに関連するユーザーをSNSのグラフ構造及び投稿内容から推薦するモデルの作成・評価を行うことを記載している。非特許公報2は、SNSにおけるサイバー脅威情報を発信するユーザーを推薦するシステムを提案している。
【0005】
非特許公報3、非特許公報4、及び非特許公報5では、それぞれサイバーセキュリティに関する投稿を検知したり、投稿内容を要約したりといったSNSの投稿テキストを利用する研究について記載している。
【0006】
非特許文献3は、既存のCVE(Common Vulnerabilities and Exposures)に関する記述を学習して未知のCTIに関連するツイートを検知するモデルを構築し、CVE番号を含まない追跡が難しいCTI関連ツイートの検知を行うことを開示している。
【0007】
非特許文献4は、特定SNSにおけるCTI関連投稿をサイバーセキュリティに特化したRDF(Resource Description Framework)に加工する研究について開示している。RDFは、ウェブ上にある「リソース」を記述するための統一された枠組みである。
【0008】
非特許文献5は、既存の脆弱性に関して公開されたテキスト情報を学習し、CTIに関連する投稿を検知する機械学習モデルを構築・評価することについて開示している。
【先行技術文献】
【特許文献】
【0009】
【非特許文献】
【0010】
【非特許文献1】C. Sabottke, O. Suciu, and T. Dumitras.. Vulnerability disclosure in the age of social media: Exploiting twitter for predicting real-world exploits. USENIX Security Symposium, pp. 1041-1056,2015
【非特許文献2】Avishek Bose, Shreya Gopal Sundari, Vahid Behzadan, W. Hsu.. Tracing Relevant Twitter Accounts Active in Cyber Threat Intelligence Domain by Exploiting Content and Structure of Twitter Network, Intelligence and Security Informatics 2021.
【非特許文献3】Ba-Dung Le, Guanhua Wang, Mehwish Nasim and M. Ali Babar, “ Gathering Cyber Threat Intelligence from Twitter Using Novelty Classification, ” 2019.
【非特許文献4】S. Mittal, P. K. Das, V. Mulwad, A. Joshi, and T. Finin, “ Cybertwitter: Using twitter to generate alerts for cybersecurity threats and vulnerabilities, ”in Proceedings of the 2016 IEEE/ACM In ternational Conference on Advances in Social Networks Analysis and Mining, pp. 860-867, IEEE Press, 2016.
【非特許文献5】Ba-Dung Le, Guanhua Wang, Mehwish Nasim and M. Ali Babar, “ Gathering Cyber Threat Intelligence from Twitter Using Novelty Classification, ”2019.
【発明の概要】
【発明が解決しようとする課題】
【0011】
サイバー攻撃による被害は増加してきており、サイバー攻撃の起点となる脆弱性に対する早期対策が求められるようになってきている。一方で脆弱性の公表数は膨大で、あらゆる脆弱性に対して情報収集及び対応判断を行うことは時間的コストの観点から困難である。そこで今後脅威となる脆弱性に対して必要十分に対応していくことが求められる。
【0012】
特許公報1は、同様の課題背景に対するCTIの分析技術を開示している。特許公報1が対象とするCTIは、主に機械的に扱えるよう構造化されているもの及び専門家などによるレポーティングされたものである。そのような構造化CTIは、一度専門家による分析及び構造化などの作業が必要である。
【0013】
非特許公報1は、脆弱性の深刻度のスコアなどの、長期間のデータ観測が必要なデータ利用している。
【0014】
SNSでは多様な言語での投稿が行われる。このため、非特許公報3、非特許公報4、及び非特許公報5のように自然言語処理アプローチで多言語の投稿に対応するには、各言語の差異を吸収する必要があり実装コストが高い。なお、非特許公報3、非特許公報4、及び非特許公報5においては英語で記載された投稿のみを対象としている。
【0015】
本発明の実施形態が解決しようとする課題は、脆弱性の脅威度を従来よりも早期に予測可能な予測システム、プログラム及び予測方法を提供することである。
【課題を解決するための手段】
【0016】
実施形態の予測システムは、脆弱性に付与された識別情報を投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を学習済みモデルに入力し、前記学習済みモデルの出力として、前記脆弱性の脅威度の予測値を得る、予測部を備える。
【発明の効果】
【0017】
本発明は、脆弱性の脅威度を従来よりも早期に予測可能である。
【図面の簡単な説明】
【0018】
【
図1】実施形態に係る分析システム及び当該分析システムに含まれる構成要素の要部構成の一例を示すブロック図。
【
図2】
図1中の収集サーバーのプロセッサーによる処理の一例を示すフローチャート。
【
図3】
図1中の分析サーバーのプロセッサーによる処理の一例を示すフローチャート。
【
図4】ディスプレイに表示される一覧画面の一例を示す図。
【
図5】ディスプレイに表示される詳細画面の一例を示す図。
【発明を実施するための形態】
【0019】
以下、実施形態に係る分析システムについて図面を用いて説明する。なお、以下の実施形態の説明に用いる各図面は、説明のため、構成を省略して示している場合がある。また、各図面及び本明細書中において、同一の符号は同様の要素を示す。
【0020】
図1は、実施形態に係る分析システム1及び分析システム1に含まれる構成要素の要部構成の一例を示すブロック図である。なお、各装置の各構成要素は、内蔵であっても外付けであっても良い。分析システム1は、SNSへの投稿を収集及び分析して、脆弱性の脅威度を予測するシステムである。分析システム1は、一例として、分析サーバー100、収集サーバー200及びSNSサーバー300を含む。なお、分析システム1は、このうちの一部を含むものであっても良い。また、
図1には、分析システム1の構成要素を1つずつ示すが、各構成要素の数は限定しない。なお、分析システム1は、予測システムの一例である。
【0021】
分析サーバー100、収集サーバー200及びSNSサーバー300は、ネットワークNWに接続する。ネットワークNWは、典型的にはインターネットを含む通信網である。ネットワークNWは、典型的にはWAN(wide area network)を含む通信網である。ネットワークNWは、イントラネットなどのプライベートネットワークを含む通信網であっても良い。ネットワークNWは、LAN(local area network)を含む通信網であっても良い。また、ネットワークNWは、無線回線でも良いし有線回線でも良く、無線回線と有線回線とが混在していても良い。また、ネットワークNWは、専用線又は公衆携帯電話網などを含む通信網であっても良い。
【0022】
分析サーバー100は、SNSの投稿を用いて脆弱性の脅威度を予測する装置である。分析サーバー100は、例えば、サーバー又はPC(personal computer)などである。分析サーバー100は、一例として、プロセッサー110、ROM(read-only memory)120、RAM(random-access memory)130、補助記憶装置140及び通信インターフェース150を含む。そして、バス160などが、これら各部を接続する。なお、分析サーバー100は、予測システムの一例である。
【0023】
プロセッサー110は、分析サーバー100の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分であり、各種演算及び処理などを行う。プロセッサー110は、例えば、CPU(central processing unit)、MPU(micro processing unit)、SoC(system on a chip)、DSP(digital signal processor)、GPU(graphics processing unit)、ASIC(application specific integrated circuit)、PLD(programmable logic device)又はFPGA(field-programmable gate array)などである。あるいは、プロセッサー110は、これらのうちの複数を組み合わせたものである。また、プロセッサー110は、これらにハードウェアアクセラレーターなどを組み合わせたものであっても良い。プロセッサー110は、ROM120又は補助記憶装置140などに記憶されたファームウェア、システムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、分析サーバー100の各種の機能を実現するべく各部を制御する。また、プロセッサー110は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー110の回路内に組み込まれていても良い。
【0024】
ROM120及びRAM130は、プロセッサー110を中枢としたコンピューターの主記憶装置である。
ROM120は、専らデータの読み出しに用いられる不揮発性メモリである。ROM120は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM120は、プロセッサー110が各種の処理を行う上で使用するデータなども記憶する。
RAM130は、データの読み書きに用いられるメモリである。RAM130は、プロセッサー110が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM130は、典型的には揮発性メモリである。
【0025】
補助記憶装置140は、プロセッサー110を中枢としたコンピューターの補助記憶装置である。補助記憶装置140は、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disk drive)又はフラッシュメモリなどである。補助記憶装置140は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置140は、プロセッサー110が各種の処理を行う上で使用するデータ、プロセッサー110での処理によって生成されたデータ及び各種の設定値などを記憶する。
【0026】
補助記憶装置140が記憶するデータは、脅威度DB141を含む。
脅威度DB141は、分析サーバー100による、脆弱性の脅威度の予測結果を記憶及び管理するデータベースである。
【0027】
通信インターフェース150は、分析サーバー100がネットワークNWなどを介して通信するためのインターフェースである。
【0028】
バス160は、コントロールバス、アドレスバス及びデータバスなどを含み、分析サーバー100の各部で授受される信号を伝送する。
【0029】
収集サーバー200は、SNSサーバー300などからSNSの投稿を取得して収集する装置である。また、収集サーバー200は、脅威度の予測の対象となる脆弱性を決定する装置である。収集サーバー200は、例えば、サーバー又はPCなどである。収集サーバー200は、一例として、プロセッサー210、ROM220、RAM230、補助記憶装置240及び通信インターフェース250を含む。そして、バス260などが、これら各部を接続する。
【0030】
プロセッサー210は、収集サーバー200の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分であり、各種演算及び処理などを行う。プロセッサー210は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー210は、これらのうちの複数を組み合わせたものである。また、プロセッサー210は、これらにハードウェアアクセラレーターなどを組み合わせたものであっても良い。プロセッサー210は、ROM220又は補助記憶装置240などに記憶されたファームウェア、システムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、収集サーバー200の各種の機能を実現するべく各部を制御する。また、プロセッサー210は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー210の回路内に組み込まれていても良い。
【0031】
ROM220及びRAM230は、プロセッサー210を中枢としたコンピューターの主記憶装置である。
ROM220は、専らデータの読み出しに用いられる不揮発性メモリである。ROM220は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM220は、プロセッサー210が各種の処理を行う上で使用するデータなども記憶する。
RAM230は、データの読み書きに用いられるメモリである。RAM230は、プロセッサー210が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM230は、典型的には揮発性メモリである。
【0032】
補助記憶装置240は、プロセッサー210を中枢としたコンピューターの補助記憶装置である。補助記憶装置240は、例えばEEPROM、HDD又はフラッシュメモリなどである。補助記憶装置240は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置240は、プロセッサー210が各種の処理を行う上で使用するデータ、プロセッサー210での処理によって生成されたデータ及び各種の設定値などを記憶する。
【0033】
補助記憶装置240が記憶するデータは、収集DB241及び脆弱性DB242を含む。
収集DB241は、収集サーバー200がSNSサーバー300などから取得して収集したSNSの投稿のデータ(以下「投稿データ」という。)を記憶及び管理するデータベースである。
【0034】
脆弱性DB242は、収集サーバー200が収集した投稿データから抽出した脆弱性ID及び脆弱性IDについてのデータを記憶及び管理するデータベースである。脆弱性DB242は、各脆弱性IDについて、脆弱性IDに関連付けて当該脆弱性IDについてのデータを記憶及び管理する。脆弱性IDについては後述する。
【0035】
通信インターフェース250は、収集サーバー200がネットワークNWなどを介して通信するためのインターフェースである。
【0036】
バス260は、コントロールバス、アドレスバス及びデータバスなどを含み、収集サーバー200の各部で授受される信号を伝送する。
【0037】
SNSサーバー300は、SNSを運営及び管理するための装置である。また、SNSサーバー300は、投稿データを記憶及び管理する装置である。SNSサーバー300は、例えば、サーバーである。SNSサーバー300は、一例として、プロセッサー310、ROM320、RAM330、補助記憶装置340及び通信インターフェース350を含む。そして、バス360などが、これら各部を接続する。
【0038】
プロセッサー310は、SNSサーバー300の動作に必要な演算及び制御などの処理を行うコンピューターの中枢部分であり、各種演算及び処理などを行う。プロセッサー310は、例えば、CPU、MPU、SoC、DSP、GPU、ASIC、PLD又はFPGAなどである。あるいは、プロセッサー310は、これらのうちの複数を組み合わせたものである。また、プロセッサー310は、これらにハードウェアアクセラレーターなどを組み合わせたものであっても良い。プロセッサー310は、ROM320又は補助記憶装置340などに記憶されたファームウェア、システムソフトウェア及びアプリケーションソフトウェアなどのプログラムに基づいて、SNSサーバー300の各種の機能を実現するべく各部を制御する。また、プロセッサー310は、当該プログラムに基づいて後述する処理を実行する。なお、当該プログラムの一部又は全部は、プロセッサー310の回路内に組み込まれていても良い。
【0039】
ROM320及びRAM330は、プロセッサー310を中枢としたコンピューターの主記憶装置である。
ROM320は、専らデータの読み出しに用いられる不揮発性メモリである。ROM320は、上記のプログラムのうち、例えばファームウェアなどを記憶する。また、ROM320は、プロセッサー310が各種の処理を行う上で使用するデータなども記憶する。
RAM330は、データの読み書きに用いられるメモリである。RAM330は、プロセッサー310が各種の処理を行う上で一時的に使用するデータを記憶するワークエリアなどとして利用される。RAM330は、典型的には揮発性メモリである。
【0040】
補助記憶装置340は、プロセッサー310を中枢としたコンピューターの補助記憶装置である。補助記憶装置340は、例えばEEPROM、HDD又はフラッシュメモリなどである。補助記憶装置340は、上記のプログラムのうち、例えば、システムソフトウェア及びアプリケーションソフトウェアなどを記憶する。また、補助記憶装置340は、プロセッサー310が各種の処理を行う上で使用するデータ、プロセッサー310での処理によって生成されたデータ及び各種の設定値などを記憶する。
【0041】
補助記憶装置340は、投稿データを記憶する。
【0042】
通信インターフェース350は、SNSサーバー300がネットワークNWなどを介して通信するためのインターフェースである。
【0043】
バス360は、コントロールバス、アドレスバス及びデータバスなどを含み、SNSサーバー300の各部で授受される信号を伝送する。
【0044】
以下、実施形態に係る分析システム1の動作を
図2及び
図3などに基づいて説明する。なお、以下の動作説明における処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。
図2は、収集サーバー200のプロセッサー210による処理の一例を示すフローチャートである。プロセッサー210は、例えば、ROM220又は補助記憶装置240などに記憶されたプログラムに基づいて
図2の処理を実行する。
図3は、分析サーバー100のプロセッサー110による処理の一例を示すフローチャートである。プロセッサー110は、例えば、ROM120又は補助記憶装置140などに記憶されたプログラムに基づいて
図3の処理を実行する。
【0045】
図2のステップST11において収集サーバー200のプロセッサー210は、SNSの投稿の収集を開始するか否かを判定する。プロセッサー210は、例えば、所定の時間t1が経過するごとにSNSの投稿の収集を開始すると判定する。これにより、プロセッサー210は、時間t1ごとにステップST12~ステップST20の処理を実行する。時間t1の値は、例えば、分析システム1の設計者又は管理者などによって予め設定される。時間t1の値は、デフォルトの値が定められていても良い。プロセッサー210は、SNSの投稿の収集を開始すると判定しないならば、ステップST11においてNoと判定してステップST11の処理を繰り返す。そして、プロセッサー210は、SNSの投稿の収集を開始すると判定するならば、ステップST11においてYesと判定してステップST12へと進む。
【0046】
ステップST12においてプロセッサー210は、SNSサーバー300から投稿データを取得することで、投稿データを収集する。取得の対象とする投稿は、例えば、投稿時刻が時刻t2から時刻t3の範囲内であり、投稿内容に脆弱性共通文字列を含む投稿である。時刻t2から時刻t3とは、例えば、時刻t2より後から時刻t3までを示す。今回のステップST12の処理における時刻t2は、例えば、前回のステップST12の処理における時刻t3である。あるいは、今回のステップST12の処理における時刻t2は、(現在日時-時間t1)である。今回のステップST12の処理における時刻t3は、今回のステップST12の処理における現在日時である。したがって、プロセッサー210は、時間t1が経過するごとに、この経過時間内に投稿された投稿のデータを取得する。脆弱性共通文字列は、脆弱性IDに必ず含まれる文字列である。脆弱性IDは、脆弱性をリスト化した脆弱性情報データベースにおける、脆弱性ごとにユニークな識別情報である。分析システム1が用いる脆弱性情報データベースは、例えば、CVEである。分析システム1が用いる脆弱性情報データベースがCVEである場合における脆弱性共通文字列は、「CVE」である。分析システム1は、脆弱性情報データベースとして、CVEの他、NVD(National Vulnerability Database)及びJVN(Japan Vulnerability Notes)などを用いることもできる。
【0047】
プロセッサー210は、投稿データを取得するために、例えば、投稿時刻が時刻t2から時刻t3の範囲内であり、投稿内容に脆弱性共通文字列を含むという条件に合致する投稿データを送信するようにAPI(application programming interface)を用いてSNSサーバー300に問い合わせる。この問い合わせに応じて、SNSサーバー300のプロセッサー310は、当該条件に合致する投稿データを検索によって抽出する。なお、プロセッサー310は、当該検索において、半角及び全角を区別しても良いししなくても良い。また、プロセッサー310は、当該検索において、大文字及び小文字を区別しても良いししなくても良い。そして、プロセッサー310は、抽出した投稿データを送信するように通信インターフェース350に指示する。この送信の指示を受けて通信インターフェース350は、当該投稿データを収集サーバー200に送信する。送信された当該投稿データは、収集サーバー200の通信インターフェース250によって受信される。このようにして、収集サーバー200のプロセッサー210は、条件に合致する投稿データを取得する。
【0048】
プロセッサー210は、例えば、取得した投稿データを投稿IDと関連付けて収集DB241に記憶する。投稿IDは、投稿データごとにユニークな識別情報である。プロセッサー210は、新たに投稿IDを付与しても良いし、SNSサーバー300で用いている投稿IDを用いても良い。SNSサーバー300で用いている投稿IDは、例えば、SNSサーバー300から取得した投稿データに含まれる。
【0049】
ステップST13においてプロセッサー210は、ステップST12で取得した投稿データのうち、未選択の投稿データを1つ選択する。ここで選択されたデータを以下「対象データ」というものとする。また、対象データの投稿IDを以下「対象ID」というものとする。一度対象データとなった投稿データは、未選択の状態から選択済みの状態になる。対象データは、ステップST13~ステップST17の処理の対象とする投稿データである。なお、プロセッサー210は、例えば、投稿日時が早いものから順に投稿データを選択する。あるいは、プロセッサー210は、その他の順番で投稿データを選択しても良いし、順不同で投稿データを選択しても良い。また、プロセッサー210は、並行処理又は並列処理により、複数の投稿データに対するステップST13~ステップST17の処理を同時に実行しても良い。
【0050】
ステップST14においてプロセッサー210は、対象データの投稿内容から脆弱性IDを抽出する。なお、投稿内容に複数の脆弱性IDが含まれる場合、プロセッサー210は、例えば、投稿内容に含まれる全ての脆弱性IDを抽出する。プロセッサー210は、例えば、正規表現を用いて脆弱性IDのフォーマットに合致する文字列を抽出することで脆弱性IDを抽出する。分析システム1が用いる脆弱性情報データベースがCVEである場合には、脆弱性IDのフォーマットは、「CVE-XXXX-YYYYY」である。ここで、XXXXは4桁の数字である。YYYYYは、4桁又は5桁の数字である。なお、プロセッサー210は、脆弱性IDの抽出において、全角及び半角のいずれも抽出対象としても良いし、全角又は半角のいずれかのみを抽出対象としても良い。また、プロセッサー210は、脆弱性IDの抽出において、大文字及び小文字のいずれも抽出対象としても良いし、大文字又は小文字のいずれかのみを抽出対象としても良い。
【0051】
また、プロセッサー210は、抽出した各脆弱性IDを、対象IDに関連付けて収集DB241に記憶する。
【0052】
ステップST15においてプロセッサー210は、ステップST14の処理で脆弱性IDを1つ以上抽出したか否かを判定する。対象データの投稿内容に含まれる「CVE」の文字列が脆弱性IDとは無関係である場合がある。このような場合などにおいては脆弱性IDを抽出できない場合がある。プロセッサー210は、ステップST14の処理で脆弱性IDを1つも抽出していないならば、ステップST15においてNoと判定してステップST19へと進む。なお、プロセッサー210は、脆弱性IDを抽出できなかった投稿データについては、収集DB241から削除しても良い。対して、プロセッサー210は、ステップST14の処理で脆弱性IDを1つ以上抽出したならば、ステップST15においてYesと判定してステップST16へと進む。
【0053】
ステップST16においてプロセッサー210は、ステップST14の処理で抽出した脆弱性IDの中に、脆弱性DB242に登録されていない脆弱性IDがあるか否かを判定する。プロセッサー210は、ステップST14の処理で抽出した脆弱性IDの中に、脆弱性DB242に登録されていない脆弱性IDがあるならば、ステップST16においてYesと判定してステップST17へと進む。
【0054】
ステップST17においてプロセッサー210は、ステップST14の処理で抽出した脆弱性IDうち、脆弱性DB242に登録されていない脆弱性IDを脆弱性DB242に登録する。脆弱性DB242は、脆弱性IDに、最初投稿日時、最終投稿日時、総投稿数情報、期間投稿数情報、直近投稿数情報及び投稿ID情報を関連付けて記憶する。最初投稿日時は、関連付けられた脆弱性IDが抽出された投稿データの投稿日時のうち、最も早い投稿日時である。最終投稿日時は、関連付けられた脆弱性IDが抽出された投稿データの投稿日時のうち、最も遅い投稿日時である。総投稿数情報は、関連付けられた脆弱性IDを含む投稿の投稿数を示す情報である。当該脆弱性IDを含む投稿の投稿数は、当該脆弱性IDが抽出された回数である。期間投稿数情報は、関連付けられた脆弱性IDを含む投稿データのうち、各収集で収集された投稿データに含まれる投稿データの数を示す情報である。1回分の収集で収集された投稿データに含まれる、当該脆弱性IDを含む投稿データの数は、当該収集で収集された投稿データから当該脆弱性IDが抽出された回数である。なお、1回分の収集で収集された投稿データとは、1回のステップST12の処理で収集された投稿データである。期間投稿数情報は、例えば、各収集について、収集日時に関連付けて、抽出回数(投稿数)を記憶する。直近投稿数情報は、関連付けられた脆弱性IDを含む投稿データのうち、直近のN回分の収集で収集された投稿データに含まれる投稿データの数を示す情報である。直近のN回分の収集で収集された投稿データに含まれる、当該脆弱性IDを含む投稿データの数は、直近のN回分の収集で収集された投稿データから当該脆弱性IDが抽出された回数である。なお、Nは、1以上の整数である。Nの値は、例えば、分析システム1の設計者又は管理者などによって予め設定される。Nの値は、デフォルトの値が定められていても良い。投稿ID情報は、関連付けられた脆弱性IDが抽出された投稿データの投稿IDの一覧を示す情報である。
【0055】
プロセッサー210は、例えば、最初投稿日時の初期値を対象データの投稿日時とする。プロセッサー210は、例えば、最終投稿日時の初期値を対象データの投稿日時とする。プロセッサー210は、例えば、総投稿数情報の初期値を0とする。プロセッサー210は、例えば、期間投稿数情報の収集日時の初期値として、ステップST12で用いた時刻t3を登録する。また、プロセッサー210は、例えば、当該収集日時に、初期値を0とした抽出回数を関連付ける。また、プロセッサー210は、例えば、直近投稿数情報の初期値を0とする。
【0056】
対して、プロセッサー210は、ステップST14の処理で抽出した脆弱性IDの中に、脆弱性DB242に登録されていない脆弱性IDがないならば、ステップST16においてNoと判定してステップST18へと進む。また、プロセッサー210は、ステップST17の処理の後、ステップST18へと進む。
【0057】
ステップST18においてプロセッサー210は、脆弱性DB242について、ステップST14の処理で抽出した脆弱性IDについてのデータを更新する。すなわち、プロセッサー210は、最初投稿日時が、対象データの投稿日時より後であるならば、最初投稿日時を対象データの投稿日時にする。また、プロセッサー210は、最終投稿日時が、対象データの投稿日時より前であるならば、最終投稿日時を対象データの投稿日時にする。また、プロセッサー210は、総投稿数情報の値を1増加させる。また、プロセッサー210は、期間投稿数情報について、ステップST12で用いた時刻t3と同一である収集日時が登録されている場合、当該収集日時に関連付けられた抽出回数の値を1増加させる。また、プロセッサー210は、期間投稿数情報について、ステップST12で用いた時刻t3と同一である収集日時が登録されてない場合、ステップST12で用いた時刻t3を収集日時として新規に登録する。また、プロセッサー210は、新規に登録した当該した収集日時に、値を1とした抽出回数を関連付ける。また、プロセッサー210は、投稿ID情報の一覧に対象データの投稿IDを追加する。
【0058】
ステップST19においてプロセッサー210は、ステップST12で取得した投稿データの中に、未選択の投稿データがあるか否かを判定する。プロセッサー210は、未選択の投稿データがあるならば、ステップST19においてYesと判定してステップST13へと戻る。対して、プロセッサー210は、未選択の投稿データがないならば、ステップST19においてNoと判定してステップST20へと進む。
【0059】
ステップST20においてプロセッサー210は、脆弱性DB242に登録された各脆弱性IDについて、直近投稿数情報を更新する。プロセッサー210は、このために、各脆弱性IDについて、例えば下式により直近投稿数PLを算出する。
【数1】
ここで、P_iは、直近i回目の収集の抽出回数である。直近i回目の収集とは、収集日時が(ステップST12で用いた時刻t3-(i-1)×t1)である収集である。
【0060】
したがって、プロセッサー210は、例えば、期間投稿数情報に登録された収集日時のうち、(ステップST12で用いた時刻t3-(N-1)×t1)より後であるものを特定する。そして、プロセッサー210は、特定した各収集日時に関連付けられた抽出回数を取得する。そして、プロセッサー210は、取得した抽出回数の合計を求める。当該合計が、直近投稿数PLである。プロセッサー210は、直近投稿数情報の値を直近投稿数PLにする。
【0061】
ステップST21においてプロセッサー210は、脆弱性DB242に登録された各脆弱性IDについて、脅威度の予測の対象とするものを選定する。プロセッサー210は、例えば、直近投稿数情報の値が投稿数閾値K以上である脆弱性IDを脅威度の予測対象として決定する。投稿数閾値Kは、0以上の整数又は実数である。好ましくは、投稿数閾値Kは、1以上の整数又は実数である。投稿数閾値Kは、例えば、分析システム1の設計者又は管理者などによって予め設定される。投稿数閾値Kは、デフォルトの値が定められていても良い。
【0062】
また、プロセッサー210は、脅威度の予測の対象として決定した各脆弱性IDについて、当該脆弱性IDに関する情報を取得する。プロセッサー210は、当該脆弱性IDに関する情報として、脆弱性DB242において当該脆弱性IDに関連付けられたデータを取得する。また、プロセッサー210は、当該脆弱性IDに関する情報として、当該脆弱性IDに関連付けられた投稿ID情報に含まれる各投稿IDで特定される投稿データを取得する。プロセッサー210は、収集DB241を参照して、各投稿データを取得する。
【0063】
直近のN回とは、(ステップST12で用いた時刻t3-(N-1)×t1)より後、ステップST12で用いた時刻t3までの期間を示す。したがって、直近のN回は、予め定められた期間の一例である。したがって、プロセッサー210は、ステップST21の処理を行うことで、予め定められた期間内における識別情報を投稿内容に含む投稿の投稿数が、予め定められた閾値以上である場合に、脆弱性を前記脅威度の予測の対象として決定する決定部の一例として機能する。
【0064】
ステップST22においてプロセッサー210は、分析要求を生成する。分析要求は、ステップST21で脅威度の予測の対象として決定された各脆弱性ID、及びステップST21で取得された、当該各脆弱性IDに関する情報を含む。プロセッサー210は、分析要求に含まれる各脆弱性IDについての脅威度を予測するように要求する情報である。プロセッサー210は、分析要求を生成した後、当該分析要求を分析サーバー100に送信するように通信インターフェース350に対して指示する。この送信の指示を受けて通信インターフェース350は、当該分析要求を分析サーバー100に送信する。送信された当該分析要求は、分析サーバー100の通信インターフェース250によって受信される。プロセッサー210は、ステップST22の処理の後、ステップST11へと戻る。
【0065】
一方、
図3のステップST31において分析サーバー100のプロセッサー110は、脅威度分析を開始するか否かを判定する。脅威度分析は、脆弱性についての脅威度を算出する処理である。プロセッサー110は、ステップST31において、通信インターフェース250によって分析要求が受信されるのを待ち受けている。プロセッサー110は、例えば、分析要求が受信されたことに応じて脅威度分析を開始すると判定する。プロセッサー110は、脅威度分析を開始すると判定しないならば、ステップST31においてNoと判定してステップST31の処理を繰り返す。そして、プロセッサー110は、脅威度分析を開始すると判定するならば、ステップST31においてYesと判定してステップST32へと進む。
【0066】
ステップST32においてプロセッサー110は、ステップST31で受信された分析要求に含まれる各脆弱性IDについて脅威度分析を実行する。プロセッサー110は、例えば、脅威予測モデルを用いて脅威度を予測する。脅威予測モデルは、脆弱性の脅威度を予測することができる学習済みAI(artificial intelligence)モデルである。なお、分析システム1は、脆弱性の脅威度として、例えば、CVSS(Common Vulnerability Scoring System)スコアを用いる。
【0067】
脅威予測モデルは、例えば、脆弱性IDを含む投稿の投稿日時、又は当該投稿日時を用いて作成された時系列データを説明変数とし、脅威度を目的変数とした学習モデルである。当該時系列データは、脆弱性IDを含む投稿の時間帯ごとの投稿数を示すデータである。
【0068】
したがって、プロセッサー110は、脅威度を予測する対象の脆弱性IDについて、当該脆弱性IDを含む各投稿データの投稿日時、又は当該各投稿データの時系列データを脅威予測モデルに入力する。そして、プロセッサー110は、脅威予測モデルの出力データとして、当該脆弱性IDの脅威度の予測値を得る。
【0069】
以下、脅威予測モデルの作成方法について説明する。なお、分析サーバー100が脅威予測モデルを作成するものとして説明するが、分析サーバー100以外の装置が脅威予測モデルを作成しても良い。
【0070】
プロセッサー110は、SNSサーバー300から、予め定められた観測期間内に投稿された投稿のうち、脆弱性IDを含む投稿の投稿データを収集する。このために、プロセッサー110は、脆弱性共通文字列を含む投稿データをSNSサーバー300から取得する。そして、プロセッサー210は、取得した各投稿データから脆弱性IDを抽出する。プロセッサー210は、脆弱性IDを抽出できた投稿データの集合を学習のためのデータセットとして用いる。このように、プロセッサー210は、脆弱性IDを含む投稿の投稿データの集合をデータセットとして用いる。
【0071】
プロセッサー110は、前処理として、投稿数が少なく時系列データの作成が困難な脆弱性IDを除外するスクリーニング処理を行うことが好ましい。このために、プロセッサー110は、データセットを用いて、例えば、少なくともM人以上のユーザーによって投稿された脆弱性IDを特定する。Mは、正の整数である。Mは、例えば、脅威予測モデルの作成者、又は分析システム1の管理者又は設計者などによって予め設定される。Mの値は、一例として10である。プロセッサー110は、特定した脆弱性IDを、時系列データ化する対象として決定する。なお、M人は、予め定められた人数の一例である。
【0072】
プロセッサー110は、時系列データ化する対象として決定した脆弱性IDについて、時系列データ化する。時系列データは、当該脆弱性IDを含む投稿の時間帯ごとの投稿数を示すデータである。時系列データは、一例として、1時間ごとの投稿数を示す。
【0073】
そして、プロセッサー110は、作成した時系列データ化した脆弱性IDについて、観測期間内で最初に当該脆弱性IDを含む投稿が行われた日時から、特定期間内の投稿の時系列データを抽出する。特定期間は、例えば、6時間~48時間である。
【0074】
また、プロセッサー110は、時系列データ化する対象として決定した脆弱性IDについて、脅威度を脆弱性情報データベースから取得する。
【0075】
プロセッサー110は、時系列データ化する対象として決定した各脆弱性IDについての抽出した時系列データと取得した脅威度とを用いて、特徴量化ライブラリを用いて特徴量化する。当該特徴量ライブラリは、一例として、Tsfreshである。そして、プロセッサー110は、この特徴量を用いて学習モデル(脅威予測モデル)を作成する。プロセッサー110は、一例として、ランダムフォレストを用いて学習モデルを作成する。また、プロセッサー110は、一例として、scikit-learnのデフォルト値を用いて学習モデルを作成する。
【0076】
なお、プロセッサー110は、データセットのうち、一部を訓練データとして用い、残りをテストデータとして用いることが好ましい。一例として、データセットのうちの訓練データの割合は70%で、テストデータの割合は30%である。
【0077】
プロセッサー110は、訓練データを用いて作成した学習モデルを、テストデータを用いて評価することができる。
【0078】
なお、プロセッサー110は、Grid searchによる最適パラメーター探索を行って学習モデルを作成しても良い。
【0079】
以上より、プロセッサー110は、ステップST32の処理を実行することで、脆弱性に付与された識別情報を投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を学習済みモデルに入力し、学習済みモデルの出力として、脆弱性の脅威度の予測値を得る、予測部の一例として機能する。
【0080】
また、プロセッサー110は、通信インターフェース250によって受信された分析要求に含まれる各脆弱性IDで特定される脆弱性の脅威度を予測する。したがって、プロセッサー110は、受信された分析要求に基づきステップST32の処理を実行することで、決定部によって決定された脆弱性の脅威度の予測値を得る、予測部の一例として機能する。
【0081】
また、プロセッサー110は、脅威予測モデルを作成することで、複数の脆弱性のそれぞれに付与された識別情報ごとの、識別情報を投稿内容に含むSNSへの投稿の時間帯ごとの投稿数を説明変数とし、複数の脆弱性のそれぞれの脅威度を目的変数として、機械学習を行うことで学習済みモデルを作成する学習部の一例として機能する。
【0082】
ステップST33においてプロセッサー110は、ステップST32で予測した脅威度を用いて、脅威度の閲覧用のデータ(以下「閲覧用データ」という。)を生成する。閲覧データによって液晶ディスプレイなどのディスプレイに表示される画面の例を
図4及び
図5を用いて説明する。閲覧用データは、当該画面に表示させるために必要なデータである。
図4は、ディスプレイに表示される一覧画面SC1の一例を示す図である。
図5は、ディスプレイに表示される詳細画面SC2の一例を示す図である。
【0083】
図4に示す一覧画面SC1は、各脆弱性に対応する領域AR11を脅威度順に並べて表示したものである。領域AR11は、対応する脆弱性IDとその脅威度を左右に並べて表示したものである。領域AR11は、それぞれがボタンとなっている。当該ボタンが操作された場合、操作された領域に対応する脆弱性IDについての詳細画面SC2が画面に表示される。
【0084】
図5に示す詳細画面SC2は、一覧画面SC1において操作された領域に対応する脆弱性IDについての詳細を表示する画面である。評価画面SC2は、一例として、領域AR21~領域AR23を含む。
【0085】
領域AR21は、詳細を表示中の脆弱性IDを示す。
領域AR22は、詳細を表示中の脆弱性IDについてのワードクラウドを表示する。
領域AR23は、詳細を表示中の脆弱性IDを含む投稿の投稿内容と、当該投稿内容に含まれるリンクを左右に並べて表示したものの一覧である。
【0086】
プロセッサー110は、例えば、要求に応じて閲覧用データを、通信インターフェース150を介して送信する。一覧画面SC1及び詳細画面SC2は、例えば、分析サーバー100のダッシュボードにアクセスすることで閲覧可能である。プロセッサー110は、ステップST33の処理の後、ステップST31へと戻る。
【0087】
以下、前述の手法によって実際に作成した学習モデルの評価値について説明する。なお、学習モデル作成に用いた脆弱性情報データベースは、CVEである。学習モデル作成に用いたSNSには、Twitterである。また、プロセッサー110は、特定期間を6時間~48時間まで6時間きざみに変更して8種類の学習モデルを作成した。
【0088】
また、プロセッサー110は、各学習モデルの評価のために、訓練データとテストデータの分割をランダムに10回行った。そして、プロセッサー110は、10回の分割それぞれについて、訓練データを用いた学習モデルの作成及びテストデータを用いた評価値の算出を行った。そして、プロセッサー110は、10回分の評価値の平均値を算出した。
【0089】
【0090】
表1に示すように、深刻な脆弱性の見落とし率を示すrecallは最大0.90と高水準である。したがって、Tiwtterの投稿数(ツイート数)を用いた学習モデルは、深刻度の高い脆弱性を絞り込むために有効となることが分かる。
【0091】
また、特定期間を48時間とし、Grid searchによる最適パラメーター探索を行った場合のrecallは0.93、F1-Scoreは0.81であった。したがって、パラメーター最適化により、評価値が向上することが分かる。
【0092】
実施形態の分析システム1は、脆弱性IDを投稿内容に含む、SNSへの投稿の時間帯ごとの投稿数を入力データとして、学習済みモデルである脅威予測モデルの出力データとして、脆弱性の脅威度を予測する。このように、実施形態の分析システム1は、SNSの投稿データを用いて脆弱性の脅威度を予測する。したがって、実施形態の分析システム1は、脆弱性の脅威度を予測するために、当該脆弱性の深刻度のスコアなどの、長期間のデータ観測が必要なデータを利用しない。したがって、実施形態の分析システム1は、従来よりも脆弱性の脅威度を従来よりも早期に予測可能である。
【0093】
また、実施形態の分析システム1は、分析システム1が自動で実行可能である。したがって、専門家による分析及び構造化などの作業が不要である。
【0094】
また、実施形態の分析システム1は、投稿内容のうち脅威度の予測に用いる文字列は、脆弱性IDである。したがって、実施形態の分析システム1は、自然言語処理が不要である。
【0095】
また、実施形態の分析システム1は、脆弱性IDごとに脅威度を予測する。したがって、実施形態の分析システム1は、個別の脆弱性の脅威度の予測が可能である。
【0096】
また、実施形態の分析システム1は、直近N回分という予め定められた期間において収集された投稿データにおける直近投稿数PLが投稿数閾値K以上である脆弱性について、脅威度の予測を行う。このように、分析システム1は、脅威予測モデルを用いなくても脅威度が低いと予想可能な脆弱性については脅威予測モデルを用いた脅威度の予測の対象外とすることができる。
【0097】
また、実施形態の分析システム1は、M人以上のユーザーによって投稿された脆弱性IDを投稿内容に含む投稿の時系列データを、脅威予測モデルの作成に用いる。このように、実施形態の分析システム1は、投稿数が少ない脆弱性IDを学習に用いないことで、学習の精度を上げることができると考えられる。
【0098】
上記の実施形態は、以下のような変形も可能である。
上記の実施形態では、直近投稿数情報は、関連付けられた脆弱性IDが、直近のN回分の収集で収集された投稿データから抽出された回数を示す情報である。しかしながら、直近投稿数情報は、関連付けられた脆弱性IDが、直近の期間t4内に投稿された投稿データから抽出された回数を示す情報であっても良い。期間t4の値は、例えば、分析システム1の設計者又は管理者などによって予め設定される。期間t4の値は、デフォルトの値が定められていても良い。期間t4は、予め定められた期間の一例である。
【0099】
収集サーバー200のプロセッサー210は、収集日時として、時刻t3に代えて時刻t2を用いても良い。
【0100】
収集サーバー200のプロセッサー210は、投稿時刻が時刻t2から時刻t3の範囲内という条件で投稿データを取得しても良い。そして、プロセッサー210は、このように取得した投稿データの中から、投稿内容に脆弱性共通文字列を含む投稿データを取得する。
【0101】
上記の実施形態において収集サーバー200が行う処理の一部又は全部を分析サーバー100が実行しても良い。上記の実施形態において分析サーバー100が行う処理の一部又は全部を収集サーバー200が行っても良い。上記の実施形態において収集サーバー200が行う処理の一部又は全部をSNSサーバー300が行っても良い。
【0102】
分析サーバー100は、収集サーバー200を兼ねていても良い。分析サーバー100は、収集サーバー200及びSNSサーバー300を兼ねていても良い。収集サーバー200は、SNSサーバー300を兼ねていても良い。
【0103】
実施形態の各装置は、複数の装置からなるものであっても良い。
【0104】
プロセッサー110、プロセッサー210及びプロセッサー310は、上記実施形態においてプログラムによって実現する処理の一部又は全部を、回路のハードウェア構成によって実現するものであっても良い。
【0105】
実施形態の処理を実現するプログラムは、例えば装置内の非一時的な記憶媒体に記憶された状態で譲渡される。しかしながら、当該装置は、当該プログラムが記憶されない状態で譲渡されても良い。そして、当該プログラムが別途に譲渡され、当該装置へと書き込まれても良い。このときのプログラムの譲渡は、例えば、リムーバブルで非一時的な記憶媒体に記録して、あるいはインターネット又はLANなどのネットワークを介したダウンロードによって実現できる。
【0106】
以上、本発明の実施形態を説明したが、例として示したものであり、本発明の範囲を限定するものではない。本発明の実施形態は、本発明の要旨を逸脱しない範囲において種々の態様で実施可能である。
【符号の説明】
【0107】
1 分析システム
100 分析サーバー
110,210,310 プロセッサー
120,220,320 ROM
130,230,330 RAM
140,240,340 補助記憶装置
141 脅威度DB
150,250,350 通信インターフェース
160,260,360 バス
200 収集サーバー
241 収集DB
242 脆弱性DB
300 SNSサーバー