JP7008879B2 - 情報処理装置、情報処理方法及び情報処理プログラム - Google Patents
情報処理装置、情報処理方法及び情報処理プログラム Download PDFInfo
- Publication number
- JP7008879B2 JP7008879B2 JP2021528741A JP2021528741A JP7008879B2 JP 7008879 B2 JP7008879 B2 JP 7008879B2 JP 2021528741 A JP2021528741 A JP 2021528741A JP 2021528741 A JP2021528741 A JP 2021528741A JP 7008879 B2 JP7008879 B2 JP 7008879B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- threat
- information
- function
- vulnerability
- 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
Links
- 230000010365 information processing Effects 0.000 title claims description 16
- 238000003672 processing method Methods 0.000 title claims description 3
- 238000012545 processing Methods 0.000 claims description 116
- 238000000034 method Methods 0.000 claims description 47
- 230000008569 process Effects 0.000 claims description 30
- 239000000284 extract Substances 0.000 claims description 27
- 238000012502 risk assessment Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 description 175
- 238000013461 design Methods 0.000 description 38
- 238000000605 extraction Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 21
- 230000007704 transition Effects 0.000 description 19
- 238000004458 analytical method Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 16
- 238000011161 development Methods 0.000 description 15
- 238000012795 verification Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 7
- 238000007689 inspection Methods 0.000 description 6
- 238000012038 vulnerability analysis Methods 0.000 description 5
- 238000001784 detoxification Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013502 data validation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 241000136406 Comones Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
外部から入力されたデータに基づき処理を行うソフトウェアでは、想定外の入力データによって不正な処理が実行される可能性がある。テイント解析では、外部からの入力データを汚染されたデータ(テイント)と見なす。そして、テイント解析では、データが入力されてから当該データが使用されるまでのデータフローを追跡する。更に、テイント解析では、データの使用前にデータの検証処理又は/及びデータ無害化処理があるかどうかを判定する。もし、データ検証処理又は/及びデータ無害化処理がなければ、汚染されたデータがそのまま使用されることになる。データ検証処理又は/及びデータ無害化処理がない場合は、不正な処理が実行される可能性があるため、脆弱性があると判定される。一方、データ検証処理又は/及びデータ無害化処理があれば、汚染されたデータが除去されたと見なすことができ、このため、脆弱性がないと判定される。
具体的には、特許文献1では、ソースコードにおいて、データが外部から入力され、外部へデータが出力される手順を定めたデータフローが抽出される。そして、抽出されたデータフローと、データベースに登録された脆弱性の発生点及び使用点とを照合することによって脆弱経路が検出される。
プログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得する脅威情報取得部と、
前記プログラムに記述される変数のうち前記脅威関与要素に対応する変数を脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する判定部とを有する。
***構成の説明***
図1は、実施の形態1に係るセキュリティ設計装置100のハードウェア構成例を示す。
セキュリティ設計装置100は、情報処理装置に相当する。また、セキュリティ設計装置100の動作手順は、情報処理方法に相当する。
セキュリティ設計装置100は、プロセッサ101、主記憶装置102、補助記憶装置103、入力インターフェース111、表示インターフェース112及びネットワークインターフェース113で構成される。これらのハードウェア要素は、データバス114によって接続されている。
また、図1は、セキュリティ設計装置100の機能を実現する検証プログラム104の実行時における各データの配置例を示す。具体的には、検証プログラム104、プログラム105、ソフトウェアトレース情報106、対策関数情報107、脅威情報108、脆弱性情報109は主記憶装置102に配置される。また、脆弱性DB110は補助記憶装置103に配置される。
検証プログラム104は、情報処理プログラムに相当する。
検証プログラム104は、通常、補助記憶装置103に格納されており、実行時は、プロセッサ101によって主記憶装置102に読み込まれ、プロセッサ101により実行される。
検証プログラム104は、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204及び脆弱性情報生成部205の機能を実現するプログラムである。
図1では、プロセッサ101が検証プログラム104を実行している状態を模式的に表している。つまり、図1では、プロセッサ101が、検証プログラム104を実行して、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204及び脆弱性情報生成部205として動作している状態を模式的に表している。
検証プログラム104、ソフトウェアトレース情報106、対策関数情報107及び脅威情報108は、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204及び脆弱性情報生成部205のいずれかにより用いられる。
プログラム105、ソフトウェアトレース情報106、対策関数情報107及び脅威情報108のうちのいずれかは、入力インターフェース111又はネットワークインターフェース113から入力されて、主記憶装置102に転送される。また、プログラム105、ソフトウェアトレース情報106、対策関数情報107及び脅威情報108のうちのいずれかは、補助記憶装置103からの読み込みによって、主記憶装置102に転送される。
脆弱性情報109は脆弱性情報生成部205から出力される。脆弱性情報109は、例えば、補助記憶装置103に格納される。また、脆弱性情報109は、表示インターフェース112に通じて表示装置に表示されてもよい。また、脆弱性情報109は、ネットワークインターフェース113を通じて外部に転送されてもよい。
また、セキュリティ設計装置100は、機能構成として、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204及び脆弱性情報生成部205を有する。
脆弱性特定情報選択部202、脅威関与変数抽出部203及び脆弱性判定部204は、判定部250に相当する。また、脆弱性特定情報選択部202、脅威関与変数抽出部203及び脆弱性判定部204により行われる処理は判定処理に相当する。
本実施の形態では、制御システムの機器コントローラの通信ソフトウェア(以下、通信S/Wと表記する)にプログラム105を適用することとする。
プログラム105は、機器コントローラの動作を詳細に定義した仕様である。例えば、プログラミング言語で記述したソースコードがプログラム105に該当する。図4は、制御システムの機器コントローラの通信S/W303、すなわち、プログラム105の例を示す。
プログラム105はソフトウェア開発の実装段階で生成されるものである。通常のソフトウェア開発では、実装に先立って、例えばシステム設計の段階がある。そして、システム設計の段階で、システム構成やシステムの概略的な動作が定義される。
HMI301は、運転員が制御システムの監視制御を行うための端末である。HMI301における運転員による操作に従い、HMI301から機器コントローラ302に対して、伝送路305を介して、START、STOP及びREADのいずれかの制御コマンド308が送信される。また、HMI301は、機器コントローラ302から、レスポンスとしてセンサ情報を受信する。
機器コントローラ302は、HMI301からの指示に従いフィールド機器304を制御する。機器コントローラ302の送受信機能は、通信S/W303によって実現されている。より具体的には、通信S/W303は、HMI301から伝送路305を介して送信された制御コマンド308を受信する。また、通信S/W303は、HMI301から受信した制御コマンド308に従い、フィールド機器304にON、OFFいずれかの制御信号309を送信する。また、通信S/W303は、フィールド機器304から送信されるセンサ情報を受信する。更に、通信S/W303は、制御コマンド308に対するレスポンスとして、センサ情報をHMI301に送信する。
通信S/W303は、ソフトウェア開発の段階に従って仕様化、詳細化されていく。例えば、システム構成図300が生成されて通信S/W303の動作の概要が定義され、次に、プログラム仕様図310が生成されて通信S/W303のプログラム仕様が定義される。そして、実装段階でさらに詳細化されて、ソースコードであるプログラム105が生成される。
状態312は、SYSTEM_OFFのラベルを持つ状態である。状態313は、SYSTEM_ONのラベルを持つ状態である。状態遷移311は、状態312から状態313への状態遷移である。状態遷移314は、状態313から状態312への状態遷移である。状態遷移315は、状態313から状態313への状態遷移である。
状態遷移311は、状態がSYSTEM_OFFであるとき、「HMIから制御コマンドSTARTを受信」という条件が満たされれば「フィールド機器に制御信号ONを送信」という処理が実行され、状態がSYSTEM_ONに遷移することを意味する。これは、HMI301から制御コマンドSTARTを受信すると、フィールド機器304に制御信号ONを送信するという、機器コントローラ302の通信S/W303の動作を定義している。
状態遷移314は、状態がSYSTEM_ONであるとき、「HMIから制御コマンドSTOPを受信」という条件が満たされれば「フィールド機器に制御信号OFFを送信」という処理が実行され、状態がSYSTEM_OFFに遷移することを意味する。これは、HMI301から制御コマンドSTOPを受信すると、フィールド機器304に制御信号OFFを送信するという、機器コントローラ302の通信S/W303の動作を定義している。
状態遷移315は、状態がSYSTEM_ONであるとき、「HMIから制御コマンドREADを受信」という条件が満たされれば「フィールド機器からセンサ情報を読込」と「HMIにセンサ情報を送信」の2個の処理が実行され、状態がSYSTEM_ONに遷移する、すなわち、状態がSYSTEM_ONのまま変化しないことを意味する。これは、HMI301から制御コマンドREADを受信すると、フィールド機器304から読み込んだセンサ情報をHMI301に送信するという、機器コントローラ302の通信S/W303の動作を定義している。
図5は、本実施の形態に係るソフトウェアトレース情報106の例を示す。
ソフトウェアトレース情報106は、システム設計とプログラム設計と実装の項目で構成される。
ソフトウェアトレース情報106は、ソフトウェア開発の各段階で生成される成果物を互いに対応付ける情報である。例えば、番号1の行から、各段階の成果物がシステム構成図300、プログラム仕様図310及びプログラム105であることがわかる。また、番号2の行から、システム構成図300の制御コマンドがプログラム仕様図310の制御コマンドに対応し、また、プログラム105の変数cmdに対応することがわかる。
脅威情報108は、脅威と情報資産と脆弱性の項目で構成される。
「脅威」は、プログラム105の実行時に発生し得る脅威である。脅威は、プログラム仕様書(本例では、システム構成図300)に基づくリスク分析により特定された脅威である。ユーザがプログラム仕様書を参照したリスク分析を行って脅威の特定を行ってもよいし、特定の分析ツールにプログラム仕様書に基づくリスク分析を行わせて脅威の特定を行わせてもよい。
「情報資産」は、プログラム仕様書に示される要素のうち脅威の発生に関与する要素である。脅威情報108に示される情報資産を脅威関与要素にともいう。
「脆弱性」は、脅威を発生させる脆弱性であり、プログラム105に存在する脆弱性である。図7の例では、脆弱性は、CWE(Common Weakness Enumeration)と呼ばれる脆弱性の識別子により表現されている。図7の例からは、「HMI-機器コントローラ間の制御コマンドの改ざんによるフィールド機器の停止」という脅威があり、当該脅威の発生に関与する情報資産が「制御コマンド」であること、また、当該脅威を発生させる脆弱性が「CWE-20」であることがわかる。なお、脆弱性は、CWE以外の形式で表現することも可能である。
脆弱性対策処理情報115は、脆弱性と対策処理の項目で構成される。
「脆弱性」は、脅威情報108に示される脆弱性である。
「対策処理」は、脅威への対策を実現する処理である。具体的には、「対策処理」には、脅威を排除するための処理が示される。
図7の脆弱性対策処理情報115では、例えば、CWE-20の脆弱性に対しては、「入力検証」により脅威が排除される。
「対策処理」は、脆弱性対策処理情報115に示される対策処理である。
「ライブラリ」は、プログラム105が使用するライブラリを示す。
「対策関数」は、プログラム105が使用するライブラリにおいて対策処理を実現する関数を示す。具体的には、脅威を排除するための関数である。
そして、脅威情報取得部201は、脅威情報108から脆弱性識別子211及び脅威関与要素情報212を生成する。また、脅威情報取得部201は、脆弱性識別子211を脆弱性特定情報選択部202に出力し、脅威関与要素情報212を脅威関与変数抽出部203に出力する。
具体的には、脅威情報取得部201は、脅威情報108に示される脆弱性(例えば、「CWE-20」)を抽出する。また、脅威情報取得部201は、抽出した脆弱性を通知する脆弱性識別子211を生成し、脆弱性識別子211を脆弱性特定情報選択部202に出力する。また、脅威情報取得部201は、脅威情報108に示される情報資産(例えば、「制御コマンド」)を通知する脅威関与要素情報212を生成する。そして、脅威情報取得部201は、脅威関与要素情報212を脅威関与変数抽出部203に出力する。
脅威情報取得部201で行われる処理は、脅威情報取得処理に相当する。
そして、脅威関与変数抽出部203は、脅威関与要素情報212に示される情報資産(脅威関与要素)とソフトウェアトレース情報106において対応付けられているプログラム105の要素を抽出する。より具体的には、脅威関与変数抽出部203は、脅威関与要素情報212に示される情報資産(脅威関与要素)とソフトウェアトレース情報106において対応付けられているプログラム105の変数を抽出する。なお、脅威関与変数抽出部203が抽出する変数を脅威関与変数という。
脅威関与変数抽出部203は、抽出した脅威関与変数を通知する脅威関与変数情報214を生成する。そして、脅威関与変数抽出部203は、生成した脅威関与変数情報214を脆弱性判定部204に出力する。
そして、脆弱性判定部204は、プログラム105内の適切な箇所に脅威関与変数情報214に示される対策関数が記述されているか否かを判定する。プログラム105内の適切な箇所に対策関数が記述されている場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていると判定する。一方で、プログラム105内の適切な箇所に対策関数が記述されていない場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていないと判定する。
より具体的には、脆弱性判定部204は、脅威関与変数情報214に示す脅威関与変数と対応付けられた入力処理関数と脅威関与変数と対応付けられた出力処理関数とを抽出する。そして、脆弱性判定部204は、抽出した入力処理関数と出力処理関数との間に対策関数が記述されているか否かを判定する。入力処理関数と出力処理関数との間に対策関数が記述されている場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていると判定する。一方で、入力処理関数と出力処理関数との間に対策関数が記述されていない場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていないと判定する。
そして、脆弱性判定部204は、判定結果215を脆弱性情報生成部205に出力する。
そして、脆弱性情報生成部205は、判定結果215から脆弱性情報109を生成し、脆弱性情報109を出力する。
前述したように、脆弱性情報生成部205は、例えば脆弱性情報109を補助記憶装置103に出力する。また、脆弱性情報生成部205は、ネットワークインターフェース113を介して脆弱性情報109を外部に出力してもよいし、表示インターフェース112を介して脆弱性情報109を表示装置に出力してもよい。
次に、実施の形態1に係るセキュリティ設計装置100の動作例を説明する。
図10は、実施の形態1に係るセキュリティ設計装置100の動作例を表すフローチャートである。
脅威情報取得部201は、図6に示す脅威情報108を取得する。
脅威情報取得部201は、脅威情報108から、各脅威に対応する情報資産の値及び脆弱性の値を抽出する。
図6の脅威情報108では、各行に、脅威、情報資産及び脆弱性の組が記載されている。脅威情報取得部201は、1行ずつ、情報資産の値と脆弱性の値を抽出する。そして、脅威情報取得部201は、抽出した情報資産の値を示す脅威関与要素情報212を脅威関与変数抽出部203に出力する。また、脅威情報取得部201は、抽出した脆弱性の値を示す脆弱性識別子211を脆弱性特定情報選択部202に出力する。
図6の例では、脅威情報取得部201は、情報資産の欄から「制御コマンド」を抽出し、「制御コマンド」を脅威関与要素として示す脅威関与要素情報212を脅威関与変数抽出部203に出力する。また、脆弱性特定情報選択部202は、脆弱性の欄から「CWE-20」を抽出し、「CWE-20」を示す脆弱性識別子211を脆弱性特定情報選択部202に出力する。脅威情報取得部201は、番号2以降の行についても同様にして脆弱性識別子211及び脅威関与要素情報212を出力する。
脆弱性特定情報選択部202は、脅威情報取得部201から脆弱性識別子211を取得する。また、脆弱性特定情報選択部202は、プログラム105及び対策関数情報107を取得する。そして、脆弱性特定情報選択部202は、脆弱性識別子211に基づき脆弱性DB110内の脆弱性対策処理情報115を検索し、対策処理を特定する。
例えば、「CWE-20」を示す脆弱性識別子211を取得した場合は、脆弱性特定情報選択部202は、「CWE-20」をキーにして図7に例示する脆弱性対策処理情報115を検索して、「CWE-20」に対応する対策処理として「入力検証」を抽出する。
また、脆弱性特定情報選択部202は、プログラム105を解析して、プログラム105で用いられるライブラリを特定する。ここでは、脆弱性特定情報選択部202は、プログラム105で用いられるライブラリとして「SSL」を特定したとする。脆弱性特定情報選択部202は、対策関数情報107を参照し、「入力検証」及び「SSL」に対応する対策関数を抽出する。図8の対策関数情報107では、脆弱性特定情報選択部202は、対策関数として「verifyInput」を抽出する。
そして、脆弱性特定情報選択部202は、対策関数「verifyInput」を示す関数特定情報213を脆弱性判定部204に出力する。
脅威関与変数抽出部203は、脅威関与要素情報212を脅威情報取得部201から取得する。また、脅威関与変数抽出部203は、ソフトウェアトレース情報106を取得する。
そして、脅威関与変数抽出部203は、脅威関与要素情報212に示される情報資産(脅威関与要素)に対応する変数(脅威関与変数)を抽出する。
ここで、脅威関与変数抽出部203は、情報資産「制御コマンド」が示される脅威関与要素情報212を取得したものとする。脅威関与変数抽出部203は、図5のソフトウェアトレース情報106を参照して、「制御コマンド」に対応する「実装」の欄の値である「変数cmd」を脅威関与変数として抽出する。
脅威関与変数抽出部203は、抽出した脅威関与変数である「変数cmd」が示される脅威関与変数情報214を脆弱性判定部204に出力する。
脆弱性判定部204は、脅威関与変数抽出部203から脅威関与変数情報214を取得する。また、脆弱性情報生成部205はプログラム105を取得する。
脆弱性判定部204は、脅威関与変数情報214に示される脅威関与変数と対応付けられた入力処理関数と出力処理関数を抽出する。
脆弱性判定部204が「変数cmd」が示される脅威関与変数情報214を取得したとする。この場合に、脆弱性判定部204は、図4のプログラム105において「変数cmd」と対応付けられている入力処理関数と出力処理関数を抽出する。具体的には、脆弱性判定部204は、図4のプログラム105から、符号402で示される関数「receiveFromHMI」と符号404で示される関数「sendToDevice」(符号403の「cmd」と対応付けられている)を取得する。
なお、符号402から符号404の範囲が、変数cmdが入力されてから変数cmdが使用されるまでのデータフローを表している。
脆弱性判定部204は、脆弱性特定情報選択部202から関数特定情報213を取得する。
脆弱性判定部204は、ステップS705で抽出した入力処理関数と出力処理関数との間に関数特定情報213に示される対策関数が記述されているか否かを判定する。
脆弱性判定部204は、ステップS705で入力処理関数として関数「receiveFromHMI」を抽出し、出力処理関数として関数「sendToDevice」を抽出したものとする。また、脆弱性判定部204は、対策関数として「verifyInput」が示される関数特定情報213を取得したものとする。
脆弱性判定部204は、プログラム105の関数「receiveFromHMI」(符号402)と関数「sendToDevice」(符号404)との間に、対策関数「verifyInput」が記述されているか否かを判定する。
図4のプログラム105では、関数「receiveFromHMI」(符号402)と関数「sendToDevice」(符号404)との間に、対策関数「verifyInput」は記述されていない。このため、脆弱性判定部204は、プログラム105には脅威情報108に示される脅威への対策が講じられていないと判定する。つまり、脆弱性判定部204は、プログラム105には脆弱性が存在すると判定する。
一方で、図9に示すプログラム901では、関数「receiveFromHMI」(符号402)と関数「sendToDevice」(符号404)との間に、対策関数「verifyInput」(符号405)が記述されている。このため、脆弱性判定部204は、プログラム105には脅威情報108に示される脅威への対策が講じられていると判定する。つまり、脆弱性判定部204は、プログラム901には脆弱性がないと判定する。
脆弱性判定部204は、判定結果215を脆弱性情報生成部205に出力する。脆弱性判定部204は、プログラム105において脅威への対策が講じられていないと判定した場合は、例えば、プログラム105の名称と、脅威と、脅威関与要素である情報資産と、脆弱性識別子と、脅威関与変数と、脆弱性のある関数と、脆弱性のある関数が記述されている箇所が示される判定結果215を出力する。一方、プログラム105において脅威への対策が講じられていると判定した場合は、脆弱性判定部204は、例えば、プログラム105の名称と、脅威と、対策済みである旨のメッセージが示される判定結果215を出力する。なお、プログラム105において脅威への対策が講じられていると判定した場合は、脆弱性判定部204は判定結果215を出力しなくてもよい。
脆弱性情報生成部205は、脆弱性判定部204から判定結果215を取得する。そして、脆弱性情報生成部205は、判定結果215を整形し、整形後の判定結果215を脆弱性情報109として出力する。
図11は、脆弱性情報109の例を示す。
図11において、「脅威」、「情報資産」及び「脆弱性」の値は、脅威情報108の値と同じである。「プログラム」の項目には、プログラム105の名称が記載される。「開始行:終了行」には、「関数」の項目に示される関数が記述されているプログラム105の行が記載される。「変数」には脅威関与変数が記載される。「関数」には脆弱性のある関数が記載される。
また、複数のプログラム105を検証対象とする場合は、セキュリティ設計装置100は、各プログラム105に対して図7のステップS701以降の処理を行う。
対策関数が複数存在する場合、脅威関与変数が複数存在する場合も、セキュリティ設計装置100は適宜該当する処理を繰り返し行う。
以上のように、本実施の形態では、ソフトウェア開発の上流段階で行われるリスク分析で特定された脅威への対策が、下流段階で生成されたプログラムにおいて講じられているか否かを判定する。
このため、本実施の形態によれば、プログラムの解析のみでは抽出できない脅威に対する対策の有無を判定することできる。そして、本実施の形態によれば、判定結果に基づき、プログラムの解析のみでは抽出できない脅威に対する対策を講じることができる。
従来技術では、セキュリティの3要素と呼ばれる機密性、完全性、可用性に関する脆弱性を特定することができなかった。例えば、データの完全性に関する脆弱性を特定するためには、まず対象となるデータが改ざんが許容されないデータであることを判定し、その上で改ざんを防ぐための対策が講じられているか否かを評価する必要がある。しかし、プログラム(ソースコード)にはデータの完全性に関する情報がないため、完全性に関する脆弱性を特定することができない。
本実施の形態では、図6に示すように、プログラム仕様書に基づくリスク分析により完全性に関する脅威が脅威情報108に記述されている場合は、セキュリティ設計装置100は、プログラム105において完全性に関する脅威への対策が講じられているか否かを評価することができる。更に、プログラム仕様書に基づくリスク分析により機密性に関する脅威(例えば、漏洩)が脅威情報108に記述されている場合は、セキュリティ設計装置100は、プログラム105において機密性に関する脅威への対策が講じられているか否かを評価することができる。また、リスク分析により可用性に関する脅威(例えば、DoS(Denial of Service)攻撃)が脅威情報108に記述されている場合は、セキュリティ設計装置100は、プログラム105において可用性に関する脅威への対策が講じられているか否かを評価することができる。
以上の実施の形態1は、特定の脆弱性箇所特定方法に依存するものではないが、実施の形態2では、脆弱性箇所特定方法として静的解析の一種であるテイント解析を利用する例を説明する。更に、実施の形態2では、テイント解析の実現方法として型検査を利用する例を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
図12は、実施の形態2に係るセキュリティ設計装置100の機能構成例を示す。図2と比較して、図12では、型通知部206が追加されている。また、図12では、関数特定情報213と脅威関与変数情報214が型通知部206に入力され、型情報プログラム216が型通知部206から脆弱性判定部204に出力される。なお、型通知部206も脅威情報取得部201等と同様に検証プログラム104により実現されるものとする。
なお、図12では、2つのプログラム105が記載されているが、これは作図上の理由によるものであり、両者は同一である。つまり、型通知部206に入力されるプログラム105と脆弱性特定情報選択部202に入力されるプログラム105は同一である。
なお、図示は省略するが、本実施の形態では、プロセッサ101のブロックに型通知部206のブロックが追加される。また、本実施の形態では、主記憶装置102のブロックに型情報プログラム216のブロックが追加される。
本実施の形態では、脆弱性判定部204は、型情報プログラム216の型情報で通知される入力処理関数の戻り値の型と出力処理関数の引数の型と対策関数の引数及び戻り値の型に基づき、対策関数が入力処理関数と出力処理関数との間に記述されているか否かを判定する。
また、本実施の形態では、図14に示すように、対策関数情報107に対策関数の引数及び戻り値の型の情報が含まれている。具体的には、対策関数「verifyInput」の引数の型として「int<insecure>」が記載されており、戻り値の型として「int<secure>」が記載されている。
図15は、本実施の形態に係るセキュリティ設計装置100の動作例を示す。
なお、実施の形態1と同様に、本実施の形態では、図4に示すプログラム105を検証対象とする。また、実施の形態1と同様に、脅威関与変数情報214には脅威関与変数として「cmd」が記載されているものとする。
つまり、型通知部206は、脅威関与変数情報214に示される脅威関与変数と対応付けられた入力処理関数と出力処理関数を抽出する。
型通知部206が脅威関与変数として「変数cmd」が示される脅威関与変数情報214を取得したとする。この場合に、型通知部206は、図4のプログラム105において「変数cmd」と対応付けられている入力処理関数と出力処理関数を抽出する。具体的には、型通知部206は、図4のプログラム105から、符号402で示される関数「receiveFromHMI」と符号404で示される関数「sendToDevice」(符号403の「cmd」と対応付けられている)を取得する。
型情報217では、各関数の引数又は/及び戻り値の型に加えて、各関数の種類と、各関数とテイント解析との関係も示される。
つまり、入力処理関数「receiveFromHMI」の種類は「入力」である。また、入力処理関数「receiveFromHMI」はテイント解析における「Source」に対応する。
また、出力処理関数「sendToDevice」の種類は「使用」である。また、出力処理関数「sendToDevice」はテイント解析におけるSinkに対応する。
また、対策関数「verifyInput」の種類は「入力検証」である。また、対策関数「verifyInput」はテイント解析における「Sanitizer」に対応する。
また、図13の型情報217では、入力処理関数「receiveFromHMI」の戻り値の型が「int<insecure>」であることが示される。また、図13の型情報217では、出力処理関数「sendToDevice」の引数の型が「int<secure>」であることが示される。更に、図13の型情報217では、対策関数「verifyInput」の引数の型が「int<insecure>」であり、戻り値の型が「int<secure>」であることが示される。
出力処理関数「sendToDevice」は、汚染されていないデータを引数として受け取る関数である。このため、型通知部206は、出力処理関数「sendToDevice」の引数の型を「int<secure>」と識別する。
なお、図13の型情報217に示される対策関数「verifyInput」の引数の型である「int<insecure>」と、戻り値の型である「int<secure>」は、図14の対策関数情報107に示す型の情報である。対策関数「verifyInput」は、汚染されたデータを引数として受け取り、検証し、汚染が除去されたデータを返す関数である。対策関数「verifyInput」の引数の型は「int<insecure>」であり、戻り値の型は「int<secure>」である。
なお、本実施の形態でも、図14の対策関数情報107の代わりに図8の対策関数情報107を用い、型通知部206が対策関数「verifyInput」の引数の型及び戻り値の型を識別するようにしてもよい。
型検査でエラーが発生した場合は、脆弱性判定部204は、エラー発生箇所を脆弱性として特定する一方、型検査でエラーが発生しなかった場合はプログラム105に脆弱性がないと判定する。
疑似コード1002及び疑似コード1005を用いて、脆弱性判定部204による型検査の動作を説明する。
次に、コード記述1004で変数「cmd」が、関数「sendToDevice」の引数として渡される。
しかし、関数「sendToDevice」は引数として「int<secure>」型の値を受け取ることになっている。このため、変数cmdの型と関数「sendToDevice」の引数の型とが一致せず、型のエラーが発生する。
以上により、脆弱性判定部204は、疑似コード1002のコード記述1004に脆弱性があると判定する。
次に、コード記述1007で変数「cmd」が、引数として関数「verifyInput」に渡される。
関数「verifyInput」は引数として「int<insecure>」型の値を受け取ることになっている。このため、変数「cmd」の型と関数「verifyInput」の引数の型とが一致しており、コード記述1007では型のエラーは発生しない。
そして、関数「verifyInput」の戻り値として「int<secure>」型の値が変数「cmd」に代入される。
次に、コード記述1008で変数「cmd」が、引数として関数「sendToDevice」に渡される。関数「sendToDevice」は引数として「int<secure>」型の値を受け取ることになっている。このため、変数「cmd」の型と関数「sendToDevice」の引数の型とが一致しており、コード記述1008では型のエラーは発生しない。
以上により、脆弱性判定部204は、疑似コード1005には脆弱性がないと判定する。
以上のように、本実施の形態では、型検査により対策関数がプログラムに記述されているか否かを判定する。このため、本実施の形態によれば、少ない計算負荷で脅威への対策の有無を判定することができる。
また、本実施の形態では、型情報がプログラムに付加される。このため、型検査を効率的に行うことができる。
以上の実施の形態1及び実施の形態2は、特定の開発プロセスを想定したものではなかった。
本実施の形態では、モデルベース開発あるいはモデル駆動開発等のモデルを利用したソフトウェア開発で得られたプログラムにおいて脅威への対策が講じられているか否かを判定する例を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
モデルベース開発では、自然言語で仕様書を記述する代わりに、コンピュータによる処理に適した形式で仕様を生成する。これをモデル化と呼び、生成される仕様をモデルと呼ぶ。モデルは厳密な形式に従って生成されるため、解釈の曖昧さを排除することができる。また、モデルをシミュレーションとして動作させることが可能である。また、モデルからソースコードを自動生成することが可能な場合もある。更に、このモデルとソースコードとの関係に見られるように、各データ同士が対応付けられており、実施の形態1で説明したソフトウェアトレース情報の入手が容易である。
先ず、モデル化1101が行われ、モデル1102が生成される。その後、検証1103により、モデル1102を利用して要件の検証又は設計の改善が進められる。
検証1103では、上述の通りシミュレーションを利用して、例えばプログラム1105の動作をあらかじめ検証することもできる。また、形式手法と呼ばれる手法により、モデル1102が要件を満たすことを数学的に証明することもできる。モデル1102が完成した後、コード生成1104によってプログラム1105(ソースコード)が生成される。また、モデル1102とプログラム1105との対応関係を表す情報が、トレース情報1106として存在する。
モデルベース開発における検証1203の一環としてリスク分析が行われ、脅威一覧1208が出力される。また、脆弱性判定1207によってプログラム1205(ソースコード)に対する脆弱性の有無が判定される。
通常、脆弱性判定1207はプログラム1205のみを用いて行われるが、本実施の形態ではトレース情報1206と脅威一覧1208も利用する。トレース情報1206は、実施の形態1のソフトウェアトレース情報106に対応する。脅威一覧1208は、実施の形態1の脅威情報108に対応する。
なお、図19において、モデル化1201はモデル化1101と同じである。また、モデル1202もモデル1102と同じである。更に、コード生成1204はコード生成1104と同じである。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
最後に、セキュリティ設計装置100のハードウェア構成の補足説明を行う。
図1に示すプロセッサ101は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ101は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等である。
図1に示す主記憶装置102は、RAM(Random Access Memory)である。
図1に示す補助記憶装置103は、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)等である。
そして、OSの少なくとも一部がプロセッサ101により実行される。
プロセッサ101はOSの少なくとも一部を実行しながら、検証プログラム104を実行する。
プロセッサ101がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204、脆弱性情報生成部205及び型通知部206の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、主記憶装置102、補助記憶装置103、プロセッサ101内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、検証プログラム104は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、検証プログラム104が格納された可搬記録媒体を商業的に流通させてもよい。
また、セキュリティ設計装置100は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
Claims (8)
- 変数が記述されているプログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得する脅威情報取得部と、
相互に関連する前記プログラムの変数と前記プログラム仕様書の要素とが対応付けられて示されるソフトウェアトレース情報を参照し、前記ソフトウェアトレース情報において前記脅威関与要素と対応付けられている変数を前記プログラムに記述されている変数の中から脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する判定部とを有する情報処理装置。 - 前記判定部は、
前記脅威への対策を実現する処理である対策処理を実現する関数である対策関数が、前記プログラムにおいて、前記脅威関与変数と対応付けられた入力処理関数と前記脅威関与変数と対応付けられた出力処理関数との間に記述されているか否かを解析して、前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する請求項1に記載の情報処理装置。 - 前記判定部は、
前記対策関数が、前記プログラムにおいて、前記入力処理関数と前記出力処理関数との間に記述されている場合に、前記脅威への対策が前記プログラムにおいて講じられていると判定する請求項2に記載の情報処理装置。 - 前記判定部は、
前記入力処理関数の戻り値の型と前記対策関数の引数の型とが一致しているか否か、及び、前記対策関数の戻り値の型と前記出力処理関数の引数の型とが一致しているか否かを判定して、前記対策関数が前記入力処理関数と前記出力処理関数との間に記述されているか否かを判定する請求項2に記載の情報処理装置。 - 前記情報処理装置は、更に、
前記入力処理関数の戻り値の型と前記出力処理関数の引数の型と前記対策関数の引数及び戻り値の型を前記判定部に通知する型通知部を有し、
前記判定部は、
前記型通知部から通知された、前記入力処理関数の戻り値の型と前記対策関数の引数の型とが一致しているか否か、及び、前記対策関数の戻り値の型と前記出力処理関数の引数の型とが一致しているか否かを判定して、前記対策関数が前記入力処理関数と前記出力処理関数との間に記述されているか否かを判定する請求項4に記載の情報処理装置。 - 前記判定部は、
前記入力処理関数の戻り値の型と前記対策関数の引数の型とが一致し、前記対策関数の戻り値の型と前記出力処理関数の引数の型とが一致している場合に、前記対策関数が前記入力処理関数と前記出力処理関数との間に記述されていると判定する請求項4又は5に記載の情報処理装置。 - コンピュータが、変数が記述されているプログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得し、
前記コンピュータが、相互に関連する前記プログラムの変数と前記プログラム仕様書の要素とが対応付けられて示されるソフトウェアトレース情報を参照し、前記ソフトウェアトレース情報において前記脅威関与要素と対応付けられている変数を前記プログラムに記述されている変数の中から脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する情報処理方法。 - 変数が記述されているプログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得する脅威情報取得処理と、
相互に関連する前記プログラムの変数と前記プログラム仕様書の要素とが対応付けられて示されるソフトウェアトレース情報を参照し、前記ソフトウェアトレース情報において前記脅威関与要素と対応付けられている変数を前記プログラムに記述されている変数の中から脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する判定処理とをコンピュータに実行させる情報処理プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/025382 WO2020261430A1 (ja) | 2019-06-26 | 2019-06-26 | 情報処理装置、情報処理方法及び情報処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2020261430A1 JPWO2020261430A1 (ja) | 2021-10-21 |
JP7008879B2 true JP7008879B2 (ja) | 2022-01-25 |
Family
ID=74060827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021528741A Active JP7008879B2 (ja) | 2019-06-26 | 2019-06-26 | 情報処理装置、情報処理方法及び情報処理プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7008879B2 (ja) |
WO (1) | WO2020261430A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112926058B (zh) * | 2021-03-25 | 2024-07-16 | 支付宝(杭州)信息技术有限公司 | 代码处理方法、污点分析方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006087780A1 (ja) | 2005-02-17 | 2006-08-24 | Fujitsu Limited | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 |
JP2017068825A (ja) | 2015-09-29 | 2017-04-06 | パナソニックIpマネジメント株式会社 | ソフトウェア開発システムおよびプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2004232058B2 (en) * | 2003-04-18 | 2010-05-27 | International Business Machines Corporation | Method and system for detecting vulnerabilities in source code |
JP4693044B2 (ja) * | 2005-08-18 | 2011-06-01 | 株式会社日立ソリューションズ | ソースコード脆弱性検査装置 |
-
2019
- 2019-06-26 WO PCT/JP2019/025382 patent/WO2020261430A1/ja active Application Filing
- 2019-06-26 JP JP2021528741A patent/JP7008879B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006087780A1 (ja) | 2005-02-17 | 2006-08-24 | Fujitsu Limited | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 |
JP2017068825A (ja) | 2015-09-29 | 2017-04-06 | パナソニックIpマネジメント株式会社 | ソフトウェア開発システムおよびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2020261430A1 (ja) | 2021-10-21 |
WO2020261430A1 (ja) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6516870B2 (ja) | プログラム命令を安全に実行する方法及び該方法用プログラム | |
JP4976991B2 (ja) | 情報処理装置、プログラム検証方法及びプログラム | |
Chowdhury et al. | Safe and secure automotive over-the-air updates | |
US20070168670A1 (en) | Secure bytecode instrumentation facility | |
JPWO2006087780A1 (ja) | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 | |
US20210334384A1 (en) | Detecting a potential security leak by a microservice | |
US20090113552A1 (en) | System and Method To Analyze Software Systems Against Tampering | |
Kellogg et al. | Continuous compliance | |
US10089463B1 (en) | Managing security of source code | |
CN116361807A (zh) | 风险管控方法、装置、存储介质及电子设备 | |
US10387288B2 (en) | Interactive analysis of a security specification | |
Bouffard et al. | Reversing the operating system of a Java based smart card | |
US8176560B2 (en) | Evaluation of tamper resistant software system implementations | |
JP7008879B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
JP5077455B2 (ja) | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 | |
JP6632777B2 (ja) | セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム | |
JP2009129204A (ja) | コード検査システム及びコード検査方法及びプログラム | |
KR20210041310A (ko) | 스마트 컨트랙트 검증 장치 및 방법 | |
CN109344577A (zh) | 一种art下使用自修改技术进行软件保护的方法 | |
Zhioua et al. | Formal specification and verification of security guidelines | |
JP6608569B1 (ja) | セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム | |
Zhioua et al. | Framework for the formal specification and verification of security guidelines | |
Goli et al. | VIP-VP: Early validation of SoCs information flow policies using SystemC-based virtual prototypes | |
Lloyd et al. | Security analysis of a biometric authentication system using UMLsec and JML | |
JP6494887B1 (ja) | 検査装置、検査方法及び検査プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210702 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20210702 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210914 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211008 |
|
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: 20211214 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220111 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7008879 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |