JP2012113693A - コンピュータ・プログラムのメソッドがバリデータであるかどうかを判断する方法、システム、及びコンピュータ・プログラム - Google Patents

コンピュータ・プログラムのメソッドがバリデータであるかどうかを判断する方法、システム、及びコンピュータ・プログラム Download PDF

Info

Publication number
JP2012113693A
JP2012113693A JP2011199060A JP2011199060A JP2012113693A JP 2012113693 A JP2012113693 A JP 2012113693A JP 2011199060 A JP2011199060 A JP 2011199060A JP 2011199060 A JP2011199060 A JP 2011199060A JP 2012113693 A JP2012113693 A JP 2012113693A
Authority
JP
Japan
Prior art keywords
validator
condition
target method
unsatisfiability
computer 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.)
Granted
Application number
JP2011199060A
Other languages
English (en)
Other versions
JP5700675B2 (ja
Inventor
Takaaki Tateishi
立石孝彰
Pistoia Marco
マルコ・ピストイア
Tripp Omar
オマル・トリップ
James Berg Ryan
ライアン・ジェームス・バーグ
Weiner Robert
ロバート・ウィーナー
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012113693A publication Critical patent/JP2012113693A/ja
Application granted granted Critical
Publication of JP5700675B2 publication Critical patent/JP5700675B2/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
    • 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
    • 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/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】コンピュータ・プログラムのメソッドがバリデータであるかどうかを決定する方法及びシステムを提供する。
【解決手段】イリーガル・パターンと、メソッドを有するコンピュータ・プログラムとを受取る(102)。イリーガル・パターンに関連した各リターン・ステートメントが一定のブール値を返送するようにターゲットメソッドを正規化する(104)。1つ又は複数の対応する基本ブロックが第1のパス条件に対して真の一定のブール値を返送し、第2のパス条件に対して偽の一定のブール値を返送するように、1つ又は複数の対応するパスに対する第1のパス条件及び第2のパス条件を決定する(106、114)。いずれのパス条件の不充足可能性も偽である場合、メソッドは、バリデータではないとして報告する(110、118)。いずれのパス条件の不充足可能性も真である場合、メソッドは、バリデータであるとして報告する(112、120)。
【選択図】図1

Description

本発明は、コンピュータ・プログラムのメソッドがバリデータであるかどうかを判断する方法及びシステムに関する。
バリデータ(validator)は、イントラネットおよびインターネット上のウェブ・アプリケーションに関連してセキュリティ・センシティブなオペレーションにおいて入力ストリングが安全に使用され得るかどうかを検証するコンピュータ・プログラムのメソッド又はプロセスである。この点に関して、バリデータは、そのようなセキュリティ・センシティブなオペレーションにおいて安全に入力ストリングを使用することができるようにその入力ストリングを処理するコンピュータ・プログラムのメソッドであるサニタイザ(sanitizer)とは区別される。
従って、バリデータ及びサニタイザは、ウェブ・アプリケーションおよびそれの基礎となるデータのセキュリティを危険に曝すことによりウェブ・アプリケーションを誤って遂行させるような悪質な入力ストリングにそのウェブ・アプリケーションが曝されないことを保証するために使用される。
本発明の実施例の方法は、或るイリーガル・パターン(不正なパターン)を受け取るプロセッサ及びターゲット・メソッドを有するコンピュータ・プログラムを含む。ターゲット・メソッドは、多くの基本ブロック及び1つ又は複数個のリターン・ステートメントを有する。ターゲット・メソッドは、イリーガル・パターンに関係のあるそのターゲット・メソッドの各リターン・ステートメントが一定のブール値を返送するようにプロセッサにより正規化される。1つ又は複数個の対応する基本ブロックが「真」の一定のブール値を返送するように、その正規化されたターゲット・メソッドの1つ又は複数個の対応するパスに対する第1のパス条件がプロセッサによって決定される。第1のパス条件の不充足可能性(unsatisfiability)が、単項2階ロジック(M2L)技法を使ってプロセッサにより決定される。第1のパス条件の不充足可能性が真である場合、プロセッサは、ターゲット・メソッドが有益なバリデータであるということを報告する。第1のパス条件の不充足可能性が「偽」である場合、プロセッサは、ターゲット・メソッドが有益な(positive)バリデータではないということを報告する。
本発明の実施例のコンピュータ可読データ非一時的記憶媒体は、その上にコンピュータ・プログラムを格納される。プロセッサによるコンピュータ・プログラムの実行は1つのメソッドを遂行させる。そのメソッドは、ターゲット・メソッドが1つのイリーガル・パターンとターゲット・メソッドを有するターゲット・コンピュータ・プログラムとを受け取るステップを含む。ターゲット・メソッドは、1つ又は複数個のリターン・ステートメント及び多くの基本ブロックを有する。ターゲット・メソッドは、イリーガル・パターンに関連するそのターゲット・メソッドの各リターン・ステートメントが一定のブール値を返送するように正規化される。
1つ又は複数個の対応する基本ブロックが第1のパス条件にとっては真である一定のブール値を返送し、第2のパス条件にとっては偽である一定のブール値を返送するというような、その正規化されたターゲット・メソッドの1つ又は複数個の対応するパスに対する第1のパス条件及び第2のパス条件が決定される。第1のパス条件の不充足可能性及び第2のパス条件の不充足可能性は、単項2階ロジック(M2L)技法を使用して決定される。第1のパス条件の不充足可能性が偽である場合、ターゲット・メソッドは有益なバリデータではないとして報告される。 第1のパス条件の不充足可能性が真である場合、ターゲット・メソッドは有益なバリデータとして報告される。第2のパス条件の不充足可能性が偽である場合、ターゲット・メソッドは無益な(negative)バリデータではないとして報告される。 第2のパス条件の不充足可能性が真である場合、ターゲット・メソッドは無益なバリデータとして報告される。
本発明の実施例のシステムは、プロセッサ、コンピュータ可読データ記憶媒体、及びバリデータ決定コンポーネントを含む。コンピュータ可読データ記憶媒体は、イリーガル・パターンと、ターゲット・メソッドを有するターゲット・コンピュータ・プログラムとを格納する。ターゲット・メソッドは多くの基本ブロックを有する。バリデータ決定コンポーネントは、少なくともハードウェアによって具現化される。コンポーネントは、イリーガル・パターンに関連するターゲット・メソッドの各リターン・ステートメントが一定のブール値を返送するように、そのターゲット・メソッドを正規化するためのものである。コンポーネントは、1つ又は複数個の対応する基本ブロックが真の一定のブール値を返送するような、その正規化されたターゲット・メソッドの1つ又は複数個の対応するパスに対する第1のパス条件を決定するためのものである。コンポーネントは、単項2階ロジック(M2L)技法を使用して、第1のパス条件の不充足可能性を決定するためのものであり、第1のパス条件の不充足可能性が真である場合、ターゲット・メソッドは有益なバリデータである。
本発明の実施例に従って、ターゲット・メソッドがバリデータであるかどうかを判断するための方法のフローチャートである。 本発明の実施例に従って、ターゲット・メソッドに対するパス条件の不充足可能性を決定するために、図1の方法において使用することができる方法のフローチャートである。 本発明の実施例に従って、基本的なターゲット・メソッドに関して図1及び図2の方法の例示的な遂行を(A)、(B)、(C)、(D)、及び(E)として示す図である。 本発明の実施例に従って代表的なシステムを示す簡易的なブロック図である。
本発明の実施例に関する以下の詳細な説明では、添付図面を参照して、本発明を実施し得る特定の実施例が一例として示される。これらの実施例は、当業者が本発明を実行することを可能にするために十分詳細に説明される。本発明の主旨及び技法的範囲から逸脱することなく、他の実施例を利用することが可能であり、論理的、機械的、及び他の変更を施すことも可能である。従って、以下の詳細な説明の記述は限定的な意味に解釈されるべきではなく、本発明の実施例の範囲は請求項の記述によってのみ定義される。
「背景技術」の項において述べたように、バリデータは、バリデータは、入力ストリングがセキュリティ・センシティブなオペレーションにおいて安全に使用され得るかどうかを確認するコンピュータ・プログラムのメソッドである。簡単なバリデータの一例は、例えば、「Valid(String s{return !s.contained(“<”);})」 というコンピュータ・プログラムである。このコンピュータ・プログラムは、入力ストリングsが文字“<”を含むか否かを判断する。それが肯定される場合、入力ストリングは、セキュリティ・センシティブなオペレーションの範囲内では安全に使用され得ない。
バリデータがその機能を正確に遂行するためには、バリデータが正確に且つ適切に機能を遂行するということを決定するために、そのバリデータ自体が確認されなければならない。正しくない簡単なバリデータの一例は、例えば、「public static Boolean isValid(String s{return !s.substring(1).contains(“<”);} )」というコンピュータ・プログラムである。このコンピュータ・プログラムは、入力ストリングsの一部分が文字“<”を含むか否かをまさに判断する。そのコンピュータ・プログラムはストリングs全体をチェックするのではないので、そのコンピュータ・プログラムはその機能を適切に遂行するものではない。
バリデータが有益なバリデータ及び/又は無益なバリデータであり得るということに留意されたい。バリデータが有益なバリデータおよび無益なバリデータの両方である場合、そのバリデータは、完全なバリデータ又は単にバリデータと呼ばれ得る。有益なバリデータは、入力ストリングが不正文字を含むときには常に真のブール値を返送しないバリデータである。無益なバリデータは、入力ストリングが不正文字を含むときには常に偽のブール値を返送しないバリデータである。バリデータは、厳密には、それが有益なバリデータ、無益なバリデータ、又は、有益なバリデータ及び無益なバリデータの両方(即ち、完全なバリデータ)であるかどうかに関して検証され得る。
既存のストリング検証技法は、バリデータの検証に十分には適していない。それに比べて、本明細書にはバリデータを検証するための方策が示される。特に、図1は、本発明の実施例に従って、ターゲット・コンピュータ・プログラムのターゲット・メソッドがバリデータであるかどうかを判断するための方法100を示す。その方法100は、非一時的なコンピュータ可読データ記憶媒体に格納されたコンピュータ・プログラムとして具現化することが可能である。コンピューティング装置のプロセッサのようなプロセッサによるそのコンピュータ・プログラムの実行は、方法100が遂行されるという結果に帰着する。このコンピュータ・プログラムと、方法100を遂行するコンピュータ・プログラムに関連するターゲット・コンピュータ・プログラムとを混同してはならない。同様に、方法100と、その方法を遂行するメソッドに関連するターゲット・メソッドとを混同してはならない。
イリーガル・パターンと、ターゲット・メソッドを有するターゲット・コンピュータ・プログラムとが受け取られる(ステップ102)。イリーガル・パターンは、ターゲット・コンピュータ・プログラムのターゲット・メソッドが1つのパターンに関連したバリデータであることに関してテストされる、そのパターンである。例えば、ターゲット・メソッドは、ストリング“<”が入力ストリング内にあるか否かを検証するためのものである場合、そのストリング“<”は、このターゲット・メソッドがテストされるパターンに関連したイリーガル・パターンである。
ターゲット・メソッドは1つ又は複数個のリターン・ステートメントを有する。リターン・ステートメントは、入力ストリングがイリーガル・パターンを含んでいるか否かを返送する、そのターゲット・メソッド内の1つの又は一連の命令である。ターゲット・メソッド内には2つ以上のリターン・ステートメントがあってもよい。ターゲット・メソッドは、更に、多くの基本ブロックを有する。基本ブロックは、単に、ターゲット・メソッドのリターン・ステートメントに通じる1つ又は一連の命令である。
ターゲット・メソッドは、イリーガル・パターンに関連する各リターン・ステートメントが一定のブール値を返送するために正規化される(ステップ104)。一定のブール値は真または偽である。そのようなブール値は、イリーガル・パターンを含む入力ストリングに対してリターン・ステートメントが常に真を返送する(又は、常に偽を返送する)という点で一定であると言える。ターゲット・メソッド内のリターン・ステートメントは、本来、一定のブール値以外の値を返送し得る。従って、ターゲット・メソッドを正規化することは、イリーガル・パターンに関連する各リターン・ステートメントが代わりに真又は偽を返送するよう、ターゲット・メソッドを修正することを意味する。
ターゲット・メソッド(正規化された)の1つ又は複数個の対応するパスに関する第1のパス条件は、その第1のパス条件の1つ又は複数個の対応する基本ブロックが真の一定のブール値を返送するように決定される(ステップ106)。パス条件は、2つのパスのうちのどちらのパスがフォローされるべきかを決定するために評価される、ターゲット・メソッド内のステートメントである。例えば、パス条件は、IF/THEN/ELSEシリーズの命令の一部分であってもよい。パス条件の1つ又は複数個の対応する基本ブロックは、ターゲット・メソッド内のパス条件を評価する1つの命令又は一連の命令である。
第1のパス条件の不充足可能性は、単項2階ロジック(M2L)技法を使って決定される(ステップ108)。第1のパス条件の不充足可能性は、第1のパス条件が、イリーガル・パターンを含む入力ストリングに関して真のその一定のブール値を常に返送するかどうかを判断する。第1のパス条件の不充足可能性が偽である場合、これは、第1のパス条件が、イリーガル・パターンを含む入力ストリングに関して真の、その関連する一定のブール値を必ずしも返送するとは限らないということを意味する。それに比べて、この不充足可能性が真である場合、これは、第1のパス条件が、イリーガル・パターンを含む入力ストリングに関して真の、その関連する一定のブール値を返送しないということを意味する。
第1のパス条件の不充足可能性が偽である場合、ターゲット・メソッドが有益なバリデータ(即ち、真の関連する一定のブール値に対するバリデータ)ではあり得ないということがわかり、方法100は、ターゲット・メソッドが有益なバリデータではないということを報告する(ステップ110)。これに比べて、第1のパス条件の不充足可能性が真である場合、ターゲット・メソッドが有益なバリデータであるということがわかり、方法100は、ターゲット・メソッドが有益なバリデータであるということを報告する(ステップ112)。同様に、ターゲット・メソッドが有益なバリデータであるか否かは、方法100では、これまでのところ第1のパス条件の不充足可能性に基づいて評価され、報告されていた。ステップ110及び112の報告は、グラフィカル・ユーザ・インターフェース(GUI)上に表示されたメッセージ、電子メールのような電子メッセージ等のごとき1つ又は複数個の様々な形式を取り得る。
次に、ターゲット・メソッド(正規化された)の同じ1つまたは複数個のパスに対する第2のパス条件が決定され、従って、同じ1つ又は複数個の対応する基本ブロックが偽の一定のブール値を返送する(ステップ114)。第2のパス条件は、第1のパス条件に対する結果として生じるパス条件である。第1のパス条件は真の一定のブール値を返送するが、それに対応して第2のパス条件は偽の一定のブール値を返送する。
第2のパス条件の不充足可能性も、M2L技法を使用して決定される(ステップ116)。第2のパス条件の不充足可能性は、第2のパス条件が、イリーガル・パターンを含む入力ストリングに関する偽の、その一定のブール値を常に返送するかどうかを判断する。第2のパス条件の不充足可能性が偽である場合、これは、第2のパス条件が、イリーガル・パターンを含む入力ストリングに関して偽の、その関連する一定のブール値を必ずしも常に返送するとは限らないということを意味する。これに比べて、この不充足可能性が真である場合、これは、第2のパス条件が、イリーガル・パターンを含む入力ストリングに関して偽のその関連する一定のブール値を返送しない、ということを意味する。
第2のパス条件の不充足可能性が偽である場合、ターゲット・メソッドは無益なバリデータ(即ち、偽の関連するブール値に対するバリデータ)ではあり得ないということがわかり、方法100は、ターゲット・メソッドが無益なバリデータではないということを報告する(ステップ118)。これに比べて、第2のパス条件の不充足可能性が真である場合、ターゲット・メソッドが無益なバリデータであることがわかり、方法100は、ターゲット・メソッドが無益なバリデータであるということを報告する(ステップ120)。同様に、ターゲット・メソッドがバリデータであるか否かは、第2のパス条件の不充足可能性に基づいて、評価及び報告されている。ステップ118及び120の報告も、GUI上に表示されたメッセージ、電子メールのような電子メッセージ等のごとき1つ又は複数個の様々な形式を取り得る。
図2は、本発明の実施例に従ってパス条件の不充足可能性を決定する方法200を示す。その方法200は、方法100のステップ108及び116を具現化するために使用することが可能である。パス条件の1つ又は複数個の対応するパスにおける変数に関して1セットの可能なストリングが決定される(ステップ202)。その変数は、1つ又は複数個の対応するパスにおけるブランチ条件によって抑制される。ターゲット・メソッドの入力パラメータは、前述のように、イリーガル・パターンと一致するストリングであると仮定される。ブランチ条件は、1つ又は複数個の対応するパスが後続することを指示する。そのため、そのストリングのセットは、1つ又は複数個の対応するパスが後続することを指示するブランチ条件をその変数が受け入れそして実現し得るストリングの全部とはいえなくても多数を含む。
変数は、パス条件自体によって更に抑制される(ステップ204)。例えば、パス条件自体がブランチ条件よりももっと特殊な制約を有する場合、変数はこれらの制約によって更に抑制される。結局、パス条件の不充足可能性は、抑制された変数及びこの変数に対して決定された可能なストリングのセットに対応するM2L式を使用して決定される(ステップ206)。
方法200のM2L技法ベースの提案は、下記の2つの米国特許出願に記述された一般的な提案に従って具現化することが可能である。第1の特許出願は、2010年6月29日に申請され、米国特許出願12/825,610を割り当てられた「ストリングの有効性を決定するためのシステム、方法、及びプログラム(System,method, and program for determining validity of string)」と題するものである。第2の特許出願は、2010年10月19日に申請され、米国特許出願番号12/907,974を割り当てられた「コンピュータ・プログラムのモジュラ及び/又は需要主導型ストリング分析(Modular and/ordemand-driven string analysis of a computer program)」と題するものである。これらの特許出願の両方とも、方法200を具現化するために使用することができるM2Lベースの近似方法を開示している。しかし、どちらの特許出願も、バリデータの検証に関連して不充足可能性を決定することを開示していない。
図3の(A)乃至(E)は、原始的バリデータに関連して方法100及び200の例示的な動作を示す。図3の(A)は、本発明の実施例に従って、ターゲット・コンピュータ・プログラムのターゲット・メソッドを示す。方法100は、図3の(A)のターゲット・メソッドが適切なバリデータであるか否かを、方法200を使って決定するためのものである。そのため、方法100は、それのステップ102において図3の(A)のターゲット・メソッドを受け取る。
図3の(B)は、本発明の実施例に従って、方法100のステップ104の正規化が行われた後の図3の(A)のターゲット・メソッドを示す。図3の(C)は、方法100のステップ106のパス条件の決定が行われた後の図3の(B)の正規化されたターゲット・メソッドを示す。図3の(D)は、方法200のステップ202が行なわれた後の図3の(C)の正規化されたターゲット・メソッドを示す。図3の(E)は、方法200のステップ204が行なわれた後の図3の(D)の正規化されたターゲット・メソッドを示す。そのため、方法200のステップ206は、図3の(E)に示されたターゲット・メソッドに関連して行われ得る。
要するに、図4は、本発明の実施例に従って代表的なシステム400を示す。システム400は、デスクトップ・コンピュータのような1つ又は複数個のコンピューティング装置において具現化することが可能である。システム400は、プロセッサ402、コンピュータ可読データ記憶媒体404、及びバリデータ決定コンポーネント406を含む。コンピュータ可読データ記憶媒体404はイリーガル・パターン408及びターゲット・コンピュータ・プログラム410を格納し、ターゲット・コンピュータ・プログラム410はターゲット・メソッド412を有し、ターゲット・メソッド412自体は多くの基本ブロック414を有する。
バリデータ決定コンポーネント406は、プロセッサ402を使用して具現化される。例えば、1つの実施例では、コンポーネント406は、媒体404のようなコンピュータ可読データ記憶媒体又は別のコンピュータ可読データ記憶媒体404上に格納された1つ又は複数個のコンピュータ・プログラムであってもよい。従って、プロセッサ402によるこれらのコンピュータ・プログラムの実行は、その結果として、コンポーネント406の機能が実現されることになる。バリデータ決定コンポーネント406は、特にターゲット・メソッド412がイリーガル・パターン408に関連したバリデータであるかどうかを判断するために、ターゲット・メソッド412に関連して方法100及び200を遂行する。
当業者には明らかなように、本発明の態様は、システム、メソッド、又はコンピュータ・プログラムとして具現化され得る。従って、本発明の実施例の態様は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例(ファームウェア、駐在ソフトウェア、マイクロコード等を含む)、又は、一般に「回路」、「モジュール」、又は「システム」と呼ばれるソフトウェア及びハードウェア態様を結合した実施例の形式を取り得る。更に、本発明の態様は、コンピュータ可読プログラム・コードを組み込まれた1つ又は複数個のコンピュータ可読媒体において具現化されるコンピュータ・プログラムの形式を取り得る。
1つ又は複数個のコンピュータ可読媒体の任意の組み合わせを利用することも可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であってもよい。例えば、コンピュータ可読記憶媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体システム、装置、もしくはデバイス、或いは上記のものの任意の適切な組み合わせであってもよいが、それらに限定されない。コンピュータ可読記憶媒体の更なる特殊な例(限定的なリスト)は、下記の装置、即ち、1つ又は複数個のワイヤを有する電気的接続体、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリー(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、光学的記憶装置置、磁気的記憶装置、又はこれらの装置の任意の適切な組み合わせを含む。本明細書との関連では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによる使用、或いはそれに関連した使用のために、プログラムを内蔵又は格納することができる任意の実体的な媒体であってもよい。
コンピュータ可読信号媒体は、例えば、搬送波のベースバンドにおいて、又はそれの一部として、そこに組み込まれたコンピュータ可読プログラム・コードと共に、伝播されたデータ信号を含み得る。そのような伝播された信号は、電磁気的、光学的、又はそれらの任意の適切な組み合わせを含むが、それに限定されない任意の種々の形式を取り得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でなく、命令実行システム、装置、又はデバイスによる使用或いはそのシステム等に関連する使用のためにプログラムを伝送、伝播、又は搬送することができる、任意のコンピュータ可読媒体であってもよい。コンピュータ可読媒体上に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RF等、又は前述のものの任意の適切な組み合わせを含むが、それらに限定されない任意の適切な媒体を使って送信され得る。
一般に、コンピュータ・プログラムは、1つ又は複数個のコンピュータ・プログラムが格納されるコンピュータ可読媒体に格納される。1つ又は複数個のハードウェア装置における1つ又は複数個のプロセッサによるコンピュータ可読媒体からのコンピュータ・プログラムの実行は、1つのメソッドを遂行させる。例えば、遂行されるべきメソッドは、上述のメソッドのうちの1つ又は複数個であってもよい。
コンピュータ・プログラム自体はコンピュータ・プログラム・コードを含む。本発明の実施態様に関するオペレーションを実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等ようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続型プログラミング言語を含む1つ又は複数個のプログラミング言語の任意の組み合わせで書かれてもよい。プログラム・コードは、ユーザのコンピュータ上で全体的に実行されたり、ユーザのコンピュータ上で部分的に実行されたり、独立型ソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に又はリモート・コンピュータ上で部分的に実行されたり、或いはリモート・コンピュータまたはサーバ上で全体的に実行されたりし得る。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、或いは、(例えば、インターネット・サービス・プロバイダを利用してインターネットを介して)外部コンピュータへの接続が行われてもよい。
本発明の実施例に従って、本発明の態様が、方法、装置(システム)、およびコンピュータ・プログラムのフローチャート及び/又はブロック図を参照して説明された。そのフローチャート及び/又はブロック図の各ブロック、並びにフローチャート及び/又はブロック図におけるブロックの組み合わせがコンピュータ・プログラム命令によって具現化され得るということは当然である。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、又は、マシンを製造するための他のプログラマブル・データ処理装置のプロセッサに提供され得る。従って、そのコンピュータ又は他のプログラマブル・データ処理装置のプロセッサによって実行される命令は、そのフローチャート、ブロック図において指定された機能/行為を具現化するための手段を創出し得る。
コンピュータ、他のプログラマブル・データ処理装置、又は他のデバイスを指示するコンピュータ・プログラム命令はコンピュータ可読媒体に格納され、そのコンピュータ可読媒体に格納された命令は、フローチャート及び/又はブロック図において指定された機能/行為を具現化する命令を含む製品を作り出すというように特定の態様で機能し得る。
コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、又は他のデバイス上にもロードされ、そのコンピュータ、他のプログラマブル装置、又は他のデバイスにおいて実行される命令が、フローチャート及び/又はブロック図のブロックにおいて指定された機能/行為を具現化するためのプロセスを提供するよう、コンピュータ活用のプロセスを生じさせるためにそのコンピュータ、他のプログラマブル装置、又は他のデバイスにおいて一連の動作ステップを遂行させる。
添付図面におけるフローチャート及びブロック図は、本発明の様々な実施例に従って、システム、方法、及びコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、及びオペレーションを示す。この点に関して、フローチャート又はブロック図における各ブロックは、指定された論理的機能を具現化するための1つ又は複数個の実行可能な命令を含むコードのモジュール、セグメント、又は部分を表わし得る。或る代替の実施態様では、ブロックに記された機能が図面に記された順序から外れて生じ得るということに留意されたい。例えば、連続して示された2つのブロックが実際には実質的に同時に実行されることもあり、或いは、時には、それらのブロックが関連の機能に依存して逆の順序で実行されることもある。更に、ブロック図及び/又はフローチャートの各ブロック、並びにブロック図及び/又はフローチャートのブロックの結合が、指定の機能又は行為を遂行する特別目的のハードウェア・ベースのシステムによって、又は特別目的のハードウェア及びコンピュータ命令の組み合わせによって具現化されることも可能である、ということにも留意されたい。
結局、特定の実施例が本明細書において図示され、説明されたが、同じ目的を達成すると判断される任意の構成がその示された特定の実施例に代わって置き換え可能であるということは当業者には明らかであろう。従って、本願は、本発明の実施例の如何なるアダプテーションまたは変更もカバーすることを意図される。従って、本発明が「特許請求の範囲」の記載およびそれにおける均等物によってのみ限定されるということは当然である。

Claims (20)

  1. イリーガル・パターンとターゲット・メソッドを有するコンピュータ・プログラムとをプロセッサによって受け取るステップであって、前記ターゲット・メソッドは1つ又は複数個のリターン・ステートメント及び複数個の基本ブロックを有する、ステップと、
    前記イリーガル・パターンに関連する前記ターゲット・メソッドの各リターン・ステートメントが一定のブール値を返送するように、前記ターゲット・メソッドを前記プロセッサによって正規化するステップと、
    1つ又は複数個の対応する基本ブロックが真の一定のブール値を返送するように、正規化されたターゲット・メソッドの1つ又は複数個の対応するパスに対する第1のパス条件を前記プロセッサによって決定するステップと、
    単項2階ロジック(M2L)技法を使って前記第1のパス条件の不充足可能性を前記プロセッサによって決定するステップと、
    前記第1のパス条件の不充足可能性が偽である場合、前記ターゲット・メソッドが有益なバリデータではないということを前記プロセッサによって報告するステップと、
    を含む方法。
  2. バリデータは、入力ストリングが前記コンピュータ・プログラムにおけるセキュリティ・センシティブなオペレーションに関連して安全に使用され得るか否かを判断するためのプロセスである、請求項1に記載の方法。
  3. 前記第1のパス条件の不充足可能性が真である場合、前記ターゲット・メソッドが有益なバリデータであるということを前記プロセッサによって報告するステップを更に含む、請求項1に記載の方法。
  4. 前記1つ又は複数個の対応する基本ブロックが偽の一定のブール値を返送するように、前記正規化されたターゲット・メソッドの1つ又は複数個の対応するパスに対する第2のパス条件を前記プロセッサによって決定するステップと、
    前記M2L技法を使って前記第2のパス条件の不充足可能性を前記プロセッサによって決定するステップと、
    を更に含む、請求項1に記載の方法。
  5. 前記第2のパス条件の不充足可能性が偽である場合、前記ターゲット・メソッドが無益なバリデータでないということを前記プロセッサによって報告するステップを更に含む、請求項4に記載の方法。
  6. 前記第2のパス条件の不充足可能性が真である場合、前記ターゲット・メソッドが無益なバリデータであるということを前記プロセッサによって報告するステップを更に含む、請求項5に記載の方法。
  7. 前記第1のパス条件の不充足可能性を決定するステップは、
    前記1つ又は複数個の対応するパスにおける変数に対して可能なストリングのセットを決定するステップであって、前記変数は前記1つ又は複数個の対応するパスにおけるブランチ条件によって抑制され、前記ターゲット・メソッドの入力パラメータは前記イリーガル・パターンにマッチするストリングであると仮定される、ステップを含む、請求項1に記載の方法。
  8. 前記第1のパス条件の不充足可能性を決定するステップは、
    前記1つ又は複数個のパス条件を使って前記変数を抑制するステップを更に含む、請求項7に記載の方法。
  9. 前記第1のパス条件の不充足可能性を決定するステップは、
    抑制された変数及び前記変数に対する決定された可能なストリングのセットに対応するM2L式を使って前記第1のパス条件の不充足可能性を決定するステップを更に含む、請求項8に記載の方法。
  10. コンピュータ可読記憶媒体に格納され、プロセッサによって実行されることにより1つの方法を遂行するコンピュータ・プログラムであって、前記方法は、
    イリーガル・パターンとターゲット・メソッドを有するターゲット・コンピュータ・プログラムとを受け取るステップであって、前記ターゲット・メソッドは複数個の基本ブロックを有する、ステップと、
    前記イリーガル・パターンに関連する前記ターゲット・メソッドの各リターン・ステートメントが一定のブール値を返送するように、前記ターゲット・メソッドを正規化するステップと、
    正規化された前記ターゲット・メソッドの1つ又は複数個の対応する第1のパス条件及び第2のパス条件を、1つ又は複数個の対応する基本ブロックが前記第1のパス条件に対して真の一定のブール値を返送するように及び前記第2のパス条件に対して偽の一定のブール値を返送するように、決定するステップと、
    単項2階ロジック(M2L)技法を使って前記第1のパス条件の不充足可能性及び前記第2のパス条件の不充足可能性を決定するステップと、
    前記第1のパス条件の不充足可能性が偽である場合、前記ターゲット・メソッドが有益なバリデータではないということを報告するステップと、
    前記第1のパス条件の不充足可能性が真である場合、前記ターゲット・メソッドが有益なバリデータであるということを報告するステップと、
    前記第2のパス条件の不充足可能性が偽である場合、前記ターゲット・メソッドが無益なバリデータでないということを報告するステップと、
    前記第2のパス条件の不充足可能性が真である場合、前記ターゲット・メソッドが無益なバリデータであるということを報告するステップと、
    を含む、コンピュータ・プログラム。
  11. 前記バリデータは、入力ストリングが前記コンピュータ・プログラムにおけるセキュリティ・センシティブなオペレーションに関連して安全に使用され得るか否かを判断するためのプロセスである、請求項10に記載のコンピュータ・プログラム。
  12. 前記第1のパス条件及び前記第2のパス条件の不充足可能性を決定するステップは、
    前記1つ又は複数個の対応するパスにおける変数に対して可能なストリングのセットを決定するステップであって、前記変数は前記1つ又は複数個の対応するパスにおけるブランチ条件によって抑制され、前記ターゲット・メソッドの入力パラメータは前記イリーガル・パターンにマッチするストリングであると仮定される、ステップを含む、請求項10に記載のコンピュータ・プログラム。
  13. 前記第1のパス条件及び前記第2のパス条件の不充足可能性を決定するステップは、前記パス条件を使って前記変数を抑制するステップを更に含む、請求項12に記載のコンピュータ・プログラム。
  14. 前記第1のパス条件及び前記第2のパス条件の不充足可能性を決定するステップは、
    抑制された変数及び前記変数に対する決定された可能なストリングのセットに対応するパス条件の不充足可能性を、M2L式を使って決定するステップを更に含む、請求項13に記載のコンピュータ・プログラム。
  15. プロセッサと、
    イリーガル・パターンと、複数個の基本ブロックを有するターゲット・メソッドを持ったターゲット・コンピュータ・プログラムとを格納するコンピュータ可読データ記憶装置と、
    少なくともハードウェアによって具現化されたバリデータ決定コンポーネントであって、
    (a)前記イリーガル・パターンに関連するターゲット・メソッドの各リターン・ステートメントが一定のブール値を返送するように、前記ターゲット・メソッドを正規化し、
    (b)1つ又は複数個の対応する基本ブロックが真の一定のブール値を返送するように、正規化されたターゲット・メソッドの1つ又は複数個の対応するパスに対して第1のパス条件を決定し、
    (c)単項2階ロジック(M2L)技法を使って前記第1のパス条件の不充足可能性を決定し、
    (d)前記第1のパス条件の不充足可能性が偽である場合、前記ターゲット・メソッドが有益なバリデータでないということを報告する、
    バリデータ決定コンポーネントと、
    を含むシステム。
  16. 前記バリデータは、入力ストリングが前記コンピュータ・プログラムにおけるセキュリティ・センシティブ・オペレーションに関連して安全に使用され得るか否かを判断するためのプロセスである、請求項15に記載のシステム。
  17. 前記バリデータ決定コンポーネントは、前記第1のパス条件の不充足可能性が真である場合、前記ターゲット・メソッドが有益なバリデータであるということを報告するものである、請求項15に記載のシステム。
  18. 前記バリデータ決定コンポーネントは、前記1つ又は複数個の対応するパスにおける変数に対する可能なストリングのセットを決定することによって前記第1のパス条件の不充足可能性を決定するものであり、
    前記変数は前記1つ又は複数個の対応するパスにおけるブランチ条件によって抑止され、前記ターゲット・メソッドの入力パラメータは前記イリーガル・パターンにマッチするストリングであると仮定される、請求項15に記載のシステム。
  19. 前記バリデータ決定コンポーネントは、前記第1パス条件を使って前記変数を抑制することによって前記第1のパス条件の不充足可能性を決定するものである、請求項18に記載のシステム。
  20. 前記バリデータ決定コンポーネントは、抑制された変数及び前記変数に対する決定された可能なストリングのセットに対応するM2L式を使って前記第1のパス条件の不充足可能性を決定することにより、前記パス条件の不充足可能性を決定するものである、請求項19に記載のシステム。
JP2011199060A 2010-11-19 2011-09-13 コンピュータ・プログラムのメソッドがバリデータであるかどうかを判断する方法、システム、及びコンピュータ・プログラム Expired - Fee Related JP5700675B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/950,432 US8365281B2 (en) 2010-11-19 2010-11-19 Determining whether method of computer program is a validator
US12/950432 2010-11-19

Publications (2)

Publication Number Publication Date
JP2012113693A true JP2012113693A (ja) 2012-06-14
JP5700675B2 JP5700675B2 (ja) 2015-04-15

Family

ID=46065695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011199060A Expired - Fee Related JP5700675B2 (ja) 2010-11-19 2011-09-13 コンピュータ・プログラムのメソッドがバリデータであるかどうかを判断する方法、システム、及びコンピュータ・プログラム

Country Status (2)

Country Link
US (1) US8365281B2 (ja)
JP (1) JP5700675B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4975188B2 (ja) * 2009-02-24 2012-07-11 シャープ株式会社 無線通信システム、基地局装置、移動局装置、無線通信方法及びプログラム
US20100299654A1 (en) * 2009-05-21 2010-11-25 Microsoft Corporation Approach for root causing regression bugs
US8667584B2 (en) 2010-12-15 2014-03-04 International Business Machines Corporation Formal analysis of the quality and conformance of information flow downgraders
US8769696B2 (en) 2011-09-29 2014-07-01 International Business Machines Corporation Automated detection of flaws and incompatibility problems in information flow downgraders

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011013810A (ja) * 2009-06-30 2011-01-20 Internatl Business Mach Corp <Ibm> 文字列の妥当性を判定するシステム、方法及びプログラム
US20120096440A1 (en) * 2010-10-19 2012-04-19 Takaaki Tateishi Modular and/or demand-driven string analysis of a computer program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011013810A (ja) * 2009-06-30 2011-01-20 Internatl Business Mach Corp <Ibm> 文字列の妥当性を判定するシステム、方法及びプログラム
US20120096440A1 (en) * 2010-10-19 2012-04-19 Takaaki Tateishi Modular and/or demand-driven string analysis of a computer program

Also Published As

Publication number Publication date
US8365281B2 (en) 2013-01-29
US20120131669A1 (en) 2012-05-24
JP5700675B2 (ja) 2015-04-15

Similar Documents

Publication Publication Date Title
US11042647B1 (en) Software assurance system for runtime environments
US11042645B2 (en) Auto-remediation workflow for computer security testing utilizing pre-existing security controls
CN109255234B (zh) 机器学习模型的处理方法、装置、介质及电子设备
WO2017049800A1 (zh) 检测应用漏洞代码的方法和装置
US8769696B2 (en) Automated detection of flaws and incompatibility problems in information flow downgraders
US10742666B2 (en) System and method for static detection and categorization of information-flow downgraders
US8701186B2 (en) Formal analysis of the quality and conformance of information flow downgraders
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
CN104137076A (zh) 用于图形处理单元的应用的验证
US20190361788A1 (en) Interactive analysis of a security specification
US9298926B2 (en) Remediation of security vulnerabilities in computer software
JP5700675B2 (ja) コンピュータ・プログラムのメソッドがバリデータであるかどうかを判断する方法、システム、及びコンピュータ・プログラム
US10902151B2 (en) Cognitive API policy manager
US20130007529A1 (en) Static analysis based on observed string values during execution of a computer-based software application
KR101324691B1 (ko) 모바일 악성 행위 어플리케이션 탐지 시스템 및 방법
US9037916B2 (en) Dynamic concolic execution of an application
US20140053140A1 (en) Static analysis of validator routines
WO2022271339A1 (en) Detection of supply chain-related security threats to software applications
CN116796334A (zh) 一种源代码缺陷静态审计检测系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140409

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140718

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141105

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141105

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20141105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141107

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150128

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150213

R150 Certificate of patent or registration of utility model

Ref document number: 5700675

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees