JP2009104342A - データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム - Google Patents

データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム Download PDF

Info

Publication number
JP2009104342A
JP2009104342A JP2007274365A JP2007274365A JP2009104342A JP 2009104342 A JP2009104342 A JP 2009104342A JP 2007274365 A JP2007274365 A JP 2007274365A JP 2007274365 A JP2007274365 A JP 2007274365A JP 2009104342 A JP2009104342 A JP 2009104342A
Authority
JP
Japan
Prior art keywords
analysis
data flow
procedure
analysis rule
rule
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.)
Granted
Application number
JP2007274365A
Other languages
English (en)
Other versions
JP5176478B2 (ja
Inventor
Yuji Yamaoka
裕司 山岡
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007274365A priority Critical patent/JP5176478B2/ja
Priority to US12/255,098 priority patent/US8296254B2/en
Publication of JP2009104342A publication Critical patent/JP2009104342A/ja
Application granted granted Critical
Publication of JP5176478B2 publication Critical patent/JP5176478B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

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

Abstract

【課題】解析規則を作成する手間を軽減することを課題とする。
【解決手段】データフロー解析装置は、解析対象プログラムと解析規則から検出箇所を抽出する。そして、データフロー解析装置は、抽出された検出箇所に基づいて、追加規則候補を生成する。具体的には、データフロー解析装置は、検出箇所の手続きの制御フローグラフを作成し、検出箇所の位置から制御フローグラフを逆順に到達可能なノードのうち、手続き呼び出しを抽出し、重複しているもの、すでに解析規則に安全化手続き定義として存在するもの、返値がないものを全て除外し、残った手続き群を追加規則候補として生成する。その後、データフロー解析装置は、生成された追加規則候補を表示する。
【選択図】 図1

Description

この発明は、データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析装置、データフロー解析方法およびデータフロー解析プログラムに関する。
従来より、解析の対象となる解析対象プログラムからプログラム内の誤った処理を防止するために、バグ(例えば、セキュリティバグ)を発見する必要がある(特許文献1参照)。このようなバグを発見する方法のうち、主にインジェクション系のセキュリティバグの発見する方法として、セキュリティバグのデータフロー解析が利用されていることが知られている。
このようなインジェクション系のセキュリティバグは、要注意手続き引数に入力値が渡される可能性があるプログラムに潜在する。また、ここで要注意手続き引数とは、出力内容や出力先指定をする手続きの引数のことである。
このインジェクション系のセキュリティバグでは、図14に例示すように、要注意手続き引数であるデータ「s」に、入力値「(input())」が渡されるため問題となる。つまり、入力値として「|」や「;」などのメタ文字が含まれると、任意のコマンド指定ができてしまう可能性があるからである。
このようなバグの発見のために利用されるデータフロー解析装置は、データの性質などに関する定義をした解析規則に従ってデータフロー解析を行う。セキュリティバグのデータフロー解析装置では、引数が安全でなければ問題有りとして報告する要注意手続き引数を定義した「要注意手続き定義」と、手続きの返値を安全としてみなす安全化手続き(つまり、返値を安全とみなす手続き)を定義した「安全化手続き定義」とが解析規則として用いられる。これらの解析規則は、ユーザが手続きを入力して作成されている。例えば、Java(登録商標)言語では、完全限定型名、手続き名、引数群が入力されて解析規則が作成される。
つまり、データフロー解析装置は、対象プログラムとこれらの解析規則を入力とし、報告すべき検出箇所を出力する。例えば、「exec(...)」を要注意手続きにすると、図15に例示するように、要注意手続き引数に安全でないデータ「input()」が含まれているからである。また、「exec(...)」を要注意手続きに、さらに「check(...)」を安全化手続きとして追加して解析させると、図16に示すように、要注意手続き引数は、安全であるとして、何も報告されなくなる。
特開平6−332750号公報
ところで、上記した従来の技術では、解析規則を作成するために、ユーザが手続きを紛れなく入力する必要があるので、解析規則の作成は入力の手間がかかるという課題があった。また、対象プログラム毎に「安全」の意味が異なり、対象プログラム毎に、適した解析規則を作成する必要があるので、解析規則の作成は入力の手間がかかるという課題があった。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、解析規則を作成する手間を軽減することを目的とする。
上述した課題を解決し、目的を達成するため、この装置は、データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析装置であって、前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成手段と、前記解析規則候補生成手段によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力手段と、を備えることを要件とする。
また、この方法は、データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析方法であって、前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成工程と、前記解析規則候補生成工程によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力工程と、を含んだことを要件とする。
また、このプログラムは、データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析方法をコンピュータに実行させるデータフロー解析プログラムであって、前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成手順と、前記解析規則候補生成手順によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力手順と、をコンピュータに実行させることを要件とする。
開示の装置は、解析規則の追加案を自動提案するので、解析規則の作成の手間を軽減する効果を奏する。
以下に添付図面を参照して、この発明に係るデータフロー解析装置、データフロー解析方法およびデータフロー解析プログラムの実施例を詳細に説明する。
以下の実施例では、実施例1に係るデータフロー解析装置の概要および特徴、データフロー解析装置の構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[実施例1に係るデータフロー解析装置の概要および特徴]
まず最初に、図1を用いて、実施例1に係るデータフロー解析装置の概要および特徴を説明する。図1は、実施例1に係るデータフロー解析装置の概要および特徴を説明するための図である。なお、以下では、主に安全化手続きの追加規則候補を生成する場合を説明する。
実施例1のデータフロー解析装置10では、データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力することを概要とする。そして、このデータフロー解析装置10では、解析規則の作成の手間を軽減する点に主たる特徴がある。なお、以下では、「suppression」は、無視手続き定義候補であり、「output」は、要注意手続き定義候補であり、「constant」は、安全化手続き定義候補を示すものとする(後に、詳述する)。
この主たる特徴について具体的に説明すると、データフロー解析装置10は、解析対象プログラムと解析規則から検出箇所を抽出する(図1の(1)参照)。図1の例を用いて説明すると、データフロー解析装置10は、解析規則を用いて、安全でないデータが含まれる手続きである検出箇所「"com.example.C2#p(java.lang.String,int)","14"」を解析対象プログラムから抽出する。
そして、データフロー解析装置10は、抽出された検出箇所に基づいて、追加規則候補を生成する(図1の(2)参照)。具体的には、データフロー解析装置10は、検出箇所の手続きの制御フローグラフを作成し、検出箇所の位置から制御フローグラフを逆順に到達可能なノードのうち、手続き呼び出しを全て抽出する。そして、データフロー解析装置10は、抽出された手続き群のなかから、手続き呼び出しを全て抽出する。続いて、データフロー解析装置10は、抽出された手続き群のうち、重複しているもの、すでに解析規則に安全化手続き定義として存在するもの、返値がないものを全て除外し、残った手続き群を追加規則候補として生成する。
その後、データフロー解析装置10は、生成された追加規則候補を表示する(図1の(3)参照)。具体的には、データフロー解析装置10は、図1に例示するように、「constant」の枠中のリストのいくつかを選択し、ボタン「選択中の手続きをconstantに追加」を押すと、選択した手続きを安全化手続きとし、安全化手続き定義が新解析規則として追加される。
このように、データフロー解析装置10は、解析規則の追加案を自動提案する結果、上記した主たる特徴のごとく、解析規則の作成の手間を軽減することが可能である。
[データフロー解析装置の構成]
次に、図2を用いて、図1に示したデータフロー解析装置10の構成を説明する。図2は、実施例1に係るデータフロー解析装置10の構成を示すブロック図である。同図に示すように、このデータフロー解析装置10は、入力部11、出力部12、制御部13、記憶部14を備える。以下にこれらの各部の処理を説明する。
入力部11は、データフロー解析を開始する指示、追加規則候補を選択して新解析規則として追加する指示などを入力するものであり、キーボードやマウスなどを備えて構成される。また、出力部12は、検出箇所や追加規則候補を表示するものであり、モニタ(若しくはディスプレイ、タッチパネル)やスピーカを備えて構成される。例えば、出力部12は、図7および図10に示すように、検出箇所や追加規則候補を出力する(後に詳述)。
記憶部14は、制御部13による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、解析対象記憶部14aおよび解析規則記憶部14bを備える。
解析対象記憶部14aは、解析の対象となる解析対象プログラムを記憶する。具体的な例を挙げて説明すると、解析対象記憶部14aは、図3に例示するように、手続き「com.example.C2#p(java.lang.String,int)」のJavaバイトコードを記憶している。
また、図3では、「Code」で示される領域の各行の始めに記された整数値は、バイトコードに対応し、「Exception table」で示される領域の各行は、例外時の遷移の定義データに対応している。例えば、「4 80 83 Class java/lang/InterruptedException」は、「位置4以上80未満で、型java.lang.InterruptedExceptionおよびそのサブタイプの例外が起こった場合、制御を位置83に移せと読む。
また、解析対象記憶部14aは、図4に例示するように解析対処プログラムのソースコードを記憶する。図4に例示する解析対処プログラムのソースコードは、図3に例示するバイトコードに対応するものである。
解析規則記憶部14bは、データの性質を定義した解析規則を記憶する。具体的には、解析規則記憶部14bは、解析規則として、無視手続き(環境によらず安全とみなす手続き)を定義した規則でその手続きでの問題は報告しない無視手続き定義「suppression」と、要注意手続き引数を定義した規則で引数が安全でなければ問題有りとして報告する要注意手続き定義「output」と、安全化手続き(返値を安全とみなす手続き)を定義した規則でその手続きの返値を安全とみなす安全化手続き定義「constant」を記憶する。
具体的な例を挙げて説明すると、図5に例示するように、解析規則記憶部14bに記憶される解析規則は、書式がCSV方式で、解析規則の各列データは、規則の種類を示す「規則種類」、手続き名(完全限定名や引数群を含む)を示す「手続き指定」、引数の序数群である「引数指定」を示している。例えば、「"output","java.lang.Runtime#exec(java.lang.String)","1"」は、Javaの標準ライブラリjava.lang.RuntimeのOSコマンドを発行する手続きexec(java.lang.String)の第1引数を要注意手続き引数として定義したものである。なお、二重引用符「"」はCSV形式で列データの区切りを明確化するものである。
制御部13は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、プログラム解析部13a、追加規則候補生成部13b、追加規則提案部13c、追加規則設定部13dを備える。
プログラム解析部13aは、解析対象記憶部14aに記憶された解析対象プログラムと、解析規則記憶部14bに記憶された解析規則とを用いてデータフロー解析を行い、問題がある検出箇所を抽出する。具体的には、プログラム解析部13aは、図6に例示すように、検出箇所として、「"com.example.C2#p(java.lang.String,int)","14"」を抽出し、追加規則候補生成部13bに通知する。この検出箇所の書式もCSV形式で、各列データは、検出箇所に対応する手続きの名前である「手続き名」と、検出箇所に対応する手続き内の場所でありJavaクラスファイルではバイトコード位置である「手続き内箇所」とを示す。
その後、プログラム解析部13aは、図7に例示するように、検出箇所を表示する。図7の例では、検出箇所が二つ表示されており、いずれかの検出箇所をユーザに選択させ、選択された検出箇所に基づいて、後に説明する追加規則候補生成部13bが解析規則の候補を生成する。
また、プログラム解析部13aは、Javaのような言語のデータフロー解析を行う方法として、公知のデータフロー解析方法を用いる(例えば、「横森励士「オブジェクト指向プログラムにおけるセキュリティ解析アルゴリズムの提案と実現」(修士学位論文)、大阪大学、2001年」参照)。
上記のような公知のデータフロー解析方法の入出力要件を満たすようにするために、Javaクラスファイルを解析して、要注意手続きを「出力に対応するメソッド」にし、安全化手続き以外の全ての手続きを「入力に対応するメソッド」にする(ただし、クラスファイルで文字列の連結に使われる手続き(java.lang.StringBuilderなどのメソッド)はそうしない)。そして、プログラム解析部13aは、「メソッド呼び出し文」の処理を、安全化手続きの返値が「low」にするように拡張し、出力が無視手続き以外かつ「high」のもののみとし、検出箇所の書式で行う。
追加規則候補生成部13bは、出された検出箇所に基づいて、追加規則候補を生成する。具体的には、追加規則候補生成部13bは、検出箇所の手続きの制御フローグラフを作成し、検出箇所の位置から制御フローグラフを逆順に到達可能なノードのうち、手続き呼び出しを全て抽出する。そして、追加規則候補生成部13bは、抽出した手続き群のうち、手続き呼び出しを全て抽出し、抽出した手続き群のうち、重複しているもの、すでに解析規則に安全化手続き定義として存在するもの、返値がないものを全て除外し、残った手続き群を追加規則候補として生成し、追加規則提案部13cに通知する。
ここで、図8を用いて制御フローグラフからの手続き抽出を説明する。同図に示すように、追加規則候補生成部13bは、検出箇所の手続きの制御フローグラフを作成する。そして、追加規則候補生成部13bは、検出箇所の該当位置「14」から制御フローグラフを逆順に到達可能なノードのうち、手続き呼び出しを全て抽出している。これは、要注意手続き呼び出しである該当位置「14」より前に呼ばれている手続き呼び出しを抽出することに相当する。図4の例では、抽出したノードを色付けし、そのうち手続き呼び出しのノードを黒に色付けしている。
さらに、追加規則候補の生成について図9を用いて具体的に説明する。同図に示すように、追加規則候補生成部13bは、抽出した手続き群のうち、重複しているもの、すでに解析規則に安全化手続き定義として存在するもの、返値がないものを全て除外する。つまり、図9の例では、追加規則候補生成部13bは、「java.lang.System#currentTimeMillis()」が既に解析規則に安全化手続き定義として存在している(図5参照)として除外し、また、「java.lang.Process#destroy()」については返値がない(void型)なので除外する。そして、追加規則候補生成部13bは、残った手続き群を追加規則候補として生成する。
追加規則提案部13cは、生成された追加規則候補を出力部12に表示する。具体的には、追加規則提案部13cは、図10に例示するように、生成された追加規則候補を表示する。そして、追加規則提案部13cは、「constant」の枠中のリストのいくつか選択され、ボタン「選択中の手続きをconstantに追加」が押されると、選択した手続きを安全化手続きとし、安全化手続き定義が新解析規則として追加される。また、suppressionの枠中のボタン「この手続きをsuppressionに追加」を押すと、次の無視手続き定義が新解析規則として追加される。
追加規則提案部13cは、outputの枠中の数字が書かれたチェックボックスにチェックが入れられ、ボタン「この手続きをoutputに追加」が押されると、チェックされた数字を引数群とした、要注意手続き定義が新解析規則として追加される。
追加規則設定部13dは、追加規則候補を新解析規則として追加する。具体的には、追加規則設定部13dは、追加規則候補を新解析規則として追加する指示を受け付けると(図10参照)、追加規則候補を新解析規則として追加するように設定する。
[データフロー解析装置による処理]
次に、図11および図12を用いて、実施例1に係るデータフロー解析装置10による処理を説明する。図11は、実施例1に係るデータフロー解析装置10の処理動作を示すフローチャートであり、図12は、実施例1に係るデータフロー解析装置の追加規則候補生成処理の手順を説明するためのフローチャートである。
図11に示すように、データフロー解析装置10は、データフロー解析指示を受け付けると(ステップS101肯定)、解析対象プログラムと解析規則から検出箇所を抽出する(ステップS102)。そして、データフロー解析装置10は、抽出された検出箇所に基づいて、追加規則候補を生成する追加規則候補生成処理(後に、図12を用いて詳述)を行う(ステップS103)。
そして、データフロー解析装置10は、生成された追加規則候補を表示し(ステップS104)、追加規則候補を新解析規則として追加する指示を受け付けると(ステップS105肯定)、追加規則候補を新解析規則として追加するように設定する(ステップS106)。
続いて、図12を用いてデータフロー解析装置10の追加規則候補生成処理の手順を説明する。同図に示すように、データフロー解析装置10は、一つの検出箇所を受け付けると(ステップS201)、検出箇所の手続きの制御フローグラフを作成し(ステップS202)、検出箇所の位置から制御フローグラフを逆順に到達可能なノードのうち、手続き呼び出しを全て抽出する(ステップS203)。
そして、データフロー解析装置10は、抽出した手続き群のうち、手続き呼び出しを全て抽出し、抽出した手続き群のうち、重複しているもの、すでに解析規則に安全化手続き定義として存在するもの、返値がないものを全て除外し(ステップS204)、残った手続き群を追加規則候補として生成する(ステップS205)。
[実施例1の効果]
上述してきたように、データフロー解析装置10は、検出箇所に基づいて、解析規則の候補を生成し、生成された解析規則候補を出力部12に出力するので、解析規則の追加案を自動提案する結果、解析規則の作成の手間を軽減することが可能である。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、プログラム解析部13aおよび追加規則候補生成部13bを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(2)プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図13を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図13は、データフロー解析プログラムを実行するコンピュータを示す図である。
同図に示すように、データフロー解析装置としてのコンピュータ600は、入力部11、出力部12、HDD610、RAM620、ROM630およびCPU640をバス650で接続して構成される。
そして、ROM630には、上記の実施例と同様の機能を発揮するデータフロー解析装置、つまり、図13に示すように、プログラム解析プログラム631、追加規則候補生成プログラム632、追加規則提案プログラム633、追加規則設定プログラム634が予め記憶されている。なお、プログラム631〜634については、図2に示したデータフロー解析装置の各構成要素と同様、適宜統合または分散してもよい。
そして、CPU640が、これらのプログラム631〜634をROM630から読み出して実行することで、図13に示すように、各プログラム631〜634は、プログラム解析プロセス641、追加規則候補生成プロセス642、追加規則提案プロセス643、追加規則設定プロセス644として機能するようになる。各プロセス641〜645は、図2に示したプログラム解析部13a、追加規則候補生成部13b、追加規則提案部13c、追加規則設定部13dにそれぞれ対応する。
また、HDD610には、図13に示すように、解析対象テーブル611および解析規則テーブル612が設けられる。なお、解析対象テーブル611および解析規則テーブル612は、図2に示した解析対象記憶部14aおよび解析規則記憶部14bに対応する。そして、CPU640は、解析対象テーブル611および解析規則テーブル612に対してデータを登録するとともに、解析対象テーブル611および解析規則テーブル612から解析対象データ621および解析規則データ622を読み出してRAM620に格納し、RAM620に格納された解析対象データ621および解析規則データ622に基づいて処理を実行する。
(付記1)データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析装置であって、
前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成手段と、
前記解析規則候補生成手段によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力手段と、
を備えることを特徴とするデータフロー解析装置。
(付記2)前記解析規則候補生成手段は、前記検出箇所の制御フローグラフを作成し、当該検出箇所の位置より前に呼ばれている手続きを解析規則の候補として生成することを特徴とする付記1に記載のデータフロー解析装置。
(付記3)前記解析規則候補生成手段は、前記検出箇所の位置より前に呼ばれている手続きから返値がないものを除外し、残った手続きを解析規則の候補として生成することを特徴とする付記2に記載のデータフロー解析装置。
(付記4)前記解析規則候補生成手段は、前記解析規則の候補として、安全化手続き定義候補、要注意手続き候補および無視手続き定義候補のいずれか一つまたは複数を生成することを特徴とする付記1〜3のいずれか一つに記載のデータフロー解析装置。
(付記5)前記解析規則候補出力手段によって出力された前記解析規則候補のうち、解析規則として追加する解析規則候補を受け付ける解析規則追加受付手段と、
前記解析規則追加受付手段によって受け付けられた前記解析規則候補を解析規則として追加するように設定する追加規則設定手段と、
をさらに備えることを特徴とする付記1〜4のいずれか一つに記載のデータフロー解析装置。
(付記6)データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析方法であって、
前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成工程と、
前記解析規則候補生成工程によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力工程と、
を含んだことを特徴とするデータフロー解析方法。
(付記7)データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析方法をコンピュータに実行させるデータフロー解析プログラムであって、
前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成手順と、
前記解析規則候補生成手順によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力手順と、
をコンピュータに実行させることを特徴とするデータフロー解析プログラム。
以上のように、本発明に係るデータフロー解析装置、データフロー解析方法およびデータフロー解析プログラムはデータの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力する場合に有用であり、特に、解析規則を作成する手間を軽減することに適する。
実施例1に係るデータフロー解析装置の概要および特徴を説明するための図である。 実施例1に係るデータフロー解析装置の構成を示すブロック図である。 解析対象プログラムの例(JAVAバイトコード)を説明するための図である。 解析対象プログラムのソースコード例(JAVAソースコード)を説明するための図である。 解析規則の一例を説明するための図である。 検出箇所の一例を説明するための図である。 検出箇所の表示例を説明するための図である。 制御フローグラフからの抽出の例を説明するための図である。 追加規則候補として生成するデータを説明するための図である。 追加規則候補の表示例を説明するための図である。 実施例1に係るデータフロー解析装置の処理動作を示すフローチャートである。 実施例1に係るデータフロー解析装置の追加規則候補生成処理の手順を説明するためのフローチャートである。 データフロー解析プログラムを実行するコンピュータを示す図である。 従来の技術を説明するための図である。 従来の技術を説明するための図である。 従来の技術を説明するための図である。
符号の説明
10 データフロー解析装置
11 入力部
12 出力部
13 制御部
13a プログラム解析部
13b 追加規則候補生成部
13c 追加規則提案部
13d 追加規則設定部
14 記憶部
14a 解析対象記憶部
14b 解析規則記憶部

Claims (7)

  1. データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析装置であって、
    前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成手段と、
    前記解析規則候補生成手段によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力手段と、
    を備えることを特徴とするデータフロー解析装置。
  2. 前記解析規則候補生成手段は、前記検出箇所の制御フローグラフを作成し、当該検出箇所の位置より前に呼ばれている手続きを解析規則の候補として生成することを特徴とする請求項1に記載のデータフロー解析装置。
  3. 前記解析規則候補生成手段は、前記検出箇所の位置より前に呼ばれている手続きから返値がないものを除外し、残った手続きを解析規則の候補として生成することを特徴とする請求項2に記載のデータフロー解析装置。
  4. 前記解析規則候補生成手段は、前記解析規則の候補として、安全化手続き定義候補、要注意手続き候補、無視手続き定義候補のいずれか一つまたは複数を生成することを特徴とする請求項1〜3のいずれか一つに記載のデータフロー解析装置。
  5. 前記解析規則候補出力手段によって出力された前記解析規則候補のうち、解析規則として追加する解析規則候補を受け付ける解析規則追加受付手段と、
    前記解析規則追加受付手段によって受け付けられた前記解析規則候補を解析規則として追加するように設定する追加規則設定手段と、
    をさらに備えることを特徴とする請求項1〜4のいずれか一つに記載のデータフロー解析装置。
  6. データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析方法であって、
    前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成工程と、
    前記解析規則候補生成工程によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力工程と、
    を含んだことを特徴とするデータフロー解析方法。
  7. データの性質を定義した解析規則を用いて、解析の対象となる解析対象プログラムのデータフロー解析を行い、安全でないデータが含まれる手続きを検出箇所として出力するデータフロー解析方法をコンピュータに実行させるデータフロー解析プログラムであって、
    前記検出箇所に基づいて、解析規則の候補を生成する解析規則候補生成手順と、
    前記解析規則候補生成手順によって生成された解析規則候補を所定の出力部に出力する解析規則候補出力手順と、
    をコンピュータに実行させることを特徴とするデータフロー解析プログラム。
JP2007274365A 2007-10-22 2007-10-22 データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム Expired - Fee Related JP5176478B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007274365A JP5176478B2 (ja) 2007-10-22 2007-10-22 データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
US12/255,098 US8296254B2 (en) 2007-10-22 2008-10-21 Data flow analyzing apparatus, data flow analyzing method and data flow analyzing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007274365A JP5176478B2 (ja) 2007-10-22 2007-10-22 データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム

Publications (2)

Publication Number Publication Date
JP2009104342A true JP2009104342A (ja) 2009-05-14
JP5176478B2 JP5176478B2 (ja) 2013-04-03

Family

ID=40564466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007274365A Expired - Fee Related JP5176478B2 (ja) 2007-10-22 2007-10-22 データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム

Country Status (2)

Country Link
US (1) US8296254B2 (ja)
JP (1) JP5176478B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101833504B (zh) * 2010-04-19 2015-04-15 张翀斌 一种基于模型检验的时序软件质量缺陷检测方法及系统
TWI446163B (zh) * 2010-09-27 2014-07-21 Etron Technology Inc 同時分析效能與錯誤的電路及其方法
US8806464B2 (en) 2012-04-26 2014-08-12 Hewlett-Packard Development Company, L.P. Process flow optimized directed graph traversal
EP2778925A3 (en) * 2013-03-15 2014-10-08 Aetherpal Inc. Dashboard notifications on management console during a remote control session
US9824214B2 (en) 2014-08-15 2017-11-21 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9454659B1 (en) 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
US10599852B2 (en) 2014-08-15 2020-03-24 Securisea, Inc. High performance software vulnerabilities detection system and methods
US10956134B2 (en) * 2019-08-02 2021-03-23 Sap Se Itemization of rule branch condition expressions

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 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP2006523898A (ja) * 2003-04-18 2006-10-19 オンス ラブス,インク ソースコードの脆弱点の検出法および検出システム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2809048B2 (ja) 1993-05-24 1998-10-08 日本電気株式会社 対画面デバッグ方式
US7114185B2 (en) * 2001-12-26 2006-09-26 Mcafee, Inc. Identifying malware containing computer files using embedded text
US8584239B2 (en) * 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006523898A (ja) * 2003-04-18 2006-10-19 オンス ラブス,インク ソースコードの脆弱点の検出法および検出システム
WO2006087780A1 (ja) * 2005-02-17 2006-08-24 Fujitsu Limited 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200800377001; Viega,J.&McGraw,G.著、齋藤孝道監訳: Building Secure Software 第1版, 20060725, 第139-140頁, 株式会社オーム社 *
JPN6012028201; Viega,J.&McGraw,G.著、齋藤孝道監訳: Building Secure Software 第1版, 20060725, 第139-140頁, 株式会社オーム社 *

Also Published As

Publication number Publication date
US20090106182A1 (en) 2009-04-23
US8296254B2 (en) 2012-10-23
JP5176478B2 (ja) 2013-04-03

Similar Documents

Publication Publication Date Title
JP5176478B2 (ja) データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
US9389849B2 (en) Test case pattern matching
US20160357519A1 (en) Natural Language Engine for Coding and Debugging
US10176270B2 (en) Performance of template based javascript widgets
US20130297579A1 (en) Code regeneration determination from selected metadata fingerprints
JP6354457B2 (ja) アプリケーション開発支援装置、そのデータ処理方法、およびプログラム
JP2013156786A (ja) ソフトウェアの構造可視化プログラムおよびシステム
JP2008191963A (ja) ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
JP5845888B2 (ja) ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム
Stocco et al. PESTO: A tool for migrating DOM-based to visual web tests
US20210389977A1 (en) System migration support apparatus, system migration support method and program
WO2012036304A1 (ja) 動作検証支援装置、動作検証支援方法、及び動作検証支援プログラム
JP6107455B2 (ja) テストスケジュール決定装置、プログラム
US20100275183A1 (en) Source code auditor with a customized rules builder
Luckow et al. Symbolic pathfinder v7
WO2021100156A1 (ja) テストデータ生成装置、テストデータ生成方法、及びプログラム
JP2009211622A (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP2008165342A (ja) ソースコード生成方法及び装置並びにプログラム
JP6866270B2 (ja) Sql文抽出装置、sql文抽出方法及びプログラム
Ko et al. Feedlack detects missing feedback in web applications
CN115688108A (zh) 一种webshell静态检测方法及系统
JP5720531B2 (ja) ヘルプ作成支援装置、ヘルプ作成支援プログラムおよびヘルプ作成支援方法
JP2009134360A (ja) モデル検査システム、モデル検査方法およびモデル検査用プログラム
JP6116983B2 (ja) エントリーポイント抽出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120802

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121126

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121211

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121224

LAPS Cancellation because of no payment of annual fees