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

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

Info

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
Application number
JP2021528741A
Other languages
English (en)
Other versions
JPWO2020261430A1 (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
Publication of JPWO2020261430A1 publication Critical patent/JPWO2020261430A1/ja
Application granted granted Critical
Publication of JP7008879B2 publication Critical patent/JP7008879B2/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/57Certifying 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

本発明は、セキュリティ上の脅威への対策がプログラムにおいて講じられているか否かを判定する技術に関する。
システム又は機器のセキュリティ対策は、一般に以下の手順にて実施される。まず、開発の上流工程の段階で、システム又は機器で発生し得る脅威が抽出される。次に、抽出された脅威による被害の大きさを評価するリスク分析と呼ばれるプロセスが実施される。そして、リスク分析の結果、対策すべき脅威の優先度を把握し、各脅威へのセキュリティ対策の方針を立て、開発工程の各段階でセキュリティ対策を具体化していく。例えば、データの盗聴への対策としてデータを暗号化する場合は、暗号化及び復号のロジックがソフトウェアの設計に反映される。また、暗号鍵をセキュアに保管するためのハードウェア構成がシステム設計に反映される。一方、PC(Personal Computer)への不正アクセス対策としてスクリーンロックを利用する場合は、スクリーンロックの徹底がシステムの運用マニュアルに反映される。
ソフトウェア開発の実装段階で行われるセキュリティ対策として静的解析がある、静的解析では、セキュリティ上の脅威に繋がるソフトウェアの問題である脆弱性を、ソフトウェアの実行コードを動作させず、主にソースコードを解析することによって特定する。さらに、静的解析の具体的な方法として、データフローを追跡するテイント解析と呼ばれる手法がある。
外部から入力されたデータに基づき処理を行うソフトウェアでは、想定外の入力データによって不正な処理が実行される可能性がある。テイント解析では、外部からの入力データを汚染されたデータ(テイント)と見なす。そして、テイント解析では、データが入力されてから当該データが使用されるまでのデータフローを追跡する。更に、テイント解析では、データの使用前にデータの検証処理又は/及びデータ無害化処理があるかどうかを判定する。もし、データ検証処理又は/及びデータ無害化処理がなければ、汚染されたデータがそのまま使用されることになる。データ検証処理又は/及びデータ無害化処理がない場合は、不正な処理が実行される可能性があるため、脆弱性があると判定される。一方、データ検証処理又は/及びデータ無害化処理があれば、汚染されたデータが除去されたと見なすことができ、このため、脆弱性がないと判定される。
特許文献1では、ソースコードにおいて脆弱経路を検出する方法が示されている。
具体的には、特許文献1では、ソースコードにおいて、データが外部から入力され、外部へデータが出力される手順を定めたデータフローが抽出される。そして、抽出されたデータフローと、データベースに登録された脆弱性の発生点及び使用点とを照合することによって脆弱経路が検出される。
特開2008-299723号公報
特許文献1の技術では、プログラムのみを解析し、プログラムのみから脅威を抽出する。このため、特許文献1では、脅威の抽出漏れが生じ、十分な対策を講じることができない可能性がある。
本発明は、このような課題を解決することを主な目的とする。より具体的には、本発明は、プログラムの解析のみでは抽出できない脅威に対しても対策が講じられるようにすることを主な目的とする。
本発明に係る情報処理装置は、
プログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得する脅威情報取得部と、
前記プログラムに記述される変数のうち前記脅威関与要素に対応する変数を脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する判定部とを有する。
本発明では、プログラム仕様書に基づくリスク分析により特定された脅威への対策がプログラムにおいて講じられているか否かを判定する。このため、本発明によれば、プログラムの解析のみでは抽出できない脅威に対しても対策が講じられる。
実施の形態1に係るセキュリティ設計装置のハードウェア構成例を示す図。 実施の形態1に係るセキュリティ設計装置の機能構成例を示す図。 実施の形態1に係るシステム構成図及びプログラム仕様図の例を示す図。 実施の形態1に係るプログラムの例を示す図。 実施の形態1に係るソフトウェアトレース情報の例を示す図。 実施の形態1に係る脅威情報の例を示す図。 実施の形態1に係る脆弱性対策処理情報の例を示す図。 実施の形態1に係る対策関数情報の例を示す図。 実施の形態1に係る対策が講じられているプログラムの例を示す図。 実施の形態1に係るセキュリティ設計装置の動作例を示すフローチャート。 実施の形態1に係る脆弱性情報の例を示す図。 実施の形態2に係るセキュリティ設計装置の機能構成例を示す図。 実施の形態2に係る型情報の例を示す図。 実施の形態2に係る対策関数情報の例を示す図。 実施の形態2に係るセキュリティ設計装置の動作例を示すフローチャート。 実施の形態2に係る疑似コードの例を示す図。 実施の形態2に係る疑似コードの例を示す図。 モデルベース開発の流れを示す図。 モデルベース開発にセキュリティ設計装置を適用した流れを示す図。
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
実施の形態1.
***構成の説明***
図1は、実施の形態1に係るセキュリティ設計装置100のハードウェア構成例を示す。
セキュリティ設計装置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を通じて外部に転送されてもよい。
図2は、実施の形態1に係るセキュリティ設計装置100の機能構成例及びデータフロー例を示す。
前述したように、セキュリティ設計装置100は、ソフトウェアトレース情報106、脅威情報108及び脆弱性DB110を用いて、プログラム105における対策の有無を検証する。
また、セキュリティ設計装置100は、機能構成として、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204及び脆弱性情報生成部205を有する。
脆弱性特定情報選択部202、脅威関与変数抽出部203及び脆弱性判定部204は、判定部250に相当する。また、脆弱性特定情報選択部202、脅威関与変数抽出部203及び脆弱性判定部204により行われる処理は判定処理に相当する。
プログラム105は、セキュリティ設計装置100の検証対象となるプログラムである。つまり、セキュリティ設計装置100は、プログラム105の実行時に発生し得る脅威への対策がプログラム105において講じられているか否かを判定する。
本実施の形態では、制御システムの機器コントローラの通信ソフトウェア(以下、通信S/Wと表記する)にプログラム105を適用することとする。
プログラム105は、機器コントローラの動作を詳細に定義した仕様である。例えば、プログラミング言語で記述したソースコードがプログラム105に該当する。図4は、制御システムの機器コントローラの通信S/W303、すなわち、プログラム105の例を示す。
プログラム105はソフトウェア開発の実装段階で生成されるものである。通常のソフトウェア開発では、実装に先立って、例えばシステム設計の段階がある。そして、システム設計の段階で、システム構成やシステムの概略的な動作が定義される。
図3は、制御システムのシステム構成図300及びプログラム仕様図310の例を示す。システム構成図300とプログラム仕様図310は、プログラム仕様書の例である。プログラム仕様書は、プログラムの仕様が示される情報である。プログラム仕様書は、プログラム105のコーディングに先立って生成されるソフトウェア開発成果物である。
本実施の形態に係る制御システムは、HMI(Human Machine Interface)301、機器コントローラ302及びフィールド機器304で構成される。HMI301と機器コントローラ302は伝送路305で接続され、機器コントローラ302とフィールド機器304は伝送路306で接続される。
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が生成される。
プログラム仕様図310は、状態遷移図である。プログラム仕様図310は、状態遷移311、状態312、状態313、状態遷移314及び状態遷移315で構成されている。
状態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の動作を定義している。
以上のように、機器コントローラ302の通信S/W303の開発においては、開発工程の各段階に応じてシステム構成図300、プログラム仕様図310及びプログラム105のような仕様が生成され、それらは互いに対応付けられる。ソフトウェアのライフサイクルにおいて、各成果物が互いに対応付けられ追跡可能である性質はトレーサビリティと呼ばれる。これにより、例えば要求が設計、実装に正しく反映されていることが保証される。
ソフトウェアトレース情報106は、相互に関連するプログラム105の要素とプログラム仕様書の要素とが対応付けられて示される情報である。
図5は、本実施の形態に係るソフトウェアトレース情報106の例を示す。
ソフトウェアトレース情報106は、システム設計とプログラム設計と実装の項目で構成される。
ソフトウェアトレース情報106は、ソフトウェア開発の各段階で生成される成果物を互いに対応付ける情報である。例えば、番号1の行から、各段階の成果物がシステム構成図300、プログラム仕様図310及びプログラム105であることがわかる。また、番号2の行から、システム構成図300の制御コマンドがプログラム仕様図310の制御コマンドに対応し、また、プログラム105の変数cmdに対応することがわかる。
脅威情報108は、例えば、図6に示す情報である。脅威情報108は、開発対象のソフトウェアが搭載される機器、その機器が利用されるシステムに対するセキュリティの脅威が定義された情報である。図6の脅威情報108は、図3のシステム構成図300に基づくリスク分析によって抽出されるセキュリティ脅威の一覧を示している。
脅威情報108は、脅威と情報資産と脆弱性の項目で構成される。
「脅威」は、プログラム105の実行時に発生し得る脅威である。脅威は、プログラム仕様書(本例では、システム構成図300)に基づくリスク分析により特定された脅威である。ユーザがプログラム仕様書を参照したリスク分析を行って脅威の特定を行ってもよいし、特定の分析ツールにプログラム仕様書に基づくリスク分析を行わせて脅威の特定を行わせてもよい。
「情報資産」は、プログラム仕様書に示される要素のうち脅威の発生に関与する要素である。脅威情報108に示される情報資産を脅威関与要素にともいう。
「脆弱性」は、脅威を発生させる脆弱性であり、プログラム105に存在する脆弱性である。図7の例では、脆弱性は、CWE(Common Weakness Enumeration)と呼ばれる脆弱性の識別子により表現されている。図7の例からは、「HMI-機器コントローラ間の制御コマンドの改ざんによるフィールド機器の停止」という脅威があり、当該脅威の発生に関与する情報資産が「制御コマンド」であること、また、当該脅威を発生させる脆弱性が「CWE-20」であることがわかる。なお、脆弱性は、CWE以外の形式で表現することも可能である。
脆弱性DB110では、図7に示される脆弱性対策処理情報115が格納されている。
脆弱性対策処理情報115は、脆弱性と対策処理の項目で構成される。
「脆弱性」は、脅威情報108に示される脆弱性である。
「対策処理」は、脅威への対策を実現する処理である。具体的には、「対策処理」には、脅威を排除するための処理が示される。
図7の脆弱性対策処理情報115では、例えば、CWE-20の脆弱性に対しては、「入力検証」により脅威が排除される。
対策関数情報107は、例えば、図8に示す情報である。対策関数情報107は、対策処理とライブラリと対策関数の項目で構成される。
「対策処理」は、脆弱性対策処理情報115に示される対策処理である。
「ライブラリ」は、プログラム105が使用するライブラリを示す。
「対策関数」は、プログラム105が使用するライブラリにおいて対策処理を実現する関数を示す。具体的には、脅威を排除するための関数である。
図2に戻り、脅威情報取得部201は、脅威情報108を取得する。
そして、脅威情報取得部201は、脅威情報108から脆弱性識別子211及び脅威関与要素情報212を生成する。また、脅威情報取得部201は、脆弱性識別子211を脆弱性特定情報選択部202に出力し、脅威関与要素情報212を脅威関与変数抽出部203に出力する。
具体的には、脅威情報取得部201は、脅威情報108に示される脆弱性(例えば、「CWE-20」)を抽出する。また、脅威情報取得部201は、抽出した脆弱性を通知する脆弱性識別子211を生成し、脆弱性識別子211を脆弱性特定情報選択部202に出力する。また、脅威情報取得部201は、脅威情報108に示される情報資産(例えば、「制御コマンド」)を通知する脅威関与要素情報212を生成する。そして、脅威情報取得部201は、脅威関与要素情報212を脅威関与変数抽出部203に出力する。
脅威情報取得部201で行われる処理は、脅威情報取得処理に相当する。
脆弱性特定情報選択部202は、脅威情報取得部201から脆弱性識別子211を取得する。また、脆弱性特定情報選択部202は、プログラム105及び対策関数情報107を取得する。そして、脆弱性特定情報選択部202は、脆弱性識別子211に基づき脆弱性DB110内の脆弱性対策処理情報115を検索する。この結果、脆弱性特定情報選択部202は、脆弱性識別子211で通知された脆弱性に対する対策処理を特定する。また、脆弱性特定情報選択部202は、プログラム105を解析してプログラム105で用いられるライブラリを特定する。そして、脆弱性特定情報選択部202は、特定した対策処理とライブラリとに対応する対策関数を対策関数情報107から抽出する。そして、脆弱性特定情報選択部202は、対策関数情報107から抽出した対策関数を通知する関数特定情報213を生成し、生成した関数特定情報213を脆弱性判定部204に出力する。
脅威関与変数抽出部203は、ソフトウェアトレース情報106と脅威関与要素情報212を取得する。
そして、脅威関与変数抽出部203は、脅威関与要素情報212に示される情報資産(脅威関与要素)とソフトウェアトレース情報106において対応付けられているプログラム105の要素を抽出する。より具体的には、脅威関与変数抽出部203は、脅威関与要素情報212に示される情報資産(脅威関与要素)とソフトウェアトレース情報106において対応付けられているプログラム105の変数を抽出する。なお、脅威関与変数抽出部203が抽出する変数を脅威関与変数という。
脅威関与変数抽出部203は、抽出した脅威関与変数を通知する脅威関与変数情報214を生成する。そして、脅威関与変数抽出部203は、生成した脅威関与変数情報214を脆弱性判定部204に出力する。
脆弱性判定部204は、プログラム105と関数特定情報213と脅威関与変数情報214を取得する。
そして、脆弱性判定部204は、プログラム105内の適切な箇所に脅威関与変数情報214に示される対策関数が記述されているか否かを判定する。プログラム105内の適切な箇所に対策関数が記述されている場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていると判定する。一方で、プログラム105内の適切な箇所に対策関数が記述されていない場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていないと判定する。
より具体的には、脆弱性判定部204は、脅威関与変数情報214に示す脅威関与変数と対応付けられた入力処理関数と脅威関与変数と対応付けられた出力処理関数とを抽出する。そして、脆弱性判定部204は、抽出した入力処理関数と出力処理関数との間に対策関数が記述されているか否かを判定する。入力処理関数と出力処理関数との間に対策関数が記述されている場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていると判定する。一方で、入力処理関数と出力処理関数との間に対策関数が記述されていない場合は、脆弱性判定部204は、プログラム105において脅威への対策が講じられていないと判定する。
そして、脆弱性判定部204は、判定結果215を脆弱性情報生成部205に出力する。
脆弱性情報生成部205は、判定結果215を取得する。
そして、脆弱性情報生成部205は、判定結果215から脆弱性情報109を生成し、脆弱性情報109を出力する。
前述したように、脆弱性情報生成部205は、例えば脆弱性情報109を補助記憶装置103に出力する。また、脆弱性情報生成部205は、ネットワークインターフェース113を介して脆弱性情報109を外部に出力してもよいし、表示インターフェース112を介して脆弱性情報109を表示装置に出力してもよい。
***動作の説明***
次に、実施の形態1に係るセキュリティ設計装置100の動作例を説明する。
図10は、実施の形態1に係るセキュリティ設計装置100の動作例を表すフローチャートである。
先ず、ステップS701で、脅威情報取得部201が脅威情報108を取得する。
次に、ステップS702で、脅威情報取得部201が脅威情報108から脆弱性識別子211及び脅威関与要素情報212を生成する。
次に、ステップS703で、脆弱性特定情報選択部202がプログラム105と脆弱性対策処理情報115とを参照して対策関数情報107から対策関数を抽出する。
次に、ステップS704で、脅威関与変数抽出部203が脅威関与要素情報212とソフトウェアトレース情報106を参照して脅威関与変数を抽出する。
次に、ステップS705で、脆弱性判定部204が脅威関与変数情報214を参照してプログラム105から入力処理関数と出力処理関数を抽出する。
次に、ステップS706で、脆弱性判定部204が入力処理関数及び出力処理関数を抽出し、抽出した入力処理関数及び出力処理関数と関数特定情報213に示される対策関数とに基づきプログラム105において対策処理が講じられているか否かを判定する。
最後に、ステップS707で、脆弱性情報生成部205が脆弱性判定部204の判定結果215を整形し、脆弱性情報109を出力する。
次に、図10の各ステップの詳細を説明する。
(ステップS701)
脅威情報取得部201は、図6に示す脅威情報108を取得する。
(ステップS702)
脅威情報取得部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を出力する。
(ステップS703)
脆弱性特定情報選択部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に出力する。
(ステップS704)
脅威関与変数抽出部203は、脅威関与要素情報212を脅威情報取得部201から取得する。また、脅威関与変数抽出部203は、ソフトウェアトレース情報106を取得する。
そして、脅威関与変数抽出部203は、脅威関与要素情報212に示される情報資産(脅威関与要素)に対応する変数(脅威関与変数)を抽出する。
ここで、脅威関与変数抽出部203は、情報資産「制御コマンド」が示される脅威関与要素情報212を取得したものとする。脅威関与変数抽出部203は、図5のソフトウェアトレース情報106を参照して、「制御コマンド」に対応する「実装」の欄の値である「変数cmd」を脅威関与変数として抽出する。
脅威関与変数抽出部203は、抽出した脅威関与変数である「変数cmd」が示される脅威関与変数情報214を脆弱性判定部204に出力する。
(ステップS705)
脆弱性判定部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が使用されるまでのデータフローを表している。
(ステップS706)
脆弱性判定部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を出力しなくてもよい。
(ステップS707)
脆弱性情報生成部205は、脆弱性判定部204から判定結果215を取得する。そして、脆弱性情報生成部205は、判定結果215を整形し、整形後の判定結果215を脆弱性情報109として出力する。
図11は、脆弱性情報109の例を示す。
図11において、「脅威」、「情報資産」及び「脆弱性」の値は、脅威情報108の値と同じである。「プログラム」の項目には、プログラム105の名称が記載される。「開始行:終了行」には、「関数」の項目に示される関数が記述されているプログラム105の行が記載される。「変数」には脅威関与変数が記載される。「関数」には脆弱性のある関数が記載される。
なお、以上では、説明の簡明のために、脅威情報108の番号1の行に示される脅威に対する対策の有無を検証する例を説明した。セキュリティ設計装置100は、脅威情報108の各行に対して図7のステップS702以降の処理を行う。
また、複数のプログラム105を検証対象とする場合は、セキュリティ設計装置100は、各プログラム105に対して図7のステップS701以降の処理を行う。
対策関数が複数存在する場合、脅威関与変数が複数存在する場合も、セキュリティ設計装置100は適宜該当する処理を繰り返し行う。
***実施の形態の効果の説明***
以上のように、本実施の形態では、ソフトウェア開発の上流段階で行われるリスク分析で特定された脅威への対策が、下流段階で生成されたプログラムにおいて講じられているか否かを判定する。
このため、本実施の形態によれば、プログラムの解析のみでは抽出できない脅威に対する対策の有無を判定することできる。そして、本実施の形態によれば、判定結果に基づき、プログラムの解析のみでは抽出できない脅威に対する対策を講じることができる。
また、本実施の形態で用いられるソフトウェアトレース情報106はソフトウェア開発の一環で生成されるものであるため、脆弱性分析のために新たなデータを生成する必要はない。したがって、脆弱性分析を行うユーザの手間を増やさずに、より厳密な脆弱性分析を実現することができる。
また、本実施の形態では、実装段階のプログラムから脆弱性分析に必要な変数や関数の情報を取得することができる。このため、本実施の形態によれば、機密性や完全性等の具体的な脆弱性を特定することができる。
従来技術では、セキュリティの3要素と呼ばれる機密性、完全性、可用性に関する脆弱性を特定することができなかった。例えば、データの完全性に関する脆弱性を特定するためには、まず対象となるデータが改ざんが許容されないデータであることを判定し、その上で改ざんを防ぐための対策が講じられているか否かを評価する必要がある。しかし、プログラム(ソースコード)にはデータの完全性に関する情報がないため、完全性に関する脆弱性を特定することができない。
本実施の形態では、図6に示すように、プログラム仕様書に基づくリスク分析により完全性に関する脅威が脅威情報108に記述されている場合は、セキュリティ設計装置100は、プログラム105において完全性に関する脅威への対策が講じられているか否かを評価することができる。更に、プログラム仕様書に基づくリスク分析により機密性に関する脅威(例えば、漏洩)が脅威情報108に記述されている場合は、セキュリティ設計装置100は、プログラム105において機密性に関する脅威への対策が講じられているか否かを評価することができる。また、リスク分析により可用性に関する脅威(例えば、DoS(Denial of Service)攻撃)が脅威情報108に記述されている場合は、セキュリティ設計装置100は、プログラム105において可用性に関する脅威への対策が講じられているか否かを評価することができる。
実施の形態2.
以上の実施の形態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は同一である。
セキュリティ設計装置100のハードウェア構成例は図1に示す通りである。
なお、図示は省略するが、本実施の形態では、プロセッサ101のブロックに型通知部206のブロックが追加される。また、本実施の形態では、主記憶装置102のブロックに型情報プログラム216のブロックが追加される。
型通知部206は、入力処理関数の戻り値の型と出力処理関数の引数の型と対策関数の引数及び戻り値の型を脆弱性判定部204に通知する。具体的には、型通知部206は、入力処理関数の戻り値の型と出力処理関数の引数の型と対策関数の引数及び戻り値の型を示す型情報を型情報プログラム216に含ませる。つまり、型情報プログラム216は、型情報が追加されたプログラム105である。
本実施の形態では、脆弱性判定部204は、型情報プログラム216の型情報で通知される入力処理関数の戻り値の型と出力処理関数の引数の型と対策関数の引数及び戻り値の型に基づき、対策関数が入力処理関数と出力処理関数との間に記述されているか否かを判定する。
図13は、型通知部206によりプログラム105に追加される型情報217の例を示す。前述したように、型情報217が追加されたプログラム105が型情報プログラム216に相当する。図13の詳細は後述する。
また、本実施の形態では、図14に示すように、対策関数情報107に対策関数の引数及び戻り値の型の情報が含まれている。具体的には、対策関数「verifyInput」の引数の型として「int<insecure>」が記載されており、戻り値の型として「int<secure>」が記載されている。
***動作の説明***
図15は、本実施の形態に係るセキュリティ設計装置100の動作例を示す。
なお、実施の形態1と同様に、本実施の形態では、図4に示すプログラム105を検証対象とする。また、実施の形態1と同様に、脅威関与変数情報214には脅威関与変数として「cmd」が記載されているものとする。
ステップS701及びステップS702は、実施の形態1に示したものと同じであるため、説明を省略する。
ステップS801において、脆弱性特定情報選択部202は実施の形態1のステップS703と同様の手順にて、対策関数を抽出し、関数特定情報213を出力する。但し、ステップS801では、脆弱性特定情報選択部202は関数特定情報213を型通知部206に出力する。また、関数特定情報213には、図14に示される「引数の型:int<insecure>」と「戻り値の型:int<secure>」が記載されている。
ステップS704は実施の形態1に示したものと同じであるため、説明を省略する。
ステップS802では、型通知部206がプログラム105を解析して入力処理関数と出力処理関数とを抽出する。入力処理関数と出力処理関数の抽出手順は実施の形態1のステップS705の手順と同じである。
つまり、型通知部206は、脅威関与変数情報214に示される脅威関与変数と対応付けられた入力処理関数と出力処理関数を抽出する。
型通知部206が脅威関与変数として「変数cmd」が示される脅威関与変数情報214を取得したとする。この場合に、型通知部206は、図4のプログラム105において「変数cmd」と対応付けられている入力処理関数と出力処理関数を抽出する。具体的には、型通知部206は、図4のプログラム105から、符号402で示される関数「receiveFromHMI」と符号404で示される関数「sendToDevice」(符号403の「cmd」と対応付けられている)を取得する。
ステップS803では、型通知部206は、ステップS802で抽出した入力処理関数の戻り値の型と出力処理関数の引数の型を識別する。また、型通知部206は、識別した入力処理関数の戻り値の型と出力処理関数の引数の型と、関数特定情報213に示される対策関数の引数及び戻り値の型を通知する型情報217を生成する。更に、型通知部206は、生成した型情報217をプログラム105に追加して型情報プログラム216を生成する。
図13は、ステップS802において入力処理関数として「receiveFromHMI」が抽出され、出力処理関数として「sendToDevice」が抽出された場合の型情報217を示す。
型情報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>」であることが示される。
入力処理関数「receiveFromHMI」はネットワークから入力されたデータを返す関数である。このため、入力処理関数「receiveFromHMI」の戻り値は、テイント解析では汚染されたデータ(テイント)と見なされる。従って、型通知部206は、入力処理関数「receiveFromHMI」の戻り値の型を「int<insecure>」と識別する。
出力処理関数「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」の引数の型及び戻り値の型を識別するようにしてもよい。
次に、ステップS804において、脆弱性判定部204は型情報プログラム216を取得し、型情報プログラム216の型情報217を用いて型検査を行い、プログラム105に対策処理が講じられているか否かを判定する。
型検査でエラーが発生した場合は、脆弱性判定部204は、エラー発生箇所を脆弱性として特定する一方、型検査でエラーが発生しなかった場合はプログラム105に脆弱性がないと判定する。
図16は、図4に示すプログラム105の疑似コード1002を示す。図17は、図9に示すプログラム901の疑似コード1005を示す。
疑似コード1002及び疑似コード1005を用いて、脆弱性判定部204による型検査の動作を説明する。
疑似コード1002の場合、コード記述1003で変数「cmd」に、関数「receiveFromHMI」の戻り値として「int<insecure>」型の値が代入される。
次に、コード記述1004で変数「cmd」が、関数「sendToDevice」の引数として渡される。
しかし、関数「sendToDevice」は引数として「int<secure>」型の値を受け取ることになっている。このため、変数cmdの型と関数「sendToDevice」の引数の型とが一致せず、型のエラーが発生する。
以上により、脆弱性判定部204は、疑似コード1002のコード記述1004に脆弱性があると判定する。
一方、疑似コード1005の場合、コード記述1006で変数「cmd」に、関数「receiveFromHMI」の戻り値として「int<insecure>」型の値が代入される。
次に、コード記述1007で変数「cmd」が、引数として関数「verifyInput」に渡される。
関数「verifyInput」は引数として「int<insecure>」型の値を受け取ることになっている。このため、変数「cmd」の型と関数「verifyInput」の引数の型とが一致しており、コード記述1007では型のエラーは発生しない。
そして、関数「verifyInput」の戻り値として「int<secure>」型の値が変数「cmd」に代入される。
次に、コード記述1008で変数「cmd」が、引数として関数「sendToDevice」に渡される。関数「sendToDevice」は引数として「int<secure>」型の値を受け取ることになっている。このため、変数「cmd」の型と関数「sendToDevice」の引数の型とが一致しており、コード記述1008では型のエラーは発生しない。
以上により、脆弱性判定部204は、疑似コード1005には脆弱性がないと判定する。
このように、本実施の形態では、脆弱性判定部204は、入力処理関数の戻り値の型と出力処理関数の引数の型と対策関数の引数及び戻り値の型との整合性を解析して、対策関数がプログラム内の適切な位置、すなわち、入力処理関数と出力処理関数との間に記述されているか否かを判定する。
***実施の形態の効果の説明***
以上のように、本実施の形態では、型検査により対策関数がプログラムに記述されているか否かを判定する。このため、本実施の形態によれば、少ない計算負荷で脅威への対策の有無を判定することができる。
また、本実施の形態では、型情報がプログラムに付加される。このため、型検査を効率的に行うことができる。
実施の形態3.
以上の実施の形態1及び実施の形態2は、特定の開発プロセスを想定したものではなかった。
本実施の形態では、モデルベース開発あるいはモデル駆動開発等のモデルを利用したソフトウェア開発で得られたプログラムにおいて脅威への対策が講じられているか否かを判定する例を説明する。
本実施の形態では、主に実施の形態1との差異を説明する。
なお、以下で説明していない事項は、実施の形態1と同様である。
以下では、モデルを利用したソフトウェア開発プロセスを総称してモデルベース開発と呼ぶこととする。
モデルベース開発では、自然言語で仕様書を記述する代わりに、コンピュータによる処理に適した形式で仕様を生成する。これをモデル化と呼び、生成される仕様をモデルと呼ぶ。モデルは厳密な形式に従って生成されるため、解釈の曖昧さを排除することができる。また、モデルをシミュレーションとして動作させることが可能である。また、モデルからソースコードを自動生成することが可能な場合もある。更に、このモデルとソースコードとの関係に見られるように、各データ同士が対応付けられており、実施の形態1で説明したソフトウェアトレース情報の入手が容易である。
図18は、モデルベース開発の簡単な流れを表す。
先ず、モデル化1101が行われ、モデル1102が生成される。その後、検証1103により、モデル1102を利用して要件の検証又は設計の改善が進められる。
検証1103では、上述の通りシミュレーションを利用して、例えばプログラム1105の動作をあらかじめ検証することもできる。また、形式手法と呼ばれる手法により、モデル1102が要件を満たすことを数学的に証明することもできる。モデル1102が完成した後、コード生成1104によってプログラム1105(ソースコード)が生成される。また、モデル1102とプログラム1105との対応関係を表す情報が、トレース情報1106として存在する。
図19は、モデルベース開発に実施の形態1又は実施の形態2に係るセキュリティ設計装置100を適用した流れを示している。
モデルベース開発における検証1203の一環としてリスク分析が行われ、脅威一覧1208が出力される。また、脆弱性判定1207によってプログラム1205(ソースコード)に対する脆弱性の有無が判定される。
通常、脆弱性判定1207はプログラム1205のみを用いて行われるが、本実施の形態ではトレース情報1206と脅威一覧1208も利用する。トレース情報1206は、実施の形態1のソフトウェアトレース情報106に対応する。脅威一覧1208は、実施の形態1の脅威情報108に対応する。
なお、図19において、モデル化1201はモデル化1101と同じである。また、モデル1202もモデル1102と同じである。更に、コード生成1204はコード生成1104と同じである。
以上のように、モデルベース開発の枠組を利用すればトレース情報の入手がより容易になり、脆弱性分析を行うユーザの手間を増やさずに、分析を詳細化できる効果がより高くなる。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、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)等である。
また、補助記憶装置103には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がプロセッサ101により実行される。
プロセッサ101はOSの少なくとも一部を実行しながら、検証プログラム104を実行する。
プロセッサ101がOSを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204、脆弱性情報生成部205及び型通知部206の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、主記憶装置102、補助記憶装置103、プロセッサ101内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、検証プログラム104は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の可搬記録媒体に格納されていてもよい。そして、検証プログラム104が格納された可搬記録媒体を商業的に流通させてもよい。
また、脅威情報取得部201、脆弱性特定情報選択部202、脅威関与変数抽出部203、脆弱性判定部204、脆弱性情報生成部205及び型通知部206の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、セキュリティ設計装置100は、処理回路により実現されてもよい。処理回路は、例えば、ロジックIC(Integrated Circuit)、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)である。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
100 セキュリティ設計装置、101 プロセッサ、102 主記憶装置、103 補助記憶装置、104 検証プログラム、105 プログラム、106 ソフトウェアトレース情報、107 対策関数情報、108 脅威情報、109 脆弱性情報、110 脆弱性DB、111 入力インターフェース、112 表示インターフェース、113 ネットワークインターフェース、114 データバス、115 脆弱性対策処理情報、201 脅威情報取得部、202 脆弱性特定情報選択部、203 脅威関与変数抽出部、204 脆弱性判定部、205 脆弱性情報生成部、206 型通知部、211 脆弱性識別子、212 脅威関与要素情報、213 関数特定情報、214 脅威関与変数情報、215 判定結果、216 型情報プログラム、217 型情報、250 判定部、300 システム構成図、301 HMI、302 機器コントローラ、303 通信S/W、304 フィールド機器、305 伝送路、306 伝送路、308 制御コマンド、309 制御信号、310 プログラム仕様図、311 状態遷移、312 状態、313 状態、314 状態遷移、315 状態遷移、901 プログラム、1002 疑似コード、1003 コード記述、1004 コード記述、1005 疑似コード、1006 コード記述、1007 コード記述、1008 コード記述、1101 モデル化、1102 モデル、1103 検証、1104 コード生成、1105 プログラム、1106 トレース情報、1201 モデル化、1202 モデル、1203 検証、1204 コード生成、1205 プログラム、1206 トレース情報、1207 脆弱性判定、1208 脅威一覧。

Claims (8)

  1. 変数が記述されているプログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得する脅威情報取得部と、
    相互に関連する前記プログラムの変数と前記プログラム仕様書の要素とが対応付けられて示されるソフトウェアトレース情報を参照し、前記ソフトウェアトレース情報において前記脅威関与要素と対応付けられている変数を前記プログラムに記述されている変数の中から脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する判定部とを有する情報処理装置。
  2. 前記判定部は、
    前記脅威への対策を実現する処理である対策処理を実現する関数である対策関数が、前記プログラムにおいて、前記脅威関与変数と対応付けられた入力処理関数と前記脅威関与変数と対応付けられた出力処理関数との間に記述されているか否かを解析して、前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する請求項1に記載の情報処理装置。
  3. 前記判定部は、
    記対策関数が、前記プログラムにおいて、前記入力処理関数と前記出力処理関数との間に記述されている場合に、前記脅威への対策が前記プログラムにおいて講じられていると判定する請求項2に記載の情報処理装置。
  4. 前記判定部は、
    前記入力処理関数の戻り値の型と前記対策関数の引数の型とが一致しているか否か、及び、前記対策関数の戻り値の型と前記出力処理関数の引数の型とが一致しているか否かを判定して、前記対策関数が前記入力処理関数と前記出力処理関数との間に記述されているか否かを判定する請求項に記載の情報処理装置。
  5. 前記情報処理装置は、更に、
    前記入力処理関数の戻り値の型と前記出力処理関数の引数の型と前記対策関数の引数及び戻り値の型を前記判定部に通知する型通知部を有し、
    前記判定部は、
    前記型通知部から通知された前記入力処理関数の戻り値の型と前記対策関数の引数の型とが一致しているか否か、及び、前記対策関数の戻り値の型と前記出力処理関数の引数の型とが一致しているか否かを判定して、前記対策関数が前記入力処理関数と前記出力処理関数との間に記述されているか否かを判定する請求項に記載の情報処理装置。
  6. 前記判定部は、
    前記入力処理関数の戻り値の型と前記対策関数の引数の型とが一致し、前記対策関数の戻り値の型と前記出力処理関数の引数の型とが一致している場合に、前記対策関数が前記入力処理関数と前記出力処理関数との間に記述されていると判定する請求項4又は5に記載の情報処理装置。
  7. コンピュータが、変数が記述されているプログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得し、
    前記コンピュータが、相互に関連する前記プログラムの変数と前記プログラム仕様書の要素とが対応付けられて示されるソフトウェアトレース情報を参照し、前記ソフトウェアトレース情報において前記脅威関与要素と対応付けられている変数を前記プログラムに記述されている変数の中から脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する情報処理方法。
  8. 変数が記述されているプログラムの仕様が示されるプログラム仕様書に基づくリスク分析により特定された前記プログラムの実行時に発生し得る脅威と、前記プログラム仕様書に示される要素のうち前記脅威の発生に関与する要素である脅威関与要素とが示される脅威情報を取得する脅威情報取得処理と、
    相互に関連する前記プログラムの変数と前記プログラム仕様書の要素とが対応付けられて示されるソフトウェアトレース情報を参照し、前記ソフトウェアトレース情報において前記脅威関与要素と対応付けられている変数を前記プログラムに記述されている変数の中から脅威関与変数として抽出し、抽出した前記脅威関与変数に基づき前記プログラムを解析して前記脅威への対策が前記プログラムにおいて講じられているか否かを判定する判定処理とをコンピュータに実行させる情報処理プログラム。
JP2021528741A 2019-06-26 2019-06-26 情報処理装置、情報処理方法及び情報処理プログラム Active JP7008879B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112926058B (zh) * 2021-03-25 2024-07-16 支付宝(杭州)信息技术有限公司 代码处理方法、污点分析方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社日立ソリューションズ ソースコード脆弱性検査装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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