JP6599053B1 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法及び情報処理プログラム Download PDF

Info

Publication number
JP6599053B1
JP6599053B1 JP2019520661A JP2019520661A JP6599053B1 JP 6599053 B1 JP6599053 B1 JP 6599053B1 JP 2019520661 A JP2019520661 A JP 2019520661A JP 2019520661 A JP2019520661 A JP 2019520661A JP 6599053 B1 JP6599053 B1 JP 6599053B1
Authority
JP
Japan
Prior art keywords
information
variable
vulnerability
candidate
correspondence
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.)
Expired - Fee Related
Application number
JP2019520661A
Other languages
English (en)
Other versions
JPWO2020136793A1 (ja
Inventor
武 植田
孝一 清水
俊 日夏
雅道 丹治
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6599053B1 publication Critical patent/JP6599053B1/ja
Publication of JPWO2020136793A1 publication Critical patent/JPWO2020136793A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

変数判別部(22)は、機器で実行されるプログラムに含まれる複数の変数の各々の種別を判別する。候補生成部(23)は、変数判別部(22)により判別された複数の変数の各々の種別と、機器が用いる複数の情報資産の各々の種別とを比較し、複数の情報資産の各々と複数の変数の各々との対応関係の候補を1つ以上生成する。

Description

本発明は、脆弱性分析に関する。
セキュリティを考慮した開発プロセスでは、セキュリティ上の問題である脆弱性を作りこまないようにするために、開発上流の段階からセキュリティに関する分析や検討を行う。まず、システム設計等の開発上流フェーズで、開発対象システムで発生してはならない脅威を洗い出すための脅威分析を実施する(例えば、通信路を流れる機密情報が盗聴される等の脅威が洗い出される)。そして、脅威分析の結果に基づき、その脅威に至らないようにするための対策の方針を検討する(例えば、通信路を暗号化する必要がある等)。更に開発フェーズが進み設計及び実装の段階になると、開発対象システムを実現するための処理内容及び処理内容を実現するプログラムの具体的な実現方法に適したセキュリティ機能や運用方法を検討する。そして、検討結果を設計及び実装に盛り込む。設計及び実装の最終段階では、設計及び実装したプログラムに脆弱性がないかを確認するための分析を行う。
脆弱性がないかを確認する脆弱性分析装置の実現方法の一つとして、設計及び実装したプログラムの仕様又はプログラム自身を静的に分析する技術が存在する。
従来の脆弱性分析装置は、予め定められたルールに従い汚染分析等の分析技術を使ってプログラムのソースコードを分析する(例えば、特許文献1)。
また、プログラムの仕様をモデルで形式的に記述し、モデル検査と呼ばれる形式手法を使ってプログラムの動作が脆弱性を発生させる性質を満たすかを数学的に証明する手法も提案されている(例えば、特許文献2)。
特許第5740702号公報 特開2008−262311号公報
特許文献1の手法では、予め決められたルールに従いプログラムのソースコードを分析する。このため、上流工程で実施した脅威分析の後に検討したセキュリティ対策の設計及び実装の抜けや誤りに起因する脆弱性の確認ができない。
また、特許文献2の手法では、証明すべき対象の性質を定義または選択すれば検証が可能である。証明すべき対象の性質を正しく定義または選択するには、設計及び実装の仕様が正しくはどうなるべきかの詳細までを把握する必要がある。しかし、脅威分析は設計及び実装の仕様が未確定である開発上流フェーズで実施するものである。このため、脅威分析の結果とプログラムを設計及び実装した仕様とを対応付けて、証明すべき対象の性質を定義または選択することは非常に手間がかかる。また、プログラムの仕様を静的に分析する手法では、プログラム全体を分析対象とすると、メモリ等の計算機リソースを多く必要とし、計算時間も長くなる。
効率的に脆弱性分析を行うためには、上流工程での脅威分析後のセキュリティ対策が盛り込まれたプログラム(機器で実行されるプログラム)内の部分と当該機器が用いる情報資産との関係と、機器の情報資産と脆弱性との関係とを明確にすることが有用である。
このような観点より、本発明は、プログラム内の部分と情報資産と脆弱性との対応関係の明確化に資することを主な目的とする。
本発明に係る情報処理装置は、
機器で実行されるプログラムに含まれる複数の変数の各々の種別を判別する変数判別部と、
前記変数判別部により判別された前記複数の変数の各々の種別と、前記機器が用いる複数の情報資産の各々の種別とを比較し、前記複数の情報資産の各々と前記複数の変数の各々との対応関係の候補を1つ以上生成する候補生成部とを有する。
本発明によれば、機器で実行されるプログラムに含まれる変数と機器が用いる情報資産との対応関係の候補を生成するため、プログラム内の部分と情報資産と脆弱性との対応関係の明確化に資することができる。
実施の形態1に係る脆弱性分析装置の構成例を示す図。 実施の形態1に係る脆弱性分析装置の動作例を示すフローチャート。 実施の形態1に係るコントローラに関する情報資産フローの例を示す図。 実施の形態1に係るプログラム仕様の例を示す図。 実施の形態1に係る構成要素とプログラム仕様の対応関係の例を示す図。 実施の形態1に係る脅威分析結果の例を示す図。 実施の形態1に係る変数判別部の動作例を示すフローチャート。 実施の形態1に係る処理種別DBの例を示す図。 実施の形態1に係るプログラム変数処理関係の例を示す図。 実施の形態1に係る情報資産−変数対応関係候補の例を示す図。 実施の形態1に係る関連脅威一覧の抽出動作の例を示す図。 実施の形態1に係る関連脅威一覧の例を示す図。 実施の形態1に係る脅威−脆弱性種別対応DBの例を示す図。 実施の形態1に係る脆弱性種別候補の例を示す図。 実施の形態1に係る脆弱性検出結果の例を示す図。 実施の形態2に係る脆弱性分析装置の構成例を示す図。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係る脆弱性分析装置10の構成を説明する。
脆弱性分析装置10は、情報処理装置に相当する。
脆弱性分析装置10は、コンピュータである。脆弱性分析装置10は、プロセッサ11と、メモリ12と、ストレージ13と、通信インタフェース14といったハードウェアを備える。信号線を介してプロプロセッサ11と他のハードウェアとは接続され、プロセッサ11はこれら他のハードウェアを制御する。
プロセッサ11は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。なお、図1では、プロセッサ11は、1つだけ示されている。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。
メモリ12は、プロセッサ11のプロセッシングのためにデータを一時的に記憶する記憶装置である。メモリ12は、具体例としては、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。
ストレージ13は、データを保管する記憶装置である。ストレージ13は、具体例としては、HDD(Hard Disk Drive)である。また、ストレージ13は、SSD(Solide State Drive)でも良い。また、ストレージ13は、SD(登録商標、Secure Digital)メモリカード、CF(CompactFlash、登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。
通信インタフェース14は、外部の装置と通信するためのインタフェースである。通信インタフェース14は、具体例としては、Ethernet(登録商標)、USB(Universal Serial Bus)、HDMI(登録商標、High−Definition Multimedia Interface)のポートである。
脆弱性分析装置10は、機能構成要素として、第1の受付部21、変数判別部22、候補生成部23、第2の受付部24、関連脅威抽出部25、脆弱性候補抽出部26、脆弱性分析部27を備える。第2の受付部24は、出力部に相当する。
脆弱性分析装置10の各機能構成要素の機能はプログラムにより実現される。
脆弱性分析装置10の各機能構成要素の機能を実現するプログラムは、ストレージ13に格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、脆弱性分析装置10の各機能構成要素の機能が実現される。
脆弱性分析装置10の各機能構成要素の機能は、そのプログラムで行う分析の動作を決定する情報及び判断の条件を決定する情報をストレージ13に保存されるデータベースや設定ファイルから読み込みこんでも良い。また、分析の動作を決定する情報及び判断の条件を決定する情報をプログラムの一部としても良い。例えば、本実施の形態では、変数判別部22は処理種別DB31を読み込んで分析の動作を変更する。また、脆弱性候補抽出部26は脅威−脆弱性対応DB32を読み込んで分析の動作を変更する。
なお、図1では脆弱性分析装置10が1台のみでの構成を例示した。これに代えて、複数のコンピュータがネットワークを経由して接続され、複数のコンピュータが協働して、脆弱性分析システムを構成するようにしてもよい。
更に、図1では、利用者が脆弱性分析装置10への入力や出力を行うための入出力装置が通信インタフェース14を介して接続されることが想定されている。これに代えて、脆弱性分析装置10に入力や出力を行うためのインタフェースを設け、脆弱性分析装置10を利用者が直接操作するようにしてもよい。
***動作の説明***
図2から図15を参照して、実施の形態1に係る脆弱性分析装置10の動作を説明する。なお、以下に示す脆弱性分析装置10の動作は、情報処理方法及び情報処理プログラムに相当する。
図2は、実施の形態1に係る脆弱性分析装置10の全体動作を示すフローチャートである。
最初に、第1の受付部21が、分析に必要な各種情報の入力を受け付ける(ステップS1)。
ステップS1では、第1の受付部21は、後述する情報資産フロー41(図3)、プログラム仕様42(図4)、構成要素とプログラム仕様の対応関係43(図5)、脅威分析結果44(図6)を受け付ける。
また、変数判別部22が、プログラム仕様42で表されるプログラムに含まれる変数を抽出し、抽出した変数の種別を判別する(ステップS2)。
後述するように、プログラム仕様42は、開発対象の機器で実行されるプログラム(ソースコード)又はプログラムの特徴が記載される情報(フローチャート、UML(Unified Modeling Language)又はSysMLのアクティビティ図又はシーケンス図等)である。
変数判別部22は、抽出した変数の種別として、抽出した変数が入力変数、出力変数、内部利用変数のいずれであるかを判別する。
次に、候補生成部23が、情報資産と変数の対応関係の候補を生成する(ステップS3)。
候補生成部23は、変数判別部22により判別された変数の種別と、機器が用いる情報資産の種別とを比較し、情報資産と変数の対応関係の候補を1つ以上生成する。
情報資産とは、本明細書では、脅威分析により構成要素(機器)が用いると判定された情報である。具体的には、構成要素(機器)の情報資産は、情報資産フロー41(図3)に記述されている。
情報資産の種別には、機器に入力される情報資産である入力情報資産、機器から機器の外部に出力される情報資産である出力情報資産、機器の内部で利用される情報資産である内部利用情報資産がある。
候補生成部23は、入力情報資産と入力変数、出力情報資産と出力変数、内部利用情報資産と内部利用変数とを対応付けて対応関係の候補を生成する。
なお、対応関係の候補が複数存在する場合には、第2の受付部24が複数の対応関係の候補を出力する。そして、第2の受付部24は、脆弱性分析装置10の利用者による、対応関係の選択を受け付ける(ステップS4)。
つまり、第2の受付部24は、複数の対応関係の候補を例えば入出力装置に表示し、脆弱性分析装置10の利用者が表示された複数の対応関係の候補の中から該当する対応関係を選択する。そして、第2の受付部24が、利用者からの選択を受け付ける。
次に、関連脅威抽出部25が、情報資産と変数との対応関係に基づき、関連する脅威を抽出する(ステップS5)。
つまり、ステップS3で対応関係の候補が1つだけ生成された場合は、関連脅威抽出部25は、1つだけ生成された対応関係の候補に基づき、関連する脅威を抽出する。一方、ステップS3で対応関係の候補が複数生成され、ステップS4での対応関係の選択が受け付けられた場合は、ステップS4で選択された対応関係に基づき、関連する脅威を抽出する。
関連脅威抽出部25は、具体的には、ステップS1で受け付けた脅威分析結果44(図6)から関連する脅威を抽出する。
次に、脆弱性候補抽出部26が、関連する脅威に至る攻撃に利用される恐れのある脆弱性の種別の候補を抽出する(ステップS6)。
最後に、脆弱性分析部27が、脆弱性の種別の候補がプログラム仕様42の記述で発生し得るかを調べるための脆弱性分析を実施し、分析結果を出力する(ステップS7)。
次に、図2の各ステップの動作を順次説明していく。
(図2のステップS1:第1の受付処理)
第1の受付部21は、情報資産フロー41(図3)と、プログラム仕様42(図4)と、構成要素とプログラム仕様の対応関係43(図5)と、脅威分析結果44(図6)とを受け付ける。
具体的には、通信インタフェース14を介して接続された入出力装置が利用者によって操作される。利用者の操作により、情報資産フロー41と、プログラム仕様42と、構成要素とプログラム仕様の対応関係43と、脅威分析結果44とが入力される。そして、第1の受付部21は、通信インタフェース14を介して入力された情報資産フロー41と、プログラム仕様42と、構成要素とプログラム仕様の対応関係43と、脅威分析結果44とを受け付ける。
更に、第1の受付部21は、情報資産フロー41と、プログラム仕様42と、構成要素とプログラム仕様の対応関係43と、脅威分析結果44とを、それぞれメモリ12に書き込む。
図3を参照して、情報資産フロー41の一例を説明する。
情報資産フロー41は、脅威分析が行われた後の情報資産の流れ(フロー)が整理されて得られる。情報資産フロー41は、開発対象システムに含まれる機器ごとに生成される。
情報資産フロー41には、開発対象システムを構成する構成要素(機器)である構成要素411と、構成要素411と関連する構成要素(機器)である関連要素412と、構成要素411と関連要素412との間の接続関係413と、情報資産の名称414と、情報資産の種別415とが含まれる。
情報資産の種別は、前述したように、入力情報資産、出力情報資産及び内部利用情報資産である。入力情報資産、出力情報資産及び内部利用情報資産以外の情報資産の種別があってもよい。
「入力」とは、構成要素411の外部から構成要素411に入力される情報資産のフローである。「出力」とは、構成要素411から構成要素411の外部に出力される情報資産のフローである。「内部利用」とは、構成要素411の内部のみで利用される情報資産のフローである。
情報資産フロー41は、具体的には、図3に示すように、UMLのコミュニケーション図を拡張したような図で表わすことができる。図3において、矩形は構成要素411又は関連要素412を表わす。構成要素411は、図3の例では「コントローラ」である。また、関連要素412は、図3の例では、「HMI」と「デバイス」である。
接続関係413は、構成要素411と関連要素412とを結ぶ実線で表される。
更に、図3では、接続関係413の付近に矢印が示されている。これら矢印は情報資産のフローを表す。矢印の方向が情報資産のフローの方向を表す。
また、コントローラから接続関係413とは無関係に始点が丸である線も伸びている。この線も情報資産のフローを表す。この線は、構成要素411と関連要素412との間ではフローがないこと、つまり、内部利用情報資産であることを示す。
情報資産のフローの線の付近に配置されている文字列がそのフローで扱う情報資産の名称414である。また≪≫で囲まれる文字列は、情報資産の種別415である。例えば、図3中のHMIからコントローラに向かう矢印は情報資産「コマンド」が「HMI」から「コントローラ」に向かって流れることを意味する。そして、当該矢印は「コントローラ」の立場では、情報資産の種別415が「入力」(入力情報資産)であることを示す。また、「コントローラ」から伸びる始点が丸の線は、情報資産「MAC鍵」の種別415が「内部利用」(内部利用情報資産)であること、すなわち、情報資産「MAC鍵」がコントローラの内部で利用されることを示す。
なお、情報資産フロー41は、情報資産情報に相当する。
次に、図4を参照して、プログラム仕様42の一例を説明する。
プログラム仕様42は、脆弱性分析する対象のプログラムの名称421と変数の流れ(データフロー)や処理の流れ(制御フロー)を表現するプログラム処理内容422を含む。
具体的には、プログラム仕様42には、脅威分析が行われた後の開発対象システムに含まれる機器(図3の構成要素411に対応)で実行されるプログラム全体もしくはその一部となるロジックが記述される。開発対象システムに含まれる機器ごとにプログラム仕様42が記述される。
また、脆弱性分析の対象でない機器及びプログラムの一部については、プログラム仕様42を脆弱性分析装置10に入力しなくてもよい。
なお、プログラム仕様42は、具体的には、ソースコードもしくはプログラムモデルである。
プログラムモデルとは、フローチャート、UML、SysMLのようなプログラムの構造及び動作を図表で記述できる情報である。プログラムモデルは、例えば、プログラム言語で記述されたソースコード、処理/判断をC言語等のプログラム言語の形式で記述(m=n+1やm=add(n,1)等)されたフローチャートである。プログラムモデルは、また、UML又はSysMLのアクティビティ図又はシーケンス図、DFD、制御工学等で用いられるブロック線図が該当する。プログラムモデルは、プロセッサ11(変数判別部22)でその内容を処理できるように、階層的な構造を表現できるデータ形式で記述されて保管される。プログラムモデルは、例えば、XML(Extensible Markup Language)とJSON(JavaScript(登録商標) Object Notation)といったデータ形式で記述される。例えば、図4は、構成要素「コントローラ」のHMIとの通信処理に関するプログラム仕様42の一例を示している。図4では、一般的なC言語のソースコードの形式で、コントローラで動作するプログラムの一部の動作内容が記述されている。
また、プログラムの名称421は、「PROGRAM_C.C」であり、プログラム処理内容422は、C言語の記述内容である。図4の例では、プログラムの名称421は、C言語のソースコードのファイル名で示しているが、脆弱性分析装置10が一意に各プログラム仕様42を判別できる情報であればどのような形式でも良い。なお、プログラムの名称421は、後述する構成要素とプログラム仕様の対応関係43で利用される。
次に、図5を参照して、構成要素とプログラム仕様の対応関係43の一例を説明する。
構成要素とプログラム仕様の対応関係43は、脆弱性分析の対象とする構成要素431とプログラム仕様432との対応関係を示す。
構成要素とプログラム仕様の対応関係43は、例えば、図5のような表として表現することができる。図5では、構成要素「コントローラ」で検査対象となるプログラム仕様42が2つあり、それぞれが「PROGRAM_C.C」と「PROGRAM_D.C」である。
次に、図6を参照して、脅威分析結果44の一例を説明する。
脅威分析結果44には、開発対象システムに対する脅威分析の結果が示される。
脅威分析結果44には、脅威441、構成要素442、関係する情報資産443及び脅威の種別444が含まれる。
脅威441には、脅威の内容が示される。
構成要素442には、脅威が発生する構成要素または接続関係が示される。
関係する情報資産443には、脅威に関係する情報資産が示される。
脅威の種別444には、脅威が発生した際に情報資産に与える影響の種別が示される。脅威の種別444には、例えば、一般的に情報セキュリティの属性を示すのに使われるC、I、Aのうちのいずれかが示される。なお、Cは機密性、Iは完全性、Aは可用性を意味する。
脅威分析結果44は、例えば、図6のように表の形式で表すことができる。図6の例では、1行目のレコードには、脅威441として「推測による漏洩」が示され、構成要素442として脅威が発生する構成要素である「リモート端末」が示され、関係する情報資産443として推測の漏洩に関係する「パスワード」が示され、また、脅威の種別444として「C」が示される。
(図2のステップS2:プログラム変数処理関係分析処理)
変数判別部22は、ステップS1で受け入れられたプログラム仕様42に含まれる変数が用いられている処理に基づいて、変数の種別を判別し、変数間の伝搬関係及び処理の順番を分析する。
より具体的には、変数判別部22は、変数が用いられている処理が、入力処理、出力処理及び内部利用処理のいずれであるかを判別する。入力処理とは、機器の外部から値を入力する処理である。出力処理は、機器の外部に値を出力する処理である。内部利用処理とは、機器の内部で値を利用する処理である。変数判別部22は、処理の種別に基づいて変数の種別を判別する。
また、変数間の伝搬関係とは、変数間でのプログラム内部での値の伝搬関係である。
図7は、変数判別部22の動作例を説明するフローチャートである。
最初に、変数判別部22は、分析に必要な各種情報をメモリ12から読み込む(ステップS21)。
次に、変数判別部22は、プログラム仕様42に含まれる変数を抽出する(ステップS22)。
次に、変数判別部22は、抽出した変数の種別を判別する(ステップS23)。
次に、変数判別部22は、種別が判別できた各変数の伝搬関係及び処理順番を分析する(ステップS24)。
最後に、変数判別部22は、分析した結果をメモリ12に書き込む(ステップS25)。
次に、図7のステップS21〜S26の詳細を説明する。
<図7のステップS21の詳細>
ステップS21では、変数判別部22は、ストレージ13から処理種別DB31を読み出し、処理種別DB31をメモリ12に書き込む。
次に、変数判別部22は、プログラム仕様42と処理種別DB31の情報をメモリ12から読み出す。
ここで、プログラム仕様42は、ステップS1で受け付けられたプログラム仕様42である。
図8を参照して、処理種別DB31の一例を説明する。
処理種別DB31には、処理名311と処理種別312とが含まれる。
処理名311には、プログラム仕様42に含まれる処理の名称が示される。
処理種別312には、処理名311に示される処理が、入力処理、出力処理及び内部利用処理(セキュリティ処理)のいずれに該当するかが示される。図8では、入力処理はInputと記されている。出力処理はOutputと記されている。内部利用処理(セキュリティ処理)はSecurityと記されている。
処理名311に示される処理は、関数、メソッド等である。
図8の例では、例えば、処理名receiveMessageの処理種別は入力処理(Input)である。
<図7のステップS22の詳細>
ステップS22では、変数判別部22は、ステップS21で読み込んだプログラム仕様42から変数を抽出する。変数の抽出処理はプログラム仕様42の記述方法による異なる。
本実施の形態で説明に用いているプログラム仕様42(ソースコード)では、コンパイラで用いられる字句解析と構文解析の技術を用いることで、変数を抽出することができる。ソースコード以外の記述の場合も、変数判別部22は、それぞれの記述ルールに従い変数を抽出する。
<図7のステップS23の詳細>
ステップS23では、変数判別部22は、ステップS22で抽出された各変数の種別を判別する。
変数判別部22は、抽出した各変数が、処理種別DB31の処理名311に示される関数、メソッド等の処理に用いられているか否かを調べる。「処理に用いられている」とは、関数又はメソッドの引数として変数が用いられている、もしくは、関数又はメソッドの戻り値として変数が用いられていることを意味する。
抽出した変数が、処理名311に示される処理に用いられている場合は、変数判別部22は、対象の処理の処理種別312によって変数の種別を判別する。前述したように、変数判別部22は、処理の種別に基づいて、変数の種別を判別する。
より具体的には、例えば、プログラム仕様42がC言語で記述されている場合には、処理種別が「Input」であれば、変数判別部22は、戻り値又はアドレス渡しの引数(参照渡し引数も含む)で用いられた変数は「入力変数」と判定する。一方、処理種別が「Output」であれば、変数判別部22は、値渡しの引数で用いられた変数は「出力変数」と判別する。また、アドレス渡しの引数で用いられた変数は、変数判別部22は「入力変数」と「出力変数」の両者に判別する。また、変数判別部22は、戻値に用いられた変数は「入力変数」と判別する。更に、変数判別部22は、すべての変数に対して前述の判定を行った結果、いずれの種別にも判別されない変数であって、条件文に利用されている変数と、処理種別が「Secuirty」の関数の引数又は戻り値に用いられている変数は、「内部利用変数」と判別する。
例えば、図4で示したプログラム仕様42を、図8で示した処理種別DB31を使って、上記の判定規則で解析した場合には、msg、lenが「入力変数」になる。また、dev、val、retが「出力変数」になる。また、key、stateが「内部利用変数」になる。また、cmdは、いずれにも分類されない。
なお、図4の例では存在しないが、2以上の同じ変数が、それぞれ別の種別として判別できる場合には、それぞれの変数は別に取り扱う。例えば、変数msgを入力変数と判定した箇所とは異なる箇所で同じ変数msgが別の変数種別と判定できる場合は、変数判別部22は、それぞれを別の変数として取り扱う。また、変数判別部22は、同じ変数名でも区別できるようにする。変数判別部22は、例えば、msg:12といったように、変数名:行番号等の形式で各変数を一意に識別できるようにする。
また、上記では、ステップS23において、変数判別部22が処理種別DB31の情報を用いて変数の処理種別を判定する例を説明した。このように事前に生成されたルールに基づいて処理種別の判定が行われても良いし、変数判別部22に設定されたロジックにより行われても良い。
また、上記では、変数の種別を判定する処理では、関数での変数の扱われ方又は関数に事前に割り当てた処理種別によって、「入力変数」又は「出力変数」を決定している。更に、上記では、一定の条件を満たす変数を「内部利用変数」と判定している。しかしながら、変数の種別の判定規則として、別の規則を用いてもよい。
また、本実施の形態では、上記の判定規則は、変数判別部22の内部に保持されていることを想定しているが、ファイルやデータベースに判定規則が保持されていてもよい。また、判定規則を変更してもよい。
<図7のステップS24の詳細>
ステップS24では、変数判別部22が、ステップS23で種別が判定できた各変数の伝搬関係及び処理順番を分析する。伝搬関係とは、「入力変数」として判定した変数の値が他の変数に伝搬するデータフローのことである。変数判別部22は、既存の静的コード解析と同様に変数の代入関係等から伝搬関係を分析することができる。
例えば、図4で示したプログラム仕様42に、図8で示した処理種別DB31を使った場合には、変数判別部22は、図9の伝搬関係453を得ることになる。
<図7のステップS25の詳細>
ステップS25では、変数判別部22は、ステップS21〜S24で分析した結果をプログラム変数処理関係45(図9)としてメモリ12に書き込む。
図9を参照して、プログラム変数処理関係45の一例を説明する。
プログラム変数処理関係45は、プログラム仕様42内の変数について、変数判別部22の分析結果を表す。
プログラム変数処理関係45は、変数種別451、変数名452及び伝搬関係453を含む。
変数種別451には、変数判別部22の分析により得られた変数の種別が示される。
変数名452には、変数の名称が示される。
伝搬関係453には、前述したように、「入力変数」として判定した変数の値が他の変数に伝搬するデータフロー(伝搬関係)が示される。
図9に示す例では、変数名msgの変数種別は「入力変数」である。更に、伝搬関係453から、変数名msgは、出力変数dev、valに伝搬する。
(図2のステップS3:情報資産−変数対応推測処理)
候補生成部23は、ステップS1で入力された情報資産フロー41と、ステップS2で得られたプログラム変数処理関係45に基づき、情報資産と変数の対応関係の候補を生成する。
具体的には、候補生成部23は、情報資産フロー41とプログラム変数処理関係45とをメモリ12から読み出す。
次に、候補生成部23は、情報資産フロー41の「入力」とプログラム変数処理関係45の「入力変数」とをマッピングする。同様に、候補生成部23は、情報資産フロー41の「出力」とプログラム変数処理関係45の「出力変数」とをマッピングする。更に、候補生成部23は、情報資産フロー41の「内部利用」とプログラム変数処理関係45の「内部利用変数」とをマッピングする。このようにして、候補生成部23は、情報資産とプログラム仕様42の変数との組み合わせをすべて生成する。
そして、候補生成部23は、生成した対応関係の候補を、情報資産−変数対応関係候補46として、メモリ12に書き込む。
図10を参照して、情報資産−変数対応関係候補46の一例を説明する。
情報資産−変数対応関係候補46は、候補名461、入力または内部利用の情報資産462、変数名463、伝搬関係464、出力の情報資産465からなる。
図10の例では、候補1では、入力の情報資産であるコマンドは、変数len及びmsgと対応付けられている。また、入力の情報資産である値は、変数ansと対応付けられている。また、内部利用の情報資産であるMAC鍵は、変数keyと対応付けられている。また、出力の情報資産である指示は、変数dev及びvalと対応付けられている。また、出力の情報資産である応答は、変数retと対応付けられている。
情報資産−変数対応関係候補46に示される複数の候補は、各々異なっている。
(図2のステップS4:第2の受付処理)
ステップS3で生成された情報資産−変数対応関係候補46(図10)に複数の対応関係の候補が存在する場合は、第2の受付部24が情報資産−変数対応関係候補46を出力する。
そして、第2の受付部24は、利用者が選択した情報資産と変数の対応関係の選択を受け付ける。
具体的には、第2の受付部24は、情報資産−変数対応関係候補46をメモリ12から読み出す。情報資産−変数対応関係候補46に複数の対応関係の候補が存在する場合には、第2の受付部24は、情報資産−変数対応関係候補46を、通信インタフェース14を介して接続された入出力装置に送信する。
そして、入出力装置に情報資産−変数対応関係候補46が表示される。利用者は入出力装置に対する操作を行って、情報資産−変数対応関係候補46から情報資産−変数対応関係47を選択する。選択された情報資産−変数対応関係47が、通信インタフェース14を介して第2の受付部24に入力される。そして第2の受付部24は、通信インタフェース14を介して入力された情報資産−変数対応関係47を受け付ける。さらに第2の受付部24は、受け付けた情報資産−変数対応関係47をメモリ12に書き込む。情報資産−変数対応関係47は、実際の情報資産と変数との対応関係が示される、情報資産−変数対応関係候補46に含まれる対応関係の候補の1つである。
図10に示すように、情報資産−変数対応関係候補46には伝搬関係及び処理順番も含まれる。このため、利用者は伝搬関係及び処理順番を考慮して、情報資産−変数対応関係47を選択することができる。
ここでは、図10の候補1が、情報資産−変数対応関係47として選択されたものとする。
なお、情報資産−変数対応関係候補46に対応関係の候補が1つしかない場合は、ステップS4は行われないが、情報資産−変数対応関係候補46に含まれる当該対応関係の候補も、以下では、情報資産−変数対応関係47と称する。
(図2のステップS5:関連脅威抽出処理)
関連脅威抽出部25は、情報資産−変数対応関係47に基づき、プログラム仕様42に関連する脅威の一覧を、関連脅威一覧48として抽出する。なお、関連脅威一覧48の抽出はそれぞれのプログラム仕様42に対して行われる。
具体的には、関連脅威抽出部25は、脅威分析結果44(図6)と、構成要素とプログラム仕様の対応関係43(図5)とをメモリ12から読み込む。
そして、関連脅威抽出部25は、構成要素とプログラム仕様の対応関係43の各エントリを順に処理し、構成要素431の内容に対応する情報資産フロー41(図3)と、プログラム仕様432の内容に対応する情報資産−変数対応関係47とをメモリから読み込む。
そして、関連脅威抽出部25は、情報資産フロー41と、情報資産−変数対応関係47とを使って、脅威分析結果44(図6)からプログラム仕様42に関連する脅威を抽出する(詳細は図11を使い後述する)。
そして、関連脅威抽出部25は、抽出した結果を、関連脅威一覧48として、処理したプログラム仕様42に関連付けてメモリ12に書き込む。関連脅威抽出部25は、これらの動作を、構成要素とプログラム仕様の対応関係43(図5)のすべてのエントリについて行う。
関連脅威抽出部25は、例えば、図11に示す動作によって関連する脅威の抽出を行う。
まず、関連脅威抽出部25は、構成要素とプログラム仕様の対応関係43(図5)の構成要素431の記載内容が構成要素442に含まれるエントリを脅威分析結果44(図6)上で探索する。そして、関連脅威抽出部25は、探索により得られたエントリの脅威441の記載内容を仮に抽出する。
例えば、PROGRAM_C.Cに対して脅威抽出を行っている場合には、構成要素とプログラム仕様の対応関係43(図5)によれば、PROGRAM_C.Cが動作する構成要素はコントローラである。このため、関連脅威抽出部25は、構成要素442に「コントローラ」が含まれるエントリを脅威分析結果44(図6)上で探索する。脅威分析結果44(図6)では、「HMI−コントローラ間」、「コントローラ」及び「コントローラ−デバイス間」のエントリが得られる(図11の手順(1))。そして、関連脅威抽出部25は、これらエントリの脅威441に記載の「未暗号通信の改ざん」、「推測による漏えい」、「再送による改ざん」及び「再送によるDoS」を仮に抽出する(図11の手順(2))。
次に、関連脅威抽出部25は、探索により得られたエントリの関係する情報資産443の記載内容が情報資産−変数対応関係47において変数と対応付けられている場合に、該当するエントリの脅威441の記載内容を正式に抽出する。
関連脅威抽出部25は、図11の手順(1)で得られたエントリ(行番号4〜13)の関係する情報資産443の「コマンド」、「応答」、「MAC鍵」、「指示」、「値」及び「ステータス」のそれぞれが、情報資産−変数対応関係47(図10)において変数と対応付けられているか否かを判定する。
図10の情報資産−変数対応関係47では、「ステータス」以外の情報資産は変数と対応付けられている。
このため、関連脅威抽出部25は、図11の4行目〜11行目の脅威441の記載内容を正式に抽出する(図11の手順(3))。
そして、関連脅威抽出部25は、抽出した脅威441の記載内容を、関連脅威一覧48としてメモリ12に書き込む。
また、図12を参照して、関連脅威一覧48の一例を説明する。
関連脅威一覧48は、図11で例示した抽出処理によって抽出された脅威分析結果44の一部である。関連脅威一覧48は、関連するプログラム仕様42(図4)と対応付けて記憶される。また、関連脅威一覧48は、構成要素とプログラム仕様の対応関係43(図5)のエントリと対応付けされてもよい。
(図2のステップS6:関連脆弱性候補抽出処理)
脆弱性候補抽出部26は、ステップS5で抽出された関連脅威一覧48(図12)と、脅威−脆弱性種別対応DB32(図13)の情報に基づき、該当のプログラム仕様42(図4)に関連する脅威の攻撃に利用される可能性がある検査すべき脆弱性種別候補49を、個々の関連する脅威毎に抽出する。
具体的には、脆弱性候補抽出部26は、ストレージ13から脅威−脆弱性種別対応DB32を読み込み、脅威−脆弱性種別対応DB32をメモリ12に書き込む。
次に、脆弱性候補抽出部26は、構成要素とプログラム仕様の対応関係43(図5)をメモリ12から読み込む。
そして、脆弱性候補抽出部26は、構成要素とプログラム仕様の対応関係43(図5)の各エントリを順に処理し、プログラム仕様432に対応する関連脅威一覧48(図12)をメモリ12から読み込む。
次に、脆弱性候補抽出部26は、関連脅威一覧48に記載される脅威毎に脅威−脆弱性種別対応DB32のエントリを参照して、脅威と関係する脆弱性種別の候補を脆弱性種別一覧322から取得する。そして、脆弱性候補抽出部26は、取得した脆弱性種別の候補を脆弱性種別候補49(図14)として、個々の脅威と対応付けてメモリ12に書き込む。脆弱性候補抽出部26は、これをすべての脅威について行う。
そして、脆弱性候補抽出部26は、構成要素とプログラム仕様の対応関係43(図5)の次のエントリについても同様に処理を続け、すべてのエントリに対して脆弱性種別候補49の抽出を行う。
図13を参照して、脅威−脆弱性種別対応DB32の一例を説明する。
脅威−脆弱性種別対応DB32は、図13のように表の形式で表すことができる。
脅威−脆弱性種別対応DB32には、脅威321と、その脅威に対応する脆弱性種別一覧322の情報が含まれる。
脆弱性種別一覧322には、脅威に対応する脆弱性種別が列挙される。なお、脅威−脆弱性種別対応DB32に脅威のエントリが存在しない場合、もしくは、脅威のエントリは存在するが対応する脆弱性種別の記載がない場合は、その脅威にはプログラム仕様42で記述されるレベルで分析できる脆弱性種別が存在しない。例えば、図13の「故障」には脆弱性種別がないが、これは故障が機器の不具合であり、プログラムに起因する脆弱性ではないからである。このような、脆弱性がない場合には、脆弱性候補抽出部26は、後述するステップS7の脆弱性分析の結果出力において、脅威に対応する脆弱性の候補がないことを示す表示を含めてもよい。
図14を参照して、脆弱性種別候補49の一例を説明する。
脆弱性種別候補49は、関連脅威一覧48の脅威441と、構成要素442と、関係する情報資産443と、脅威の種別444と、脅威−脆弱性種別対応DB32の脆弱性種別一覧322とを対応付けた情報である。なお、図14と異なり、脆弱性種別候補49は、脅威441、関係する情報資産443及び脆弱性種別一覧322のみで構成されてもよい。また、脆弱性種別候補49に、図14に示されていない要素が含まれていてもよい。
(図2のステップS7:脆弱性分析処理)
脆弱性分析部27は、ステップS6で抽出された脆弱性種別候補49の脆弱性種別一覧322に示される脆弱性種別がプログラム仕様42に存在するかの分析を行う。そして、脆弱性分析部27は、分析結果を出力する。
脆弱性分析は、背景技術で説明したような静的コード解析又は形式的検証の技術を使って行われる。脆弱性分析部27は、脆弱性種別候補49の情報に従って、各脅威に関連する脆弱性を検査する。
具体的には、脆弱性分析部27は、脆弱性分析を行うプログラム仕様42(図4)と、対応する関連脅威一覧48(図12)と、各関連脅威に対応する脆弱性種別候補49(図14)とをメモリ12から読み出す。
次に、脆弱性分析部27は、脆弱性分析を行う。つまり、脆弱性分析部27は、脆弱性種別とそれに関連する変数を対応する関連脅威一覧48と脆弱性種別候補49に基づいて抽出し、脆弱性分析を行う。
そして、脆弱性分析部27は、脆弱性を検出した場合には、脆弱性検出結果410(図15)をメモリ12に書き込む(既に他の脆弱性検出結果410が存在する場合には新たな脆弱性検出結果410を既存の脆弱性検出結果410に追記する)。
脆弱性分析部27は、これをすべての検査対象のプログラム仕様42について行う。
すべての検査対象のプログラム仕様42に対してすべての脆弱性分析が完了した場合には、脆弱性分析部27は、通信インタフェース14を介して、接続された入出力装置に脆弱性検出結果410を送信する。
脆弱性検出結果410を受信した入出力装置は脆弱性検出結果410を表示する。また、脆弱性検出結果410をファイルに保存してもよい。
なお、脆弱性分析部27は、情報資産に対応付けられた変数も考慮して脆弱性分析を行う。
図15を参照して、脆弱性検出結果410の一例を説明する。
脆弱性検出結果410には、脆弱性種別411、変数412、箇所413、脅威414、構成要素415及び情報資産416が含まれる。
脆弱性種別411には、脆弱性分析部27が検出した脆弱性種別が示される。
変数412には、脆弱性分析部27が検出した脆弱性種別と関係する変数が示される。
箇所413には、脆弱性分析部27が検出した脆弱性種別と関係する、プログラム仕様42中の箇所が示される。
脅威414には、脆弱性分析部27が検出した脆弱性種別に対する脅威が示される。
構成要素415には、脆弱性分析部27が検出した脆弱性種別が存在する構成要素が示される。
情報資産416には、脆弱性分析部27が検出した脆弱性種別が存在する情報資産が示される。
図15は、PROGRAM_C.Cの脅威#6(推測による脅威)に関連する脆弱性検出結果410の一例を示している。図15の例では脆弱性種別411として「脆弱性1」が示される。また、変数412として「key」が示され、箇所413として「PROGRAM_C.Cの1行目」が示され、脅威414として「推測による漏えい」が示される。また、構成要素415として「コントローラ」が示され、情報資産416として「MAC鍵」が示される。
***実施の形態の効果の説明***
以上のように、本実施の形態によれば、機器で実行されるプログラムに含まれる変数と機器が用いる情報資産との対応関係の候補を生成するため、プログラム内の部分と情報資産と脆弱性との対応関係を明確にできる。
また、本実施の形態では、脅威分析の情報資産の流れと、プログラム仕様の変数の入力/出力の分類の対応関係に基づき、脅威分析の結果とプログラム仕様との対応関係を明確にできる。このため、本実施の形態によれば、脆弱性分析の時点において分析対象を絞り込むことできる。
また、本実施の形態では、脅威分析での情報資産の流れとプログラム仕様の変数の入出力関係の対応関係を分析して推測することができる。このため、本実施の形態によれば、脆弱性分析の利用者が個々にそれらを実行する手間を省くことができる。
更に、本実施の形態では、各脅威に結びつく攻撃に利用される脆弱性の対応関係を記憶している。このため、脆弱性分析の際に、脅威分析の結果から、対応関係を参照して、攻撃に利用される脆弱性を導出することができる。
実施の形態2.
実施の形態1では、脆弱性分析装置10は、外部から取得した情報資産フロー41(図3)から、脆弱性分析の対象のシステムの機器構成、情報資産の種別及び情報資産の流れを得る。
本実施の形態では、脆弱性分析装置10が、脆弱性分析の対象のシステムの機器構成、情報資産の種別及び情報資産の流れを分析する例を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
***構成の説明***
図16を参照して、実施の形態1に係る脆弱性分析装置10の構成を説明する。
図16では、図1の構成と比較して、情報資産判別部28が追加されている。図16に示す他の要素は、図1に示したものと同じである。
***動作の説明***
以下、図2を参照して、本実施の形態に係る脆弱性分析装置10の動作例を説明する。
本実施の形態では、図2のステップS1において、第1の受付部21が、情報資産フロー41の替わりに、脅威分析入力情報51を受け付ける。
具体的には、通信インタフェース14を介して接続された入力装置が利用者によって操作され、脅威分析入力情報51と、プログラム仕様42と、構成要素とプログラム仕様の対応関係43と、脅威分析結果44とが入力される。
そして、第1の受付部21は、通信インタフェース14を介して脅威分析入力情報51と、プログラム仕様42と、構成要素とプログラム仕様の対応関係43と、脅威分析結果44とを受け付ける。
更に、第1の受付部21は、脅威分析入力情報51と、プログラム仕様42と、構成要素とプログラム仕様の対応関係43と、脅威分析結果44とをメモリ12に書き込む。
脅威分析入力情報51は、脅威分析に用いられた情報である。
脅威分析入力情報51は、脆弱性分析の対象となるシステムを構成する複数の構成要素、構成要素間の接続関係、情報資産の一覧および情報資産の流れを示す情報が含まれている。
次に、ステップS3を実施する前に、情報資産判別部28が、関連情報資産フロー抽出処理を行う。
関連情報資産フロー抽出処理では、情報資産判別部28は、ステップS1で受け付けられた脅威分析入力情報51と、構成要素とプログラム仕様の対応関係43とに基づき、脆弱性分析の対象となるプログラム仕様42に関連する情報資産フローを、構成要素毎に抽出する。情報資産フローは、実施の形態1で示した図3の情報資産フロー41と同じ形式である。
つまり、情報資産判別部28は、脅威分析の対象となるシステムで用いられる情報資産の各々が、入力情報資産、出力情報資産、内部利用情報資産のいずれであるかを判別する。
***実施の形態の効果の説明***
以上のように、本実施の形態によれば、脆弱性分析装置10が情報資産フローを生成することができるため、外部装置で情報資産フローを生成する必要がない。
実施の形態3.
実施の形態1及び2では、情報資産と変数との対応関係の候補を出力する場合に、候補の出力順序は考慮されていない。
本実施の形態では、脆弱性分析装置10は、情報資産と変数との対応関係の候補を出力する際に、各候補の確かさに従って出力順序を制御する。つまり、本実施の形態では、第2の受付部24が、複数の対応関係の候補を出力する場合に、複数の対応関係の候補の間に優先順位を設け、優先順位が高い対応関係の候補を優先して出力する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
具体的には、図2のステップS3において、候補生成部23がプログラム仕様42内の変数と情報資産の対応を分析する際に、候補生成部23は候補としての確かさを推測する。候補生成部23は、例えば、事前に設定されたキーワードの組み合わせ等で変数と情報資産の対応関係の候補の確かさを推測する。
例えば、候補生成部23は、情報資産「コマンド」と、変数command及び変数cmdは、表記が近似するため、候補としての確かさが高いと推測する。また、候補生成部23は、対応する変数の組み合わせが多い候補はその確かさが高いと判定する。候補生成部23は、確かさに従って複数の対応関係の候補の出力順序(優先順位)を指定するする。
そして、第2の受付部24は、候補生成部23により指定された出力順序に従って、複数の対応関係の候補を出力する。
以上のように、本実施の形態では、対応関係の候補の確かさを推測し、確かさに基づいて対応関係の候補の出力順序を指定し、指定した出力順序で複数の対応関係の候補を出力する。このため、本実施の形態によれば、利用者は対応関係の候補が複数存在した場合でも、容易に正しい対応関係を選択することができる。
実施の形態4.
実施の形態1〜3では、脆弱性候補抽出部26は、脅威−脆弱性対応DB32を使って、関連脅威に対応する脆弱性種別の候補を抽出する。
本実施の形態では、第1の受付部21がアタックツリーを取得する。そして、脆弱性候補抽出部26は、アタックツリーを用いて、脆弱性の種別の候補を抽出する。アタックツリーは、脅威分析結果44(図6)の各脅威を達成するための一連の攻撃手順と当該攻撃手順に利用される脆弱性の種別が示される情報である。
脆弱性候補抽出部26は、関連脅威一覧48(図12)の各脅威に対応する脆弱性の種別の候補を抽出する際に、脅威−脆弱性対応DB32を使う替わりに、アタックツリーに含まれる脆弱性の種別の情報を抽出する。なお、脆弱性候補抽出部26は、攻撃先が対応する構成要素であることを確認した後に、アタックツリーから脆弱性の種別を抽出する。
なお、本実施の形態で説明していない事項は、実施の形態1と同様である。
以上のように、本実施の形態では、アタックツリーに含まれる脆弱性の種別の情報を使うことで、柔軟な分析を行うことができる(脅威−脆弱性種別対応DB32を使った場合には、脅威と脆弱性の種別の対応関係は固定的である)。本実施の形態によれば、例えば、システムの構成や攻撃の仕方によって利用される脆弱性の種別が変化する場合に、柔軟な分析を行うことができる。
実施の形態5.
実施の形態1〜4では、脆弱性分析の際にプログラム仕様42をそのまま利用する。
本実施の形態では、脆弱性分析部27は、情報資産と変数との対応付け又は/及び脅威の種別を参照して、脆弱性分析を行う。つまり、本実施の形態では、脆弱性分析部27は、情報資産−変数対応関係47(図10)から得られる複数の情報資産と複数の変数との対応付けをプログラム仕様42に追加して、脆弱性分析を行うことができる。また、脆弱性分析部27は、脅威分析結果44に記載の脅威の種別444(C、I、A)を参照して、脆弱性分析を行うことができる。つまり、脆弱性分析部27は、プログラム仕様42に脅威の種別444(C、I、A)を追加して、脆弱性分析を行うことができる。
また、本実施の形態では、脆弱性分析部27は、脆弱性候補抽出部26により抽出された脆弱性の種別の候補に関連する処理が記述される部分をプログラム仕様42からプログラム断片として抽出することができる。そして、脆弱性分析部27は、抽出したプログラム断片を用いて脆弱性分析を行うことができる。この場合には、脆弱性分析部27は、プログラム仕様42から、例えば、脅威に関連する変数を参照又は変更する処理、脅威に関連する変数に影響を与える他の変数を使った処理、分岐処理、判断処理等の上述の処理の実行を制御する処理を、プログラム断片として抽出することができる。
なお、本実施の形態で説明していない事項は、実施の形態1と同様である。
以上のように、本実施の形態では、検査対象のプログラム仕様に、情報資産と変数との対応付け、情報資産の価値(C、I、A)等のメタ情報を追加して脆弱性検査を行う。このため、本実施の形態では、検査式の生成又は/及びモデルの生成を効率化することができる。
また、本実施の形態では、プログラム断片を用いることで、プログラム仕様の全体を用いる場合に比べて、脆弱性分析を効率化することができる。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
***ハードウェア構成の説明***
最後に、脆弱性分析装置10のハードウェア構成の補足説明を行う。
ストレージ13には、OS(Operating System)が記憶されている。
そして、OSの少なくとも一部がメモリ12にロードされ、プロセッサ11により実行される。
プロセッサ11はOSの少なくとも一部を実行しながら、第1の受付部21、変数判別部22、候補生成部23、第2の受付部24、関連脅威抽出部25、脆弱性候補抽出部26、脆弱性分析部27及び情報資産判別部28の機能を実現するプログラムを実行する。
プロセッサ11がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、第1の受付部21、変数判別部22、候補生成部23、第2の受付部24、関連脅威抽出部25、脆弱性候補抽出部26、脆弱性分析部27及び情報資産判別部28の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、メモリ12、ストレージ13、プロセッサ11内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、第1の受付部21、変数判別部22、候補生成部23、第2の受付部24、関連脅威抽出部25、脆弱性候補抽出部26、脆弱性分析部27及び情報資産判別部28の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、第1の受付部21、変数判別部22、候補生成部23、第2の受付部24、関連脅威抽出部25、脆弱性候補抽出部26、脆弱性分析部27及び情報資産判別部28の機能を実現するプログラムが格納された可搬記録媒体を商業的に流通させてもよい。
また、第1の受付部21、変数判別部22、候補生成部23、第2の受付部24、関連脅威抽出部25、脆弱性候補抽出部26、脆弱性分析部27及び情報資産判別部28の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、脆弱性分析装置10は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
10 脆弱性分析装置、11 プロセッサ、12 メモリ、13 ストレージ、14 通信インタフェース、21 第1の受付部、22 変数判別部、23 候補生成部、24 第2の受付部、25 関連脅威抽出部、26 脆弱性候補抽出部、27 脆弱性分析部、28 情報資産判別部、31 処理種別DB、32 脅威−脆弱性種別対応DB、41 情報資産フロー、42 プログラム仕様、43 構成要素とプログラム仕様の対応関係、44 脅威分析結果、45 プログラム変数処理関係、46 情報資産−変数対応関係候補、47 情報資産−変数対応関係、48 関連脅威一覧、49 脆弱性種別候補、410 脆弱性検出結果。

Claims (14)

  1. 機器で実行されるプログラムに含まれる複数の変数の各々が、入力変数、出力変数、内部利用変数のいずれであるかを判別する変数判別部と、
    前記機器の外部から前記機器に入力される情報資産である入力情報資産と前記入力変数、前記機器から前記機器の外部に出力される情報資産である出力情報資産と前記出力変数、前記機器の内部で利用される情報資産である内部利用情報資産と前記内部利用変数とを対応付けて、複数の情報資産の各々と前記複数の変数の各々との対応関係の候補を1つ以上生成する候補生成部とを有する情報処理装置。
  2. 前記情報処理装置は、更に、
    前記候補生成部により複数の対応関係の候補が生成された場合に、前記複数の対応関係の候補を出力する出力部を有する請求項1に記載の情報処理装置。
  3. 前記候補生成部は、
    前記複数の情報資産の各々が、前記入力情報資産、前記出力情報資産、前記内部利用情報資産のいずれであるかが示される情報資産情報を取得し、前記情報資産情報に示される入力情報資産と前記入力変数と、前記情報資産情報に示される前記出力情報資産と前記出力変数、前記情報資産情報に示される前記内部利用情報資産と前記内部利用変数とを対応付ける請求項に記載の情報処理装置。
  4. 前記情報処理装置は、更に、
    前記複数の情報資産の各々が、前記入力情報資産、前記出力情報資産、前記内部利用情報資産のいずれであるかを判別する情報資産判別部を有する請求項に記載の情報処理装置。
  5. 前記変数判別部は、
    前記複数の変数の各々が用いられている処理が、入力処理、出力処理、内部利用処理のいずれであるかを判別し、判別した処理の種別に基づいて、前記複数の変数の各々の種別を判別する請求項に記載の情報処理装置。
  6. 前記変数判別部は、
    前記複数の変数における変数値の伝搬関係を解析し、
    前記出力部は、
    前記候補生成部により生成された1つ以上の対応関係の候補と、前記変数判別部の解析により得られた変数値の伝搬関係とを出力する請求項2に記載の情報処理装置。
  7. 前記候補生成部は、
    複数の対応関係の候補を生成した場合に、前記複数の対応関係の候補の間に優先順位を設け、
    前記出力部は、
    優先順位が高い対応関係の候補を優先して出力する請求項2に記載の情報処理装置。
  8. 前記候補生成部は、
    前記複数の対応関係の候補の各々について、対応関係の候補としての確かさを推測し、推測結果に基づき、前記複数の対応関係の候補の間に優先順位を設ける請求項に記載の情報処理装置。
  9. 前記情報処理装置は、更に、
    前記1つ以上の対応関係の候補の中から選択された対応関係に基づき、前記機器に存在する脆弱性の種別の候補を抽出する脆弱性候補抽出部と、
    前記脆弱性候補抽出部により抽出された脆弱性の種別の候補に基づき、前記機器の脆弱性分析を行う脆弱性分析部とを有する請求項1に記載の情報処理装置。
  10. 前記脆弱性候補抽出部は、
    アタックツリーを参照して、前記機器に存在する脆弱性の種別の候補を抽出する請求項に記載の情報処理装置。
  11. 前記脆弱性分析部は、
    前記複数の情報資産と前記複数の変数との対応付け、脅威の種別の少なくともいずれかを参照して、前記機器の脆弱性分析を行う請求項に記載の情報処理装置。
  12. 前記脆弱性分析部は、
    前記脆弱性候補抽出部により抽出された脆弱性の種別の候補に関連する処理が記述される部分を前記プログラムからプログラム断片として抽出し、抽出した前記プログラム断片を用いて前記機器の脆弱性分析を行う請求項に記載の情報処理装置。
  13. コンピュータが、機器で実行されるプログラムに含まれる複数の変数の各々が、入力変数、出力変数、内部利用変数のいずれであるかを判別し、
    前記コンピュータが、前記機器の外部から前記機器に入力される情報資産である入力情報資産と前記入力変数、前記機器から前記機器の外部に出力される情報資産である出力情報資産と前記出力変数、前記機器の内部で利用される情報資産である内部利用情報資産と前記内部利用変数とを対応付けて、複数の情報資産の各々と前記複数の変数の各々との対応関係の候補を1つ以上生成する情報処理方法。
  14. 機器で実行されるプログラムに含まれる複数の変数の各々が、入力変数、出力変数、内部利用変数のいずれであるかを判別する変数判別処理と、
    前記機器の外部から前記機器に入力される情報資産である入力情報資産と前記入力変数、前記機器から前記機器の外部に出力される情報資産である出力情報資産と前記出力変数、前記機器の内部で利用される情報資産である内部利用情報資産と前記内部利用変数とを対応付けて、複数の情報資産の各々と前記複数の変数の各々との対応関係の候補を1つ以上生成する候補生成処理とをコンピュータに実行させる情報処理プログラム。
JP2019520661A 2018-12-27 2018-12-27 情報処理装置、情報処理方法及び情報処理プログラム Expired - Fee Related JP6599053B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/048085 WO2020136793A1 (ja) 2018-12-27 2018-12-27 情報処理装置、情報処理方法及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP6599053B1 true JP6599053B1 (ja) 2019-10-30
JPWO2020136793A1 JPWO2020136793A1 (ja) 2021-02-15

Family

ID=68383317

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019520661A Expired - Fee Related JP6599053B1 (ja) 2018-12-27 2018-12-27 情報処理装置、情報処理方法及び情報処理プログラム

Country Status (2)

Country Link
JP (1) JP6599053B1 (ja)
WO (1) WO2020136793A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03161844A (ja) * 1989-11-20 1991-07-11 Fujitsu Ltd スペリング訂正方式
JP2011519435A (ja) * 2007-10-10 2011-07-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) セキュリティ解析に基づいて技術システムの再構成を行なうための装置、並びに対応する技術的意思決定支援システム及びコンピュータプログラム製品
JP2011165051A (ja) * 2010-02-12 2011-08-25 Keihin Corp 開発支援装置及び方法並びにプログラム
JP2011186999A (ja) * 2010-03-11 2011-09-22 Cats Kk 浮動小数点表現プログラムの固定小数点表現化支援装置及び支援プログラム
JP2013171358A (ja) * 2012-02-20 2013-09-02 Mitsubishi Electric Corp 制御プログラム編集装置および制御プログラム編集プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03161844A (ja) * 1989-11-20 1991-07-11 Fujitsu Ltd スペリング訂正方式
JP2011519435A (ja) * 2007-10-10 2011-07-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) セキュリティ解析に基づいて技術システムの再構成を行なうための装置、並びに対応する技術的意思決定支援システム及びコンピュータプログラム製品
JP2011165051A (ja) * 2010-02-12 2011-08-25 Keihin Corp 開発支援装置及び方法並びにプログラム
JP2011186999A (ja) * 2010-03-11 2011-09-22 Cats Kk 浮動小数点表現プログラムの固定小数点表現化支援装置及び支援プログラム
JP2013171358A (ja) * 2012-02-20 2013-09-02 Mitsubishi Electric Corp 制御プログラム編集装置および制御プログラム編集プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
樽井翔ほか: "脆弱性検出のための値範囲解析", 電子情報通信学会技術研究報告, vol. 第107巻, 第175号, JPN6019005351, 26 July 2007 (2007-07-26), JP, pages 95 - 100, ISSN: 0004075262 *

Also Published As

Publication number Publication date
WO2020136793A1 (ja) 2020-07-02
JPWO2020136793A1 (ja) 2021-02-15

Similar Documents

Publication Publication Date Title
US8776239B2 (en) In-development vulnerability response management
US8635602B2 (en) Verification of information-flow downgraders
WO2022180702A1 (ja) 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法
US8701186B2 (en) Formal analysis of the quality and conformance of information flow downgraders
JP7287480B2 (ja) 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム
US12461846B2 (en) Extracting code patches from binary code for independent fuzz testing
US20190361788A1 (en) Interactive analysis of a security specification
US10310956B2 (en) Techniques for web service black box testing
US9734458B2 (en) Predicting outcome based on input
US8650546B2 (en) Static analysis based on observed string values during execution of a computer-based software application
JP6608569B1 (ja) セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム
JP6599053B1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP6632777B2 (ja) セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム
JP7052870B2 (ja) 仮説推論装置、仮説推論方法、及びプログラム
JPWO2020261430A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
WO2023067665A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム
WO2023067663A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム
JP6584737B1 (ja) 脅威特定装置、脅威特定方法及び脅威特定プログラム
JP6818568B2 (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム
US20250036766A1 (en) Attack analysis device, attack analysis method, and computer readable medium
US20240202345A1 (en) Attack scenario generation apparatus, attack scenario generation method, and computer readable medium
JPWO2020008631A1 (ja) 観測事象判定装置、観測事象判定方法、及びプログラム
US20230229460A1 (en) Method and apparatus for identifying dynamically invoked computer code
JP2025096224A (ja) アーキテクチャのコンテキストによるセキュリティ関連のコミットの識別
WO2023067667A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190416

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190416

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190416

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190508

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190716

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190805

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191001

R150 Certificate of patent or registration of utility model

Ref document number: 6599053

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees