JP7074739B2 - 脆弱性評価装置 - Google Patents

脆弱性評価装置 Download PDF

Info

Publication number
JP7074739B2
JP7074739B2 JP2019191874A JP2019191874A JP7074739B2 JP 7074739 B2 JP7074739 B2 JP 7074739B2 JP 2019191874 A JP2019191874 A JP 2019191874A JP 2019191874 A JP2019191874 A JP 2019191874A JP 7074739 B2 JP7074739 B2 JP 7074739B2
Authority
JP
Japan
Prior art keywords
attack
input
information
protected
program
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.)
Active
Application number
JP2019191874A
Other languages
English (en)
Other versions
JP2021068098A (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.)
Yazaki Corp
Original Assignee
Yazaki 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 Yazaki Corp filed Critical Yazaki Corp
Priority to JP2019191874A priority Critical patent/JP7074739B2/ja
Priority to US17/073,911 priority patent/US11429728B2/en
Priority to EP20202686.0A priority patent/EP3812933B1/en
Publication of JP2021068098A publication Critical patent/JP2021068098A/ja
Application granted granted Critical
Publication of JP7074739B2 publication Critical patent/JP7074739B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files

Description

本発明は、プログラムにおける脆弱性を評価する脆弱性評価装置に関する。
従来から、コンピュータに組み込まれたプログラムに存在するセキュリティ上の脆弱性を検出する方法があり、特許文献1に記載された検出法が提案されている。
特許文献1では、遷移解析部、敵対者状態算出部、協力者状態算出部、および、不利状態算出部等の各要素が脆弱性を検出する手段として含まれる。遷移解析部では、評価対象のプログラムを解析して状態間の遷移関係を求める遷移解析処理を実行する。その際に、ファンクションを呼び出したユーザのユーザ種別に応じて、協力者によって生じる遷移と敵対者による遷移が区別される。次に到達可能性の判定が行われる。協力者による入力の前後には敵対者の任意回の入力が割り込みうる。区別された敵対者の遷移関係および協力者の遷移関係が交互に用いられ、評価条件を満たさない状態に達するか否かが判定される。このように、当該各要素は、入力とする条件や状態から、出力となる状態や状態の集合を算出している。
特開2018-156159号公報
しかし、上記従来技術の開示によれば、実際のプログラムにおける条件を示したとしても、状態の集合を算出するには膨大な計算が必要となり、セキュリティ上の脆弱性を検出することは現実的ではない。すなわち、不正な入力によって、プログラムが特定の不都合な状態に到達する可能性の有無を確認する具体的な方法を提供していないという課題があった。そこで、本発明はこのような課題を解決する手段を提供することを目的とする。
本発明の態様に係わる脆弱性評価装置は、評価対象となるプログラムの情報セキュリティ上の脆弱性の有無を評価する脆弱性評価装置であって、前記評価対象となるプログラムのソースコード、前記ソースコードの表記方法によって示される、守りたい資産および前記守りたい資産が守れない条件である攻撃成立条件を示す情報、前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報および前記プログラムに対する入力情報を入力する入力部と、前記ソースコードにおいて、前記プログラムに対する入力情報を入力する位置を示す入力位置を指定する入力位置指定部と、前記ソースコードにおいて、前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を、前記攻撃判定位置を示す情報から指定する攻撃判定位置指定部と、前記ソースコードにおいて、前記攻撃判定位置から前記入力位置までの経路を解析し、前記経路から前記攻撃判定位置における特定の処理によって前記攻撃成立条件が満たされる経路である攻撃経路を特定する攻撃経路解析部と、を備えることが好ましい。
前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報は、前記ソースコードの表記方法によって示される特定の処理を示す情報、および、前記特定の処理が実行される位置を示す情報を含むことが好ましい。
前記特定の処理は、前記守りたい資産を書き換える処理、および、前記プログラムが実装される電子装置の外部から前記守りたい資産をアクセス可能な状態にする処理のいずれかを含むことが好ましい。
前記プログラムに対する入力情報は、前記ソースコードの表記方法によって示される、前記攻撃経路を成立させるために使用される情報を直接的または間接的に示す情報であることが好ましい。
前記攻撃経路を成立させるために利用される、前記プログラムに入力される入力情報の値または値の範囲を表現する情報を攻撃情報として算出する入力値演算部をさらに備えることが好ましい。
前記入力値演算部は、前記攻撃経路の分岐処理において、前記攻撃経路を成立させる分岐条件を満足する情報を前記攻撃情報として算出することが好ましい。
前記攻撃情報を前記評価対象となるプログラムが実装される電子装置において用いられる通信プロトコルに対応したフォーマットに変換し、変換された前記攻撃情報を含む、前記電子装置に送信可能な通信パケットを生成するパケット生成部をさらに備えることが好ましい。
前記評価対象となるプログラムのソースコードを解析し、前記ソースコードで示される処理の処理手順および処理内容を論理モデルで表現するソースコード構造解析部をさらに備えることが好ましい。
前記論理モデルは、制御フローグラフまたは抽象構文木であることが好ましい。
前記攻撃判定位置指定部は、前記攻撃判定位置を前記論理モデルの経路において指定し、前記入力位置指定部は、前記入力位置を前記論理モデルの経路において指定し、前記攻撃経路解析部は、前記攻撃成立条件を前記論理モデルの処理において特定することが好ましい。
本発明によれば、不正な入力によって、プログラムが特定の不都合な状態に到達する可能性の有無を確認する具体的な方法を提供することが可能となる。
本実施形態に係わる脆弱性評価装置の構成の一例を示す図である。 (a)実施形態に係わる入力部の処理の一例を示す図である。(b)実施形態に係わる入力部の処理の一部を示す模式図である。 (a)実施形態に係わる入力位置指定部の処理の一例を示す図である。(b)実施形態に係わる入力位置指定部の処理の一部を示す模式図である。 (a)実施形態に係わる攻撃判定位置指定部の処理の一例を示す図である。(b)実施形態に係わる攻撃判定位置指定部の処理の一部を示す模式図である。 (a)実施形態に係わる攻撃経路解析部の処理の一例を示す図である。(b)実施形態に係わる攻撃経路解析部の処理の一部を示す模式図である。 実施形態に係わる攻撃経路解析部の処理の具体例の一例を示す図である。 (a)実施形態に係わる入力値演算部の処理の一例を示す図である。(b)実施形態に係わる入力値演算部の処理の一部を示す模式図である。 (a)実施形態に係わるパケット生成部の処理の一例を示す図である。(b)実施形態に係わるパケット生成部の処理の一部を示す模式図である。 (a)実施形態に係わるソースコード構造解析部の処理の一部を示す模式図である。(b)実施形態に係わるソースコード構造解析部の処理の一部を示す模式図である。(c)実施形態に係わるソースコード構造解析部の処理の一部を示す模式図である。
(脆弱性評価装置の概要)
図1に、入力情報が限定される電子装置に実装されるプログラムを評価対象として、不正な入力情報に起因して、プログラムが特定の不都合な状態に到達する可能性があるか否かを判定する、本実施形態に係る脆弱性評価装置100の一例を図示する。脆弱性評価装置100には入力部110、入力位置指定部120、攻撃判定位置指定部130、攻撃経路解析部140、入力値演算部150およびパケット生成部160が含まれる。脆弱性評価装置100に含まれる上記構成要素によって、評価対象のプログラムのソースコードにおける、入力情報を受け付ける位置と、プログラムに対する攻撃の成立を判定できる位置とを論理的に接続する経路を解析して導出する。脆弱性評価装置100は、導出した経路から実際に有効な攻撃経路および攻撃経路が成立する入力値を算出する。さらに、脆弱性評価装置100は、情報セキュリティ上の評価をしたい任意の評価対象である電子装置に有効かつ確実なテストを実行するためのテストパターンを生成する。なお、脆弱性評価装置100には図9に示すソースコード構造解析部170が含まれる場合もある。
上記処理を実行する脆弱性評価装置100に入力される脆弱性評価に対する入力情報には、評価対象のプログラムのソースコード、当該ソースコードにおいて指定される攻撃成立条件を示す情報および攻撃判定位置を示す情報が挙げられる。さらに、脆弱性評価装置100に入力される脆弱性評価に対する入力情報には、評価対象のプログラムに対する入力情報も挙げられる。攻撃成立条件を示す情報は、ソースコード上の表現において、ユーザが守ろうとする資産が守られない条件を指定する情報である。攻撃判定位置を示す情報は、ソースコード上において、攻撃成立条件を判定すべき位置を示す情報であり、攻撃成立条件が成立すればユーザが守ろうとする資産が守られない処理が記述されている位置になる。評価対象のプログラムに対する入力情報は、ソースコード上の経路を選択する分岐処理において、分岐条件を表現する変数等である。分岐条件を表現する変数等に値が入力される位置が入力位置指定部120によって指定される入力位置となる。
脆弱性評価装置100から出力される脆弱性評価に対する出力情報には、攻撃経路、攻撃情報、通信パケットが挙げられる。攻撃経路は、評価対象のプログラムの処理フローにおいて、当該プログラムに対する攻撃が成立する場合の経路を示す情報である。攻撃情報は、プログラムに対する入力情報が格納されるプログラムにおける入力位置における入力値であって、攻撃経路を辿ることを可能とする情報である。攻撃情報の一例には、変数の数値または変数の数値範囲が挙げられる。通信パケットには攻撃情報が含まれ、当該通信パケットは評価対象のプログラムが実装される電子装置が有するインターフェースを介して入力される情報である。
次に、脆弱性評価装置100に含まれる入力部110、入力位置指定部120、攻撃判定位置指定部130、攻撃経路解析部140、入力値演算部150、パケット生成部160、および、ソースコード構造解析部170について詳細に説明する。
図2(a)は入力部110の処理フローの一例を示し、図2(b)は入力部110の処理フローの一部の模式図を示す。
入力部110は図示しない任意のインターフェースであって、各種の情報の入出力を行う機能を有する。
図2(a)のステップS201において、入力部110は評価対象となるプログラムのソースコードを図示しないインターフェースを介して読み取る。以下のステップS202からステップS204の処理順番は本実施形態に限定されず、ステップS202からステップS204は入力部110が任意の順番で実施することが可能である。
ステップS202において、入力部110はソースコードを入力位置指定部120に出力する。ステップS203において、入力部110はソースコードを攻撃判定位置指定部130に出力する。ステップS204において、入力部110はソースコードを攻撃経路解析部140に出力する。
ステップS205において、入力部110は攻撃成立条件を示す情報を図示しないインターフェースを介して入力する。ステップS206において、入力部110は攻撃成立条件を示す情報を攻撃経路解析部140へ出力する。
ステップS207において、入力部110は攻撃判定位置を示す情報を図示しないインターフェースを介して入力する。ステップS208において、入力部110は攻撃判定位置を示す情報を攻撃判定位置指定部130へ出力する。なお、ステップS208において、攻撃判定位置を示す情報がソースコードにおける攻撃判定位置を直接示す場合には、入力部110は攻撃判定位置を示す情報を攻撃経路解析部140へ出力する場合もある。
ステップS209において、入力部110はプログラムに対する入力情報を図示しないインターフェースを介して入力する。ステップS210において、入力部110はプログラムに対する入力情報を入力位置指定部120へ出力する。
なお、上述したステップS201、ステップS205、ステップS207、ステップS209の各種情報を入力する処理順番は本実施形態に限定されず、入力部110が任意の順番で実施することが可能である。
図2(b)は入力部110が図示しない任意のインターフェースを介して、情報セキュリティ上の評価をしようとしている評価対象となるプログラムのソースコード等の情報を入力する動作の模式図を示す。これによって、評価対象が実現しようとしている機能を実現するためのロジックを取り込むことができる。
図3(a)は入力位置指定部120の処理フローの一例を示し、図3(b)は入力位置指定部120の処理フローの一部の模式図を示す。
図3(a)のステップS301において、入力位置指定部120は評価対象となるプログラムに対する入力情報を入力部110から入力する。ステップS302において、入力位置指定部120は評価対象となるプログラムのソースコードを入力部110から入力する。なお、上述のステップS301とステップS302の処理順番は本実施形態に限定されず、入力位置指定部120が任意の順番で実施することが可能である。
ステップS303において、入力位置指定部120はステップS301で入力された入力情報によって示される情報が評価対象となるプログラムのソースコード上のどこで入力されるかを特定する。入力情報によって示される情報が入力される位置を入力位置と称する。これによって、評価対象のプログラムに対する攻撃者の入力がどこに入力されるかをソースコード上において特定することが可能になる。
ステップS304において、入力位置指定部120はステップS303で特定された入力位置を攻撃経路解析部140に出力する。
図3(b)は入力位置指定部120が入力部110を介して、情報セキュリティ上の評価をしようとしている評価対象となるプログラムに対する入力情報を入力し、ソースコード上の入力位置を特定する動作の模式図を示す。これによって、評価対象のプログラムに対する攻撃者の入力がどこに入力されるかをソースコード上において特定することが可能になる。
図4(a)は攻撃判定位置指定部130の処理フローの一例を示し、図3(b)は攻撃判定位置指定部130の処理フローの一部の模式図を示す。
図4(a)のステップS401において、攻撃判定位置指定部130は評価対象となるプログラムの攻撃判定位置を示す情報を、入力部110を介して入力する。攻撃判定位置を示す情報は、攻撃成立条件で示される守りたい資産を守ることができない条件を判定可能な位置を特定するための情報である。
ステップS402において、攻撃判定位置指定部130は評価対象となるプログラムのソースコードを入力部110から入力する。なお、上述のステップS401とステップS402の処理順番は本実施形態に限定されず、攻撃判定位置指定部130が任意の順番で実施することが可能である。
ステップS403において、攻撃判定位置指定部130は攻撃判定位置を示す情報からソースコード上における攻撃判定位置を指定する。
ステップS404において、攻撃判定位置指定部130はソースコード上において指定された攻撃判定位置を攻撃経路解析部140に出力する。
図4(b)は攻撃判定位置指定部130がソースコード上において攻撃判定位置を指定する動作の模式図を示す。これによって、評価対象のプログラムにおいて、守りたい資産が守れない条件に至ったことを判定することが可能になる。
図5(a)は攻撃経路解析部140の処理フローの一例を示し、図5(b)は攻撃経路解析部140の処理フローの一部の模式図を示す。
ステップS501において、攻撃経路解析部140は、入力部110から攻撃成立条件を示す情報を入力する。ステップS502において、攻撃経路解析部140は、攻撃判定位置指定部130から、ソースコード上で指定された攻撃判定位置を入力する。ステップS503において、攻撃経路解析部140は、入力部110からソースコードを入力する。ステップS504において、攻撃経路解析部140は、入力位置指定部120から入力位置を入力する。なお、上述のステップS501からステップS504の処理順番は本実施形態に限定されず、ステップS501からステップS504は攻撃経路解析部140が任意の順番で実施することが可能である。
ステップS505において、攻撃経路解析部140は、攻撃判定位置から入力位置までのソースコード上の経路を遡る解析を実行し、攻撃経路の候補を特定する。
ステップS506において、攻撃経路解析部140は、攻撃経路の候補から攻撃成立条件を満たす経路を特定する解析を実行し、攻撃経路を特定する。上述したように、攻撃経路解析部140は、攻撃判定位置から、ソースコード上において攻撃成立条件が常に成り立つ経路を遡って導出し、入力位置に至るまで解析を実行する。この場合に、攻撃判定位置から入力位置に至る経路において、攻撃成立条件が常に成り立つ場合は、攻撃成立条件が成立する入力情報が存在することと同義となる。したがって、解析された攻撃成立条件が常に成り立つ経路は、守りたい資産に対する攻撃に使用される攻撃経路であり、プログラムに対する脆弱性を突く経路である。このように、攻撃経路解析部140は、脆弱性を突く攻撃経路の存在を明らかにすることが可能となる。なお、攻撃経路解析部140は複数の入力情報による攻撃に対応するために、遡り解析において入力位置への到達は1回で完了する必要はなく、入力位置からさらに経路を遡り解析できる場合には複数の入力位置に至るまで解析を続行することが可能である。
ステップS507において、攻撃経路解析部140は攻撃経路を入力値演算部150へ出力する。なお、ステップS507において、攻撃経路解析部140は攻撃経路を外部装置へ出力することも可能である。
図5(b)は攻撃経路解析部140が、攻撃判定位置からソースコード上において攻撃成立条件が常に成り立つ経路を遡って導出し、入力位置に至るまで解析を実行する動作の模式図を示す。
図6は攻撃経路解析部140の処理の具体例の一例を示し、攻撃経路解析部140が攻撃判定位置からソースコード上において攻撃成立条件が常に成り立つ経路を遡って、入力位置に至るまでの攻撃経路の解析を実行する動作の一例である。
図6における「入力B」が存在する、ソースコード上の位置は入力位置指定部120が指定した入力位置になる。また、一例として「入力B」において入力される変数等の情報がプログラムに対する入力情報として入力位置指定部120に入力された情報となる。また、「入力B」において入力される変数等の情報は「条件C」において経路の分岐を判断するための分岐条件を判断するための情報となる。
また、図6における「処理E」が存在する、ソースコード上の位置は攻撃判定位置指定部130が指定した攻撃判定位置になる。また、一例として、攻撃判定位置指定部130に入力される攻撃判定位置を示す情報は「処理E」および「処理E」の位置情報である場合がある。「処理E」の一例には、特定の情報の書き換え処理や特定の情報の出力処理などが挙げられる。
攻撃経路解析部140は、「処理E」から「入力B」までの経路を攻撃経路の候補として解析する。攻撃成立条件を満たす処理が「処理E」の実行処理であれば、「入力B」によって「条件C」から「処理E」を実行処理する経路が成立する場合に、「入力B」→「条件C」→「処理E」が攻撃経路となる。なお、「条件C」から「処理E」に至る経路を成立させる分岐条件を満たす値の範囲が、入力値演算部150によって演算される攻撃情報の一例になる。したがって、例えば、「入力B」において当該攻撃情報が入力されると、「条件C」によって「処理E」に至る経路が必ず選択され、攻撃成立条件を満たす処理である「処理E」が実行されることになる。また、攻撃成立条件を満たす処理である「処理E」とは、「処理E」において処理される変数等の情報が守りたい資産を示す場合に該当する場合がある。この場合には、攻撃成立条件を示す情報は、処理される変数等の情報が守りたい資産を示すことをソースコードにおいて示した情報となる場合がある。処理される変数等の情報が守りたい資産を示さない場合には、当該処理は攻撃成立条件を満たさない処理となる。
図7(a)は入力値演算部150の処理フローの一例を示し、図7(b)は入力値演算部150の処理フローの一部の模式図を示す。
ステップS701において、入力値演算部150は、攻撃経路解析部140から攻撃経路と攻撃成立条件を入力する。
ステップS702において、入力値演算部150は、攻撃経路から入力位置で保持するプログラムに対する入力情報が攻撃成立条件を満たしながら取り得る値、または、取り得る値の範囲を攻撃情報として算出する。例えば、図6において、「条件C」から「処理E」に至る経路が常に成立する「条件C」の条件を満たす「入力B」において入力される値、または、入力される値の範囲が攻撃情報となる。このように、攻撃成立条件が満たされる評価対象のプログラムに対する攻撃情報とは、守りたい資産が守れない情報であるので、評価対象のプログラムを攻撃するための入力値を示しており、プログラムの脆弱性を突く入力値である。
ステップS703において、入力値演算部150は、ステップS702において算出した攻撃情報をパケット生成部160に出力する。また、ステップS703において、入力値演算部150は、ステップS702において算出した攻撃情報を外部装置に出力することも可能である。
図7(b)は入力値演算部150が、ソースコード上において攻撃判定位置から入力位置に至る経路において攻撃成立条件が常に成り立つ入力値を攻撃情報として算出する動作の模式図を示す。
図8(a)はパケット生成部160の処理フローの一例を示し、図8(b)はパケット生成部160の処理フローの一部の模式図を示す。
ステップS801において、パケット生成部160は、入力値演算部150から攻撃情報を入力する。
ステップS802において、パケット生成部160は、評価対象のプログラムが実装された電子機器に攻撃情報を入力するために、当該電子機器の通信プロトコルに従ったフォーマットに攻撃情報を変換する。
ステップS803において、パケット生成部160は、フォーマット変換された攻撃情報から、評価対象のプログラムが実装された電子機器の通信プロトコルに従った通信パケットを生成する。これによって、評価対象のプログラムが実装された電子機器のインターフェースを介して、当該通信パケットによって当該電子機器に直接的に送信可能なテストパターンを生成することが可能になる。
ステップS804において、パケット生成部160は、生成された通信パケットを外部機器に出力する。必要に応じて、外部機器から生成された通信パケットを評価対象のプログラムが実装された電子機器に入力し、守りたい資産が守れない状態となることを確認することが可能となる。また、電子機器が通信パケットによって示された攻撃情報をフィルタリングし、守りたい資産が守られる状態となる場合もある。例えば、通信プロトコルに電子機器に固有のIDが含まれる場合に、固有のIDに対応する攻撃情報がフィルタリングされ、攻撃情報が電子機器に入力されない場合もある。このように、評価対象のプログラムが実装された電子機器のプロトコルに対応した通信パケットによって当該電子機器と通信することで、守りたい資産が守られる状態となるか否かを確認することが可能となる。
図9(a)から図9(c)は、図1の本実施形態の脆弱性評価装置100において、ソースコード構造解析部170が、評価対象のプログラムのソースコードを、制御フローグラフまたは抽象構文木に変換する構成を模式的に示した図である。
攻撃経路解析部140において遡り解析を実行する場合に、ソースコードに対するコンパイル処理等のソースコードに対する理解処理が都度発生するので、実行速度の向上を図る必要がある場合がある。このような場合には、評価対象のプログラムのソースコードを論理モデルの一種である制御フローグラフまたは抽象構文木に変換することによって、制御フローグラフまたは抽象構文木において遡り解析を実行することが可能になる。
制御フローグラフは、プログラムにおいて順番に実行する命令をノードとしてまとめ、分岐、合流およびループを中心として表現される論理フローであるが、既知の技術であるため詳細についてはここでは記載しない。
また、抽象構文木は演算子やキーワードを節とし、演算対象などの構成要素を部分木として構成されるツリーであるが、既知の技術であるため詳細についてはここでは記載しない。
図9(a)は、ソースコード構造解析部170が、評価対象のプログラムのソースコードを制御フローグラフに変換する構成を模式的に示した図である。
図9(b)は、ソースコード構造解析部170が、評価対象のプログラムのソースコードを抽象構文木に変換する構成を模式的に示した図である。
図9(b)は、ソースコード構造解析部170が、評価対象のプログラムのソースコードを抽象構文木に変換し、抽象構文木から制御フローグラフに変換する構成を模式的に示した図である。このように、ソースコード構造解析部170は、効率的な変換を実現するために、ソースコードを抽象構文木に変換し、抽象構文木から制御フローグラフに変換するというように、段階的に種類の異なる論理モデルに変換することが可能である。
なお、ソースコード構造解析部170が、評価対象のプログラムのソースコードを論理モデルに変換する場合には、攻撃判定位置指定部130は、攻撃判定位置を論理モデルの経路において指定する。また、入力位置指定部120は、入力位置を論理モデルの経路において指定し、攻撃経路解析部140は、攻撃成立条件を論理モデルの処理において特定する。
なお、脆弱性評価装置100における図2(a)、図3(a)、図4(a)、図5(a)、図7(a)および図8(a)の動作のフローチャートの一例を示す処理手順は以下のように処理される。すなわち、脆弱性評価装置100が有するコンピュータのROM(Read Only Memory)に格納されたプログラムにしたがいCPU(Central Processing Unit)が各処理を実行する。
なお、上述した処理手順の一部または全部は、例えば、DSP(Digital Signal Processor)やASIC(Application Specific Integrated Circuit)等のハードウェアにより実行させられる。但し本実施形態では、ROMのプログラムにしたがってCPUが実行する形態とした場合について説明した。
以上説明したように、本実施形態によれば、保護資産の保護状態が成立している状況を論理式で表現するために、保護資産の保護状態を侵害するケースに限定して脆弱性を見つけ出すことが可能になる。また、保護資産の保護状態が成立している状況は、プログラムにおいて発生しては困る処理に直結する状況を論理式で示せばよいので、セキュリティに関する知識を有していなくとも当該論理式を示すことが可能になる。
(比較例)
従来技術においては、評価対象となるプログラムにおいて特定の状態に至らないことを、あらゆる経路について網羅的に確認する構成が存在する。しかし、あらゆる経路について網羅的に確認することは非常に冗長であり、計算リソースと計算時間に大きな無駄が発生する。
しかし、本実施形態の脆弱性評価装置100では、攻撃判定位置と入力位置との間の経路について、脆弱性を確認するので、確認する必要がない評価対象のプログラムの処理を含むフロー上の経路を除外することが可能となる。その結果、計算リソースと計算時間に大きな無駄が発生せずに、効率的な脆弱性評価手段を提供することが可能となる。
また、従来技術においては、障害発生条件、不正なコマンドおよび不正なデータの特徴に対する一致度を確率的に算出し、評価対象となるプログラムの脆弱性を評価する構成が存在する。しかし、当該構成では、評価対象となるプログラムの脆弱性を確率的に評価するために、脆弱性評価に対する確実性および網羅性がないものとなる。
しかし、本実施形態の脆弱性評価装置100では、攻撃経路解析部140によって攻撃判定位置と入力位置との間のすべての経路について、攻撃成立条件に基づいて脆弱性を確認するので、脆弱性評価に対する確実性および網羅性がある構成となる。このため、検出漏れも生じない。
さらに、従来技術においては、事前に用意したテストケースを用いて、評価対象となるプログラムに有効なテストケースを選択する構成がある。しかし、当該構成では、事前に用意した範囲を超える手段を用いた攻撃には対応できないために、脆弱性に対する検出漏れが発生する場合がある。
しかし、本実施形態の脆弱性評価装置100では、攻撃経路解析部140によってソースコード自体を解析し攻撃経路を抽出することが可能となり、入力値演算部150によって、攻撃経路を利用し得る入力値のすべてを導出することが可能になる。さらに、パケット生成部160によって、具体的なテストケースを生成することが可能であるために、選択するべきテストケースを事前に用意する必要がない。
さらに、従来技術においては、評価対象となるプログラムの経路を選択する場合に、事前に指定したキーワードとの関連性を条件として選択する構成が存在する。しかし、評価対象となるプログラムにおいて、同一のキーワードが異なる意味を有する場合がある。また、評価対象となるプログラムにおいて、異なるキーワードが同一の情報を有する場合がある。このように、キーワードとの関連性を条件とすると、経路の選択が不完全な場合が発生する可能性があり、脆弱性の検出漏れが発生する場合がある。また、従来技術においては、ある特定状態における状態遷移の遷移条件を重複させない構成を提供している。しかし、特定状態における遷移条件に関係のないパラメータが異なるケースに、プログラムフローにおいて攻撃経路が存在する可能性が存在し得るため、脆弱性の検出漏れが発生する場合がある。
しかし、本実施形態の脆弱性評価装置100では、攻撃経路解析部140によって確認する必要がない経路以外のすべての攻撃経路について解析を実施しているので、脆弱性評価に対する確実性および網羅性がある構成となる。このため、検出漏れも生じない。
さらに、従来技術においては、評価対象となるプログラムにおける異常点に至ることを確認することによって、バグが生じていることを判定している。しかし、脆弱性を評価するセキュリティにおいては、プログラムの正常点において異常な動作が発生することも検出する必要があるので、当該判定では、脆弱性の検出漏れが発生する場合がある。
しかし、本実施形態の脆弱性評価装置100では、攻撃判定位置指定部130によって指定された攻撃判定位置において判定を実施し、攻撃判定位置はプログラムにおけるいずれの位置においても指定可能な位置である。したがって、本実施形態の脆弱性評価装置100では、プログラムにおける異常点である例外処理ではない、正常な経路上の脆弱性を検出することが可能である。
以下に、本実施形態の脆弱性評価装置100の特徴について記載する。
本発明の第1の態様に係わる評価対象となるプログラムの情報セキュリティ上の脆弱性の有無を評価する脆弱性評価装置100は、評価対象となるプログラムのソースコード等の情報を入力する入力部110を含む。当該情報には、ソースコードの表記方法によって示される、守りたい資産および守りたい資産が守れない条件である攻撃成立条件を示す情報が含まれる。また、当該情報には、守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報およびプログラムに対する入力情報が含まれる。また、脆弱性評価装置100は、ソースコードにおいて、プログラムに対する入力情報を入力する位置を示す入力位置を指定する入力位置指定部120を含む。さらに、ソースコードにおいて、守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を、攻撃判定位置を示す情報から指定する攻撃判定位置指定部130を含む。さらに、ソースコードにおいて、攻撃判定位置から入力位置までの経路を解析し、経路から攻撃判定位置における特定の処理によって攻撃成立条件が満たされる経路である攻撃経路を特定する攻撃経路解析部140を含む。
上記構成によれば、不正な入力によって、プログラムが特定の不都合な状態に到達する可能性の有無を確認する具体的な方法を提供することが可能となる。
本発明の第2の態様に係わる脆弱性評価装置100の守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報は、ソースコードの表記方法によって示される特定の処理を示す情報、および、特定の処理が実行される位置を示す情報を含む。
上記構成によれば、評価対象のプログラムのソースコードを対象とすることによって、攻撃判定位置から入力位置まで辿り解析を確実に実施することが可能になる。すなわち、攻撃判定位置にたどり着かない、確認する必要のない経路を除外して分析することが可能になるので、効率的な解析手段を提供することが可能になる。また、確認する必要のない経路以外は、あらゆる経路について解析を実施しているので、脆弱性の評価に対する確実性および網羅性を満たし、検出漏れの発生を抑制することが可能になる。
本発明の第3の態様に係わる脆弱性評価装置100は、特定の処理は、守りたい資産を書き換える処理、および、プログラムが実装される電子装置の外部から守りたい資産をアクセス可能な状態にする処理のいずれかを含む。
上記構成によれば、保護資産の保護状態が成立していない状況を論理式で表現するために、保護資産の保護状態を侵害するケースに限定して脆弱性を見つけ出すことが可能になる。
本発明の第4の態様に係わる脆弱性評価装置100は、プログラムに対する入力情報は、ソースコードの表記方法によって示される、攻撃経路を成立させるために使用される情報を直接的または間接的に示す情報である。
上記構成によれば、攻撃経路を成立させるために使用される情報としてプログラムに対する入力情報を指定することによって、脆弱性の評価に対する確実性および網羅性を満たし、検出漏れの発生を抑制することが可能になる。
本発明の第5の態様に係わる脆弱性評価装置100は、攻撃経路を成立させるために利用される、プログラムに入力される入力情報の値または値の範囲を表現する情報を攻撃情報として算出する入力値演算部150をさらに備える。
上記構成によれば、攻撃経路解析部140によってソースコード自体を解析し攻撃経路を抽出することが可能となり、入力値演算部150によって、攻撃経路を利用し得る入力値のすべてを導出することが可能になる。すなわち、入力値演算部150は評価対象となるプログラムの脆弱性を突く入力情報を網羅的に生成することが可能になる。
本発明の第6の態様に係わる脆弱性評価装置100の入力値演算部150は、攻撃経路の分岐処理において、攻撃経路を成立させる分岐条件を満足する情報を攻撃情報として算出する。
上記構成によれば、入力値演算部150は評価対象となるプログラムの脆弱性を突く入力情報を網羅的に生成することが可能になる。
本発明の第7の態様に係わる脆弱性評価装置100は、攻撃情報を評価対象となるプログラムが実装される電子装置において用いられる通信プロトコルに対応したフォーマットに変換するパケット生成部160をさらに備える。また、パケット生成部160は、変換された攻撃情報を含む、電子装置に送信可能な通信パケットを生成する。
上記構成によれば、評価対象のプログラムが実装された電子機器のインターフェースを介して、当該通信パケットによって当該電子機器に直接的に送信可能なテストパターンを生成することが可能になる。
本発明の第8の態様に係わる脆弱性評価装置100は、評価対象となるプログラムのソースコードを解析し、ソースコードで示される処理の処理手順および処理内容を論理モデルで表現するソースコード構造解析部170をさらに備える。
本発明の第9の態様に係わる脆弱性評価装置100は、論理モデルは、制御フローグラフまたは抽象構文木である。
攻撃経路解析部140において遡り解析を実行する場合に、ソースコードに対するコンパイル処理等のソースコードに対する理解処理が都度発生するので、実行速度の向上を図る必要がある場合がある。上記構成によれば、評価対象のプログラムのソースコードを論理モデルの一種である制御フローグラフまたは抽象構文木に変換することによって、制御フローグラフまたは抽象構文木において遡り解析を高速に実行することが可能になる。すなわち、ソースコード構造解析部170は、評価対象となるプログラムの脆弱性評価のための処理時間を高速化することが可能になる。
本発明の第10の態様に係わる脆弱性評価装置100の攻撃判定位置指定部130は、攻撃判定位置を論理モデルの経路において指定し、入力位置指定部120は、入力位置を論理モデルの経路において指定する。攻撃経路解析部140は、攻撃成立条件を論理モデルの処理において特定する。
上記構成によれば、脆弱性評価装置100は、評価対象となるプログラムの脆弱性評価のための処理時間を高速化することが可能になる。
以上説明したように、本実施形態によれば、保護資産の保護状態が成立している状況を論理式で表現するために、保護資産の保護状態を侵害するケースに限定して脆弱性を見つけ出すことが可能になる。また、保護資産の保護状態が成立している状況は、プログラムにおいて発生しては困る処理に直結する状況を論理式で示せばよいので、セキュリティに関する知識を有していなくとも当該論理式を示すことが可能になる。
以上、さまざまな実施例を説明したが、それらの実施例の一部または全部を組み合わせて新たな実施例とすることもできる。
100 脆弱性評価装置
110 入力部
120 入力位置指定部
130 攻撃判定位置指定部
140 攻撃経路解析部
150 入力値演算部
160 パケット生成部
170 ソースコード構造解析部

Claims (9)

  1. 評価対象となるプログラムの情報セキュリティ上の脆弱性の有無を評価する脆弱性評価装置であって、
    前記評価対象となるプログラムのソースコード、前記ソースコード内で示される、守りたい資産および前記守りたい資産が守れない条件である攻撃成立条件を示す情報、前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報および前記プログラムに対する入力情報を入力する入力部と、
    前記ソースコードにおいて、前記プログラムに対する入力情報を入力する位置を示す入力位置を指定する入力位置指定部と、
    前記ソースコードにおいて、前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を、前記攻撃判定位置を示す情報から指定する攻撃判定位置指定部と、
    前記ソースコードにおいて、前記攻撃判定位置から前記入力位置に至る経路の中から、前記攻撃判定位置における特定の処理によって前記攻撃成立条件が常に成り立つ攻撃経路を、前記攻撃判定位置から前記入力位置に向かって前記経路を遡ることで特定する攻撃経路解析部と、を備える脆弱性評価装置。
  2. 前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報は、前記ソースコード内で示される特定の処理を示す情報、および、前記特定の処理が実行される位置を示す情報を含む請求項1に記載の脆弱性評価装置。
  3. 前記特定の処理は、前記守りたい資産を書き換える処理、および、前記プログラムが実装される電子装置の外部から前記守りたい資産をアクセス可能な状態にする処理のいずれかを含む請求項1または2に記載の脆弱性評価装置。
  4. 前記プログラムに対する入力情報は、前記ソースコード内で示される、前記攻撃経路を成立させるために使用される情報を直接的または間接的に示す情報である請求項1から3のいずれか一項に記載の脆弱性評価装置。
  5. 前記攻撃経路を成立させるために利用される、前記プログラムに入力される入力情報の値または値の範囲を表現する情報を攻撃情報として算出する入力値演算部をさらに備える請求項1から4のいずれか一項に記載の脆弱性評価装置。
  6. 前記入力値演算部は、前記攻撃経路の分岐処理において、前記攻撃経路を成立させる分岐条件を満足する情報を前記攻撃情報として算出する請求項5に記載の脆弱性評価装置。
  7. 前記攻撃情報を前記評価対象となるプログラムが実装される電子装置において用いられる通信プロトコルに対応したフォーマットに変換し、変換された前記攻撃情報を含む、前記電子装置に送信可能な通信パケットを生成するパケット生成部をさらに備える請求項5または6に記載の脆弱性評価装置。
  8. 評価対象となるプログラムの情報セキュリティ上の脆弱性の有無を評価する脆弱性評価装置であって、
    前記評価対象となるプログラムのソースコード、前記ソースコード内で示される、守りたい資産および前記守りたい資産が守れない条件である攻撃成立条件を示す情報、前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を示す情報および前記プログラムに対する入力情報を入力する入力部と、
    前記ソースコードを解析し、前記ソースコードで示される処理の処理手順および処理内容を論理モデルで表現するソースコード構造解析部と、
    前記論理モデルの経路において、前記プログラムに対する入力情報を入力する位置を示す入力位置を指定する入力位置指定部と、
    前記論理モデルの経路において、前記守りたい資産が守れない条件の成立を判定可能な位置である攻撃判定位置を、前記攻撃判定位置を示す情報から指定する攻撃判定位置指定部と、
    前記論理モデルの経路において、前記攻撃判定位置から前記入力位置に至る前記論理モデルの経路の中から、前記攻撃判定位置における特定の処理によって前記攻撃成立条件が常に成り立つ攻撃経路を、前記攻撃判定位置から前記入力位置に向かって前記論理モデルの経路を遡ることで特定する攻撃経路解析部と、を備える脆弱性評価装置。
  9. 前記論理モデルは、制御フローグラフまたは抽象構文木である請求項8に記載の脆弱性評価装置。
JP2019191874A 2019-10-21 2019-10-21 脆弱性評価装置 Active JP7074739B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019191874A JP7074739B2 (ja) 2019-10-21 2019-10-21 脆弱性評価装置
US17/073,911 US11429728B2 (en) 2019-10-21 2020-10-19 Vulnerability evaluation apparatus
EP20202686.0A EP3812933B1 (en) 2019-10-21 2020-10-20 Vulnerability evaluation apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019191874A JP7074739B2 (ja) 2019-10-21 2019-10-21 脆弱性評価装置

Publications (2)

Publication Number Publication Date
JP2021068098A JP2021068098A (ja) 2021-04-30
JP7074739B2 true JP7074739B2 (ja) 2022-05-24

Family

ID=72964494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019191874A Active JP7074739B2 (ja) 2019-10-21 2019-10-21 脆弱性評価装置

Country Status (3)

Country Link
US (1) US11429728B2 (ja)
EP (1) EP3812933B1 (ja)
JP (1) JP7074739B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070322A (ja) 2007-09-18 2009-04-02 Nec Corp データ処理装置、システム、プログラム、及び、方法
JP2014174577A (ja) 2013-03-05 2014-09-22 Ntt Data Corp 検証装置、検証方法、及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7530104B1 (en) * 2004-02-09 2009-05-05 Symantec Corporation Threat analysis
US20070094735A1 (en) 2005-10-26 2007-04-26 Cohen Matthew L Method to consolidate and prioritize web application vulnerabilities
US8413237B2 (en) 2006-10-23 2013-04-02 Alcatel Lucent Methods of simulating vulnerability
US8392997B2 (en) 2007-03-12 2013-03-05 University Of Southern California Value-adaptive security threat modeling and vulnerability ranking
WO2015137235A1 (ja) * 2014-03-13 2015-09-17 日本電信電話株式会社 特定装置、特定方法および特定プログラム
JP2018156159A (ja) 2017-03-15 2018-10-04 株式会社東芝 解析装置、解析方法およびプログラム
US10812510B2 (en) 2018-01-12 2020-10-20 The Boeing Company Anticipatory cyber defense
JP6939726B2 (ja) * 2018-07-17 2021-09-22 日本電信電話株式会社 攻撃対処箇所選択装置及び攻撃対処箇所選択方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070322A (ja) 2007-09-18 2009-04-02 Nec Corp データ処理装置、システム、プログラム、及び、方法
JP2014174577A (ja) 2013-03-05 2014-09-22 Ntt Data Corp 検証装置、検証方法、及びプログラム

Also Published As

Publication number Publication date
US20210117551A1 (en) 2021-04-22
JP2021068098A (ja) 2021-04-30
EP3812933B1 (en) 2022-02-16
EP3812933A1 (en) 2021-04-28
US11429728B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
JP6088713B2 (ja) 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム
US20050283838A1 (en) Malicious-process-determining method, data processing apparatus and recording medium
CN107968791B (zh) 一种攻击报文的检测方法及装置
CN105074717A (zh) 在网络环境中的恶意脚本语言代码的检测
CN106133742B (zh) 确定装置、确定方法以及确定程序
JP5839967B2 (ja) マルウェア解析システム
KR20120105759A (ko) 악성 코드 시각화 장치와 악성 코드 탐지 장치 및 방법
JP2010122912A (ja) 異常判定装置、方法、及びプログラム
CN110178137B (zh) 数据判定装置、数据判定方法以及计算机能读取的存储介质
EP3432184B1 (en) Intrusion detection device, intrusion detection method, and intrusion detection program
KR101645019B1 (ko) 소프트웨어 보안취약점 검출을 위한 규칙명세언어
CN113281998A (zh) 基于生成对抗网络的工业信息物理系统多点fdi攻击检测方法
JP7074739B2 (ja) 脆弱性評価装置
CN106709335B (zh) 漏洞检测方法和装置
CN112711760B (zh) 检测智能合约恶意消除重入影响漏洞的检测方法和装置
WO2020196549A1 (ja) 誤り判定装置、誤り判定方法、及びプログラム
JP6966522B2 (ja) 脆弱性分析装置
JP6067195B2 (ja) 情報処理装置及び情報処理方法及びプログラム
CN115834229A (zh) 一种报文安全检测方法、设备及存储介质
WO2020008632A1 (ja) 仮説推論装置、仮説推論方法、及びコンピュータ読み取り可能な記録媒体
US10754719B2 (en) Diagnosis device, diagnosis method, and non-volatile recording medium
CN113868646B (zh) 基于主机的入侵检测方法及装置
US20190018959A1 (en) Diagnosis device, diagnosis method, and non-transitory recording medium
CN112270136B (zh) 一种基于功能域的终端设备安全威胁模型的构建方法
Testerink et al. A Model for Collaborative Runtime Verification.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211202

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: 20220510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220512

R150 Certificate of patent or registration of utility model

Ref document number: 7074739

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350