JP7200661B2 - 並行脆弱性検出 - Google Patents

並行脆弱性検出 Download PDF

Info

Publication number
JP7200661B2
JP7200661B2 JP2018241155A JP2018241155A JP7200661B2 JP 7200661 B2 JP7200661 B2 JP 7200661B2 JP 2018241155 A JP2018241155 A JP 2018241155A JP 2018241155 A JP2018241155 A JP 2018241155A JP 7200661 B2 JP7200661 B2 JP 7200661B2
Authority
JP
Japan
Prior art keywords
test case
test
bitmap
program
priority
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
JP2018241155A
Other languages
English (en)
Other versions
JP2019204482A (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.)
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
Publication of JP2019204482A publication Critical patent/JP2019204482A/ja
Application granted granted Critical
Publication of JP7200661B2 publication Critical patent/JP7200661B2/ja
Active 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • 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
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Description

本明細書で説明される実施形態は、並行性(concurrency)の脆弱性を検出することに関する。
並行脆弱性は、2つ以上のスレッドが同時に実行される並行プログラムにおいて起こりうる。並行脆弱性は、例えば、データ競合(data race)によって(例えば、マルチスレッドのプロセスの実行中に)引き起こされることがあり、ルート・アクセスを得ること又はリング0内で任意のコードを実行すること又はカーネル・メモリ破損を引き起こすことの可能性をローカル・ユーザに与えうる。
本願で請求される主題は、上記のような環境でしか動作しない実施形態又は上記のようなあらゆる欠点を解消する実施形態に限られない。むしろ、この背景は、本明細書で記載されるいくつかの実施形態が実施され得る技術分野の一例を説明するためにのみ与えられている。
実施形態の態様に従って、方法は、共有メモリへのプログラムのリード及びライト・アクセスをインストルメントすることを含んでよい。方法は、グレーボックス・ファザー(greybox fuzzer)により前記プログラムのテスト・ケースを識別することを更に含んでよい。更に、方法は、前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラムの2つ以上のブランチを解析することを含んでよい。前記テスト・ケースが優先テスト・ケースであることに応答して、方法は、前記テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給することを含んでよい。方法は、前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することを更に含んでよい。
実施形態の目的及び利点は、少なくとも、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって、実現及び達成されるだろう。
前述の概要及び以下の詳細な説明は、請求される発明の限定ではなく、説明及び例示であることが理解されるべきである。
例となる実施形態は、添付の図面の使用を通じて、更なる特定及び詳細をもって記載及び説明されるだろう。
例となるプログラムの複数のスレッドを含むソースコードを表す。 複数のスレッドを含むプログラムの例のソースコードを表す。 グレーボックス・ファザー及び並行性確認モジュールを含むシステムの例を表す。 グレーボックス・ファジングを実行する方法の例となるフロー図を表す。 複数のスレッド及びロケーションを含むプログラムの例のソースコードを表す。 例となるコンピュータ装置のブロック図である。
本明細書で説明される様々な実施形態は、並行性バグを発見することに関する。例えば、いくつかの実施形態は、バグ(例えば、ハッカー及び/又は犯罪者によって悪用され得るバグ)を発見するようプログラム・バイナリを試験することに関係があり得る。
並行性バグは、それらの発生が、例えば、オペレーティング・システムのスケジューリング・ポリシー及び外部環境に依存するので、周知のことだが、発見及び再現することが難しい。より具体的には、プログラムの実行の順序はスケジューリング・ポリシーに基づき変化することがあるので、脆弱性の検出又は再現は困難であり得る。
“ファジング”(fuzzing)又は“ファズ試験”(fuzz testing)は、無効な、予期しない、又はランダムなデータをコンピュータ・プログラムへの入力として供給することを含む自動ソフトウェア試験プロセスを指し得る。カバレッジに基づくグレーボックス・ファジング(CGF;Coverage-based Greybox Fuzzing)は、プログラム解析を必要としなくてよいランダム試験アプローチである。カバレッジ誘導(coverage-guided)グレーボックス・ファジングは、バグを発見するための、よく知られた技術である。しかし、並行性バグに対するカバレッジ誘導の影響は非常に限られている。グレーボックス・ファジングでは、プログラムは入力をもって実行され得、カバレッジが観測され得る。けれども、いくつかのバグは、試験中に検出されない可能性があり、あるいは、同じ入力による多数(例えば、1000回)の実行の後にしか起こらない可能性がある。更に、モデル検査及びアクティブ試験は、所与の入力により並行性バグを発見し得るが、入力を決定することが努力を必要としうる。
様々な実施形態は、並行性バグを発見することに関するファジングの有効性を改善する方法に関係があり得る。よって、本明細書でより十分に記載される本開示の様々な実施形態は、人によって道理に従って実行され得ないテクノロジから生じる1つ以上の問題に対する技術的解決法を提供し、そして、本明細書で開示される様々な実施形態は、上記の問題及び/又は課題を解決するためにコンピュータ・テクノロジに根ざしている。更に、本明細書で開示される少なくともいくつかの実施形態は、コンピュータによって従前実行不可能であった機能のコンピュータ実行を可能にすることによって、コンピュータ関連テクノロジを改善し得る。
本開示の実施形態は、添付の図面を参照して説明される。
図1は、例となるプログラムの2つのスレッド、すなわち、スレッド102(“Thread1”)及びスレッド104(“Thread2”)、を含むソースコード100を表す。例えば、グレーボックス・ファジングは、両方のパス(例えば、y>15及びy<=15)を実行する入力を生成してよい。しかし、例えば、y=18により多数回(例えば、1000回)プログラムを実行すること、バグを発見しない可能性がある。むしろ、バグは、スケジューラがスレッド102における命令を実行する前にスレッド104における全ての命令を実行する(従って、x=0、よって、Abort()関数が呼び出され得る。)場合にのみ起こり得る。更に、モデル検査及び/又はアクティブ試験は、yが特定の値(例えば、y=18)である場合にしかバグを発見しない可能性がある。
スレッドは、演算のストリームを含んでよい。例えば、オペレーティング・システムは、開始から終了まで1つずつ命令を実行してよい。逐次プログラムは、1つしかスレッドがない場合に、しばしば、シングルスレッドのプログラムと呼ばれる。シングルスレッドでは、しばしば、実行の多数のブランチが存在する。例えば、プログラムが条件x>0を含む場合には、2つのブランチ、すなわち、x>0(条件が真であるとき、しばしば“then”ブランチと呼ばれる。)及びx<=0(“else”ブランチ、“if … then … else …”に由来した名称)がある。入力(例えば、x=1又はx=-1)に応じて、演算のストリームは“then”ブランチ又は“else”ブランチをたどってよい。
ウィーク・メモリ・モデル(WMM;Weak Memory Models)(例えば、C及びJava(登録商標)で使用される。)によれば、命令サイクル(ひいては性能)を最適化するよう、命令は、プログラム内のそれらの元の順序で実行されないことがある。更に、アクティブ試験により、スケジューラの、命令をインターリーブするためのポリシーは、並行性バグを発見するよう制御され得る。更には、モデル検査により、WMMの下での全ての競合は、(例えば、サマリー関数(summary function)を介して)検出され得る。
例えば、図2を参照して、2つのスレッド、すなわち、スレッド202(“Thread1”)及びスレッド204(“Thread2”)、を含むプログラムの例のソースコード200が表されている。例えば、WMMは、性能のためにプログラムを最適化してよい(例えば、y=1は、x=1の前に実行されてよい。)。起こり得るWMMの下での1つの潜在的な競合は、y=1、x=0である。
アメリカン・ファジー・ロップ(AFL;American Fuzzy Lop)は、テスト・ケースのコード・カバレッジを大きくするためのアルゴリズムを使用する既知のファジング・ツールである。例えば、プログラムをインストルメントするためにAFLを利用すると、プログラムの各基本ブロックは一意の識別子ロケーションを与えられ得る。更に、ブロックAからブロックBへの移行は、“locationA ^ locationB”によって識別され得る(例えば、XORがハッシングとして使用され得る。)。更には、様々な実施形態に従って、ビットマップ(例えば、ビットのアレイ)は、どの移行が既に探査されているかを識別するために使用されてよい。例えば、ビットマップ内の新しいビットは、テスト・ケースにおける新しい移行の識別(例えば、発見及び/又は探査)を示し得る。更に、例えば、汎用アルゴリズムにより、テスト・ケースの組(例えば、母集団)がミューテートされ得る。少なくともいくつかの実施形態では、新しい移行を発見するテスト・ケースは、ミューテートされるよう優先順位を付けられてよい。AFLは、決定的プログラムにとって有効と考えられ、異なるプログラム・パスを働かせるための入力(テスト・ケース)を直ちに生成し得る。しかし、AFLは、スケジューラ又は環境を制御することができないことがあるので、並行性バグを発見することができない可能性がある。
本開示の様々な実施形態に従って、アルゴリズムは、共有メモリへの全てのリード(READ)及びライト(WRITE)動作が識別され得る前処理を含んでよい(例えば、共有メモリへの全てのリード及びライト・アクセスをインストルメントする。)。
更に、アルゴリズムは、プログラムの異なるブランチを探索するための入力を(例えば、グレーボックス・ファザーにより)生成することを含んでよい。例えば、いくつかの実施形態において、競合するペアの組において命令文(statements)を有しているプログラムのブランチは、特に関心が持たれ得る(例えば、焦点を当てられる。)。より具体的には、いくつかの実施形態において、競合するペアの組において命令文を有しているプログラムのブランチは、関連するテスト・ケースが優先テスト・ケースであるかどうかを判定するよう解析されてよい。
例えば、グレーボックス・ファザーは、並行性バグに焦点を当てるよう構成されてよい。より具体的には、いくつかの実施形態に従って、2つのビットマップが使用されてよく、一方のビットマップ(“第1ビットマップ”)は、全体のカバレッジのために使用されてよく(例えば、AFLと同様)、他方のビットマップは、競合するペアの組のために使用されてよい。
例えば、ツール(例えば、ファザー)を実装する擬似コードは:
Figure 0007200661000001
を含んでよい。ここで、現在及び前のロケーション(“cur_location”及び“prev_location”)は、共有メモリ(“shared_mem”)へのリード及びライトのロケーションを含む。
その上、アルゴリズムは、入力を(例えば、グレーボックス・ファザーにより)選択すること、及び並行性確認モジュール(例えば、モデル・チェッカー)へ入力を送ることを含んでよい。いくつかの実施形態に従って、ミューテーションのために入力を選択する場合に、第2ビットマップにおいて新しいトレースを生成する入力が、最初に選択されてよい。更に、少なくともいくつかの実施形態では、第2ビットマップにおいて一意のカバレッジを生成するテスト入力のみが並行性確認モジュールへ送られてよい。
更に、アルゴリズムは、並行性バグを発見するよう、ファザーからの夫々の具体的な入力を異なるスケジューリング・ポリシーを用いて(例えば、モデル・チェッカー又はアクティブ試験ツールのような、並行性確認モジュールにより)解析することを含んでよい。
図3は、本開示の様々な実施形態に従って、例となるシステム300を表す。システム300はファザー302を含み、ファザー302はグレーボックス・ファザーを含んでよい。より具体的には、例えば、ファザーは、競合指向の(race directed)カバレッジ誘導グレーボックス・ファザーを含んでよい。システム300は並行性確認モジュール304(本明細書では“確認ツール”又は“試験装置”とも呼ばれる。)を更に含む。並行性確認モジュール304は、モデル・チェッカー及び/又はアクティブ試験ツールを含んでよい。例えば、並行性確認モジュール304がモデル・チェッカーを含む実施形態では、並行性確認モジュール304は、明示的状態(explicit-state)モデル・チェッカーを含んでよい。
システム300の予期された動作中に、ファザー302は、プログラムの異なるブランチを探索するための入力を生成(例えば、決定)してよい。更に、ファザー302は入力を選択してよく、そして、入力はファザー302から並行性確認モジュール304へ送られてよい。更には、並行性確認モジュール304は、並行性バグを発見するよう、夫々の具体的な入力を異なるスケジューリング・ポリシーを用いてチェックしてよい。このように、様々な実施形態に従って、システム300、そして、より具体的には、ファザー302は、並行性確認モジュール304へ供給されるテスト・ケースの数を減らすよう構成されてよい。
変更、追加、又は削除は、本開示の適用範囲から逸脱することなしに、システム300に対して行われてよい。例えば、システム300は、2つ以上のファザー302及び/又は2つ以上の並行性確認モジュール304を含んでよい。
図4は、本開示の1つ以上の実施形態に従って、ファジングを実行する例となる方法400のフローチャートを表す。いくつかの実施形態において、方法400に関連した動作の1つ以上は、図1のシステム300によって行われてよい。より具体的には、例えば、方法400は、システム300のファザー302によって行われてよい。
代替的に、又は追加的に、方法400は、如何なる適切なシステム、装置、又はデバイスによっても行われてよい。例えば、システム600のプロセッサ610(図6を参照。)が、方法400に関連した動作の1つ以上を実行してよい。たとえ別個のブロックにより表されているとしても、方法400のブロックの1つ以上に関連したステップ及び動作は、所望の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、又は削除されてもよい。
ブロック402で、テスト・ケースが識別されてよく、方法400はブロック404へ進んでよい。いくつかの実施形態において、待ち行列(queue)がテスト・ケースを含んでよく、テスト・ケースは、それらのテスト・ケースに割り当てられている優先度に基づき試験のために識別されてよい。よって、そのような実施形態では、待ち行列内で最も高い優先度を有しているテスト・ケースが、試験のために識別されてよい。例えば、テスト・ケースは、システム600のプロセッサ610(図6を参照。)により決定(例えば、識別)されてよい。
例えば、1つ又は複数のシード・テスト・ケースを含むいくつかの実施形態では、グレーボックス・ファザー(例えば、図3のファザー302)は、入力をミューテートし、最も高い優先度を有している1つ又は複数のケースを、再びミューテートされるように選択してよい。いくつかの実施形態に従って、優先度(例えば、高又は低)は、適応度関数(fitness function)によって決定されてよい。
更に、少なくともいくつかの実施形態では、テスト・ケースに基づき、競合するペアの組を含むプログラムの2つ以上のブランチは、テスト・ケースが高優先度のテスト・ケース(“優先テスト・ケース”とも呼ばれる。)又は低優先度のテスト・ケースであるかどうかを判定するよう(例えば、図3のファザー302のような、グレーボックス・ファザーにより)解析されてよい。例えば、解析は、ブロック404及び408を参照して以下でより詳細に記載されるように、第1ビットマップ及び第2ビットマップの夫々が新しいビットを含むか否かを判定することを含んでよい。
例えば、ブロック404で、第1ビットマップ内の新しいビットが生成されているか否かに関して決定がなされてよい。第1ビットマップ内の新しいビットが生成されていない場合には、方法400はブロック406へ進んでよい。第1ビットマップ内の新しいビットが生成されていた場合には、方法400はブロック408へ進んでよい。いくつかの実施形態において、第1ビットマップはAFLタイプのビットマップを含んでよい。
例えば、ブロック404で、1つのビット(例えば、0又は1)に基づき、新しい条件が競合において起きた(例えば、新しいビットが生成された)か否かが判定されてよい。より具体的には、例えば、ビットマップは、どの1つ以上のブランチが探索されたかを記録してよい。更に、例えば、ファザー(例えば図3のファザー302)がテスト入力(又は“テスト・ケース”若しくは“テスト・ベクトル”)を用いてプログラムを実行し、トレースを記録する場合に、ビットマップが新しいビットを含む(例えば、新しいブランチが発見された)かどうかが判定されてよい。新しいブランチを発見するテスト・ケースは、(再びミューテートされるよう)より高い優先度を割り当てられてよい。例えば、システム600のプロセッサ610(図6を参照。)が、第1ビットマップ内の新しいビットが生成されているか否を判定してよい。
ブロック406で、テスト・ケースは捨てられてよい。いくつかの実施形態において、方法400は、(例えば、テスト・ケースが捨てられた後に)ブロック402へ戻ってよい。
ブロック408で、第2ビットマップ内の新しいビットが生成されているか否かに関して決定がなされてよい。第2ビットマップ内の新しいビットが生成されていない場合には、方法400はブロック410へ進んでよい。第2ビットマップ内の新しいビットが生成されていた場合には、方法400はブロック412及びブロック414の夫々へ進んでよい。例えば、システム600のプロセッサ610(図6を参照。)が、第2ビットマップの新しいビットが生成されているか否を判定してよい。
例えば、少なくともいくつかの実施形態では、第1ビットマップは、(例えば、プログラム全体における)発見された1つ以上のブランチを記録してよい。更に、第2ビットマップは、同じようにして、共有メモリにおけるブランチを決定してよい。テスト・ケースが第2ビットマップにおいて新しいビットを発見する(例えば、共有メモリにおいて新しいブランチを発見する)場合に、そのテスト・ケースは、並行性バグを発見することにとって興味深いものであり得る。テスト・ケースが興味深いものであるということで、そのテスト・ケースは、異なるスケジューリング・ポリシーでの更なる検査のために、(例えば、ブロック412で)モデル・チェッカー/アクティブ試験ツールへ送られてよい。更に、テスト・ケースは、ミューテートされるよう(例えば、ブロック414で)より高い優先度を割り当てられてよい。
ブロック410で、テスト・ケースは、低い優先度を割り当てられてよく、方法400はブロック416へ進んでよい。例えば、テスト・ケースは、テスト・ケース待ち行列の一番下に又はその近くに位置付けられてよい。例えば、システム600のプロセッサ610(図6を参照。)が、テスト・ケースに低い優先度を割り当ててよい。
ブロック412で、テスト・ケースは並行性確認モジュールへ送られてよい。例えば、テスト・ケースは並行性確認モジュール304(図3を参照。)へ送られてよく、並行性確認モジュール304はモデル・チェッカー及び/又はアクティブ試験ツールを含んでよい。
ブロック414で、テスト・ケースは、高い優先度を割り当てられてよく、方法400はブロック416へ進んでよい。例えば、テスト・ケースは、テスト・ケース待ち行列の一番上に又はその近くに位置付けられてよい。例えば、システム600のプロセッサ610(図6を参照。)が、テスト・ケースに高い優先度を割り当ててよい。
ブロック416で、テスト・ケースはミューテートされてよく、方法400はブロック402へ戻ってよい。例えば、システム600のプロセッサ610(図6を参照。)がテスト・ケースをミューテートしてよい。
変更、追加、又は削除は、本開示の適用範囲から逸脱することなしに、方法400に対して行われてよい。例えば、方法400の動作は別の順序で実施されてよい。更に、説明されている動作及びアクションは、単に例として与えられており、動作及びアクションの一部は、開示されている実施形態の本質から外れることなしに、任意であっても、より少ない動作及びアクションへとまとめられても、又は更なる動作及びアクションに拡張されてもよい。例えば、いくつかの実施形態において、方法400は、共有メモリへのプログラムの夫々のリード及びライト・アクセスについてインストルメントすることを含んでよい。
図5は、2つのスレッド、すなわち、スレッド502(“Thread1”)及びスレッド504(“Thread2”)、を含むプログラムの例となるソースコード500を表す。例えば、第2ビットマップ(例えば、競合するペアの組についてのビットマップ)に焦点を当てると、テスト・ケースy=3又はy=7において、フローはロケーションA(“Location A”)からロケーション(“Location B”)へ進む。この例では、新しいブランチは、第2ビットマップではなく第1ビットマップにおいて発見される。別の言い方をすれば、第1ビットマップは新しいビットを含むが、第2ビットマップは新しいビットを含まない。然るに、この例では、テスト・ケースは、競合検出にとって興味深いものではなく、テスト・ケースは低い優先度を与えられ得る。しかし、他の例として、例えば、y=18では、フローはロケーションAからロケーションBへ、そしてロケーションBからロケーションC(“Location C”)へ進む。この例では、新しいブランチは第1ビットマップにおいて生成され、且つ、新しいブランチは第2ビットマップにおいて生成される。別の言い方をすれば、第1ビットマップは新しいビットを含み、且つ、第2ビットマップは新しいビットを含む。然るに、この例では、テスト・ケースは、競合検出にとって興味深いものであり、そして、テスト・ケースは高い優先度を与えられ得る。更に、テスト・ケースは、並行性確認モジュール304(図3を参照。)のような、並行性確認モジュール(例えば、モデル・チェッカー及び/又はアクティブ試験ツール)へ供給されてよい。
例えば、3つの入力y=3、7及び18の実行がこれより説明される。y=3の場合に、y>15及びy>3はいずれも偽であり、よって、移行シーケンスはロケーションA→ロケーションB→ロケーションF(“Location F”)である。y=7の場合に、y>15は偽であるが、y>5は真である。よって、移行シーケンスはロケーションA→ロケーションB→ロケーションE(“Location E”)→ロケーションFである。然るに、第1ビットマップと比較して、ロケーションBからロケーションEへ及びロケーションEからロケーションFへの移行を記録する2つの新しいビットがある。しかし、それらの移行は、この例では変数xしか含まない共有メモリとは無関係である。よって、第2ビットマップにおいては新しいビットがない。従って、テスト・ケースは並行性確認モジュールへ送られなくてよい。
y=18の場合に、y>15は真であり、起こり得るスケジューリング・ポリシーはThread1及びThread2に等しい優先度を与えてよい。よって、x=1は、条件文if(x!=1)の前に実行されてよく、よって、条件は偽である。この例では、移行シーケンスは、ロケーションA→ロケーションB→ロケーションD→ロケーションFであってよい。このテスト・ケースはバグを発見することができない(例えば、中止(abort)命令文はプログラムの強制終了を行い得るが、それは、第2ビットマップ内の新しい移行(例えば、ロケーションBからロケーションD)が発見され得るということで、興味深いものであると見なされ得る。)。よって、この例では、テスト・ケースは並行性確認モジュールへ送られてよい。並行性確認モジュールは、x!=1を真とするポリシーを発見することができ、よって、バグが発見され得る。
図6は、本開示の少なくとも1つの実施形態に従って、例となるコンピュータ装置600のブロック図である。コンピュータ装置600は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、タブレット・コンピュータ、携帯電話機、スマートフォン、パーソナル・デジタル・アシスタント(PDA)、電子リーダー装置、ネットワーク・スイッチ、ネットワーク・ルータ、ネットワーク・ハブ、若しくは他のネットワークキング装置、又は他の適切なコンピュータ装置を含んでよい。
コンピュータ装置600は、プロセッサ610、記憶デバイス620、メモリ630、及び通信デバイス640を含んでよい。プロセッサ610、記憶デバイス620、メモリ630、及び/又は通信デバイス640は、コンポーネントの夫々が他のコンポーネントと通信し得るように、全てが通信上結合されてよい。コンピュータ装置600は、本開示で記載される動作のいずれかを実行してよい。
一般に、プロセッサ610は、様々なハードウェア又はソフトウェア・モジュールを含む如何なる適切な特別目的又は汎用のコンピュータ、コンピューティング・エンティティ、又はプロセッシング・デバイスも含んでよく、如何なる適切な適用可能なコンピュータ可読記憶媒体に記憶されている命令も実行するよう構成されてよい。例えば、プロセッサ610は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、あるいは、プログラム命令を解釈及び/又は実行するよう及び/又はデータを処理するよう構成された他のあらゆるデジタル又はアナログ回路を含んでよい。図6では単一のプロセッサとして表されているが、プロセッサ610は、本開示で記載される動作をいくつでも個別的に又は集合的に実行するよう構成されたプロセッサをいくつでも含んでよい。
いくつかの実施形態において、プロセッサ610は、記憶デバイス620、メモリ630、又は記憶デバイス620及びメモリ630に記憶されているプログラム命令を解釈及び/又は実行し及び/又はそれに記憶されているデータを処理してよい。いくつかの実施形態において、プロセッサ610は、記憶デバイス620からプログラム命令をフェッチし、プログラム命令をメモリ630にロードしてよい。プログラム命令がメモリ630にロードされた後、プロセッサ610はプログラム命令を実行してよい。
例えば、いくつかの実施形態において、並行脆弱性を検出するプロセッシング動作の1つ以上は、プログラム命令としてデータ記憶部620に含まれてよい。プロセッサ610は、プロセッシング動作の1つ以上のプログラム命令をフェッチしてよく、プロセッシング動作のプログラム命令をメモリ630にロードしてよい。プロセッシング動作のプログラム命令がメモリ630にロードされた後、プロセッサ610はプログラム命令を実行してよく、それにより、コンピュータ装置600は、プログラム命令によって指示されるように、プロセッシング動作に関連した動作を実施してよい。
記憶デバイス620及びメモリ630は、コンピュータ実行可能命令又はデータ構造を運ぶ又は記憶しているコンピュータ可読記憶媒体を含んでよい。そのようなコンピュータ可読記憶媒体は、プロセッサ610のような汎用又は特別目的のコンピュータによってアクセスされ得る如何なる利用可能な媒体も含んでよい。例として、制限なしに、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュ・メモリ(例えば、固体状態メモリ・デバイス)、あるいは、コンピュータ実行可能命令又はデータ構造の形で所望のプログラム・コードを搬送又は記憶するために使用されてよく且つ汎用又は特別目的のコンピュータによってアクセスされ得る他のあらゆる記憶媒体を含む有形な又は非一時的なコンピュータ可読記憶媒体を含んでよい。上記の組み合わせも、コンピュータ可読記憶媒体の適用範囲内に含まれ得る。コンピュータ実行可能命令は、例えば、プロセッサ610に特定の動作又は動作群を実行させるよう構成された命令及びデータを含んでよい。
いくつかの実施形態において、記憶デバイス620及び/又はメモリ630は、並行脆弱性検出に関連したデータ、より具体的には、ソースコード、プログラム、入力、ビット、ビットマップ、テスト入力待ち行列、などに関連したデータを記憶してよい。
通信デバイス640は、コンピュータ装置600と他の電子機器との間の通信を助ける又は可能にするよう構成された如何なるデバイス、システム、コンポーネント、又はコンポーネントの集合も含んでよい。例えば、通信デバイス640は、制限なしに、モデム、ネットワーク・カード(無線若しくは有線)、赤外線通信デバイス、光通信デバイス、無線通信デバイス(例えば、アンテナ)、及び/又はチップセット(例えば、Bluetooth(登録商標)デバイス、802.6デバイス(例えば、メトロポリタン・エリア・ネットワーク(MAN))、Wi-Fiデバイス、WiMAXデバイス、セルラー通信設備、など)、及び/又は同様のものを含んでよい。通信デバイス640は、いくつかの例を挙げると、セルラー・ネットワーク、Wi-Fiネットワーク、MAN、光ネットワーク、などのような如何なるネットワーク、及び/又は遠隔デバイスを含む、本開示で記載される他のあらゆるデバイスともデータが交換されることを可能にし得る。
変更、追加、又は省略は、本開示の適用範囲から逸脱することなしに、図6に対して行われてよい。例えば、コンピュータ装置600は、本開示で例示及び記載されているものよりも多い又は少ない要素を含んでよい。例えば、コンピュータ装置600は、タブレット又は携帯電話機の画面のような、組み込まれた表示装置を含んでよく、あるいは、コンピュータ装置600から離れており、それと通信上結合され得る外付けモニタ、プロジェクタ、テレビ受像機、又は他の適切な表示装置を含んでよい。
本開示で使用されるように、語“モジュール”又は“コンポーネント”は、モジュール若しくはコンポーネントの動作を実行するよう構成された特定のハードウェア実施、並びに/又はコンピューティング・システムの汎用ハードウェア(例えば、コンピュータ可読媒体、プロセッシング・デバイス、など)によって記憶及び/若しくは実行され得るソフトウェア・オブジェクト若しくはソフトウェア・ルーチンを指し得る。いくつかの実施形態において、本開示で記載される種々のコンポーネント、モジュール、エンジン、及びサービスは、コンピューティング・システムで(例えば、別個のスレッドとして)実行するオブジェクト又はプロセスとして実装されてよい。本開示で記載されるシステム及び方法の一部は、概して、(汎用ハードウェアによって記憶及び/又は実行される)ソフトウェアにおいて実装されるものとして記載されているが、特定のハードウェア実施、又はソフトウェア及び特定のハードウェア実施の組み合わせも可能であり、考えられている。本開示において、“コンピューティング・エンティティ”は、本開示で以前に定義されたあらゆるコンピューティング・システム、又はコンピューティング・システムで実行されるあらゆるモジュール若しくはモジュールの組み合わせであってよい。
本開示で、特に添付の特許請求の範囲(例えば、添付の特許請求の本文)で使用される語は、一般的に、“非限定的な(open)”用語として意図されている(例えば、語「含んでいる(including)」は、“~を含んでいるが、~に制限されない”との意に解釈されるべきであり、語「備えている(having)」は、“少なくとも~を備えている”との意に解釈されるべきであり、語「含む(includes)」は、“~を含むが、~に制限されない”との意に解釈されるべきである、など。)。
加えて、導入されたクレーム記載(introduced claim recitation)において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しない。例えば、理解を促すために、後続の添付された特許請求の範囲では、「少なくとも1つの(at least one)」及び「1つ以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって、「a」又は「an」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「1つ以上の」又は「少なくとも1つの」といった導入句と「a」又は「an」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を1しか含まない例に限定されるということが示唆されると解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである。)。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。
更には、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、通常、少なくとも記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう(例えば、他に修飾語のない、単なる「2つの記載事項」という記載がある場合、この記載は、少なくとも2つの記載事項、又は2つ以上の記載事項を意味する。)。更に、「A、B及びCなどのうち少なくとも1つ」又は「A、B及びCなどのうちの1つ以上」に類する表記が使用される場合、一般的に、そのような構造は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、及び/又はAとBとCの全て、などを含むよう意図される。
更に、2つ以上の選択可能な用語を表す如何なる離接語及び/又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの1つ、それらの用語のうちのいずれか、あるいは、それらの用語の両方を含む可能性を意図すると理解されるべきである。例えば、「A又はB」という句は、「A又はB」、あるいは、「A及びB」の可能性を含むことが理解されるべきである。
本開示で挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び本発明を読者が理解するのを助ける教育上の目的を意図され、そのような具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本開示の実施形態が詳細に記載されてきたが、様々な変更、置換、及び代替が、本開示の主旨及び適用範囲から逸脱することなしに行われてよい。
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
並行脆弱性を識別する方法であって、
共有メモリへのプログラムのリード及びライト・アクセスをインストルメントすることと、
グレーボックス・ファザーにより前記プログラムのテスト・ケースを識別することと、
前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラムの2つ以上のブランチを解析することと、
前記テスト・ケースが優先テスト・ケースであることに応答して、該テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給することと、
前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することと
を有する方法。
(付記2)
前記テスト・ケースを前記並行性確認モジュールへ供給することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つへ前記テスト・ケースを供給することを含む、
付記1に記載の方法。
(付記3)
前記プログラムの前記2つ以上のブランチを解析することは、
前記テスト・ケースが第1ビットマップ及び第2ビットマップの夫々で新しいビットを生成するかどうかを判定することと、
前記テスト・ケースが前記第1ビットマップ及び前記第2ビットマップの夫々で新しいビットを生成する場合に、前記テスト・ケースを優先テスト・ケースとして識別することと
を有する、
付記1に記載の方法。
(付記4)
前記プログラムのブランチを解析することは、競合指向型のカバレッジ誘導グレーボックス・ファザーにより前記ブランチを解析することを含む、
付記1に記載の方法。
(付記5)
1つ以上の並行脆弱性を識別するよう前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つにより前記テスト・ケースを試験することを含む、
付記1に記載の方法。
(付記6)
前記テスト・ケースが優先テスト・ケースであることに応答して、テスト・ケース優先度付き待ち行列の一番上に又はその近くに前記テスト・ケースを位置付ける
付記1に記載の方法。
(付記7)
前記テスト・ケースが優先テスト・ケースでないことに応答して、
前記テスト・ケースを低優先テスト・ケースとして指定し、
テスト・ケース優先度付き待ち行列の一番下に又はその近くに前記テスト・ケースを位置付ける
付記1に記載の方法。
(付記8)
1つ以上のプロセッシング・システムによって実行される場合に、該プロセッシング・システムに、
共有メモリへのプログラムのリード及びライト・アクセスをインストルメントすることと、
グレーボックス・ファザーにより前記プログラムのテスト・ケースを識別することと、
前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラムの2つ以上のブランチを解析することと、
前記テスト・ケースが優先テスト・ケースであることに応答して、該テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給することと、
前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することと
を有する動作を実行させる命令を含む
1つ以上の非一時的なコンピュータ可読媒体。
(付記9)
前記テスト・ケースを前記並行性確認モジュールへ供給することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つへ前記テスト・ケースを供給することを含む、
付記8に記載のコンピュータ可読媒体。
(付記10)
前記プログラムの前記2つ以上のブランチを解析することは、
前記テスト・ケースが第1ビットマップ及び第2ビットマップの夫々で新しいビットを生成するかどうかを判定することと、
前記テスト・ケースが前記第1ビットマップ及び前記第2ビットマップの夫々で新しいビットを生成する場合に、前記テスト・ケースを優先テスト・ケースとして識別することと
を有する、
付記8に記載のコンピュータ可読媒体。
(付記11)
前記プログラムのブランチを解析することは、競合指向型のカバレッジ誘導グレーボックス・ファザーにより前記ブランチを解析することを含む、
付記8に記載のコンピュータ可読媒体。
(付記12)
1つ以上の並行脆弱性を識別するよう前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つにより前記テスト・ケースを試験することを含む、
付記8に記載のコンピュータ可読媒体。
(付記13)
前記テスト・ケースが優先テスト・ケースであることに応答して、テスト・ケース優先度付き待ち行列の一番上に又はその近くに前記テスト・ケースを位置付ける
付記8に記載のコンピュータ可読媒体。
(付記14)
前記テスト・ケースが優先テスト・ケースでないことに応答して、
前記テスト・ケースを低優先テスト・ケースとして指定し、
テスト・ケース優先度付き待ち行列の一番下に又はその近くに前記テスト・ケースを位置付ける
付記8に記載のコンピュータ可読媒体。
(付記15)
共有メモリへのプログラムのリード及びライト・アクセスをインストルメントし、
グレーボックス・ファザーにより前記プログラムのテスト・ケースを識別し、
前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラムの2つ以上のブランチを解析し、
前記テスト・ケースが優先テスト・ケースであることに応答して、該テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給し、
前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験する
よう構成された1つ以上のプロセッシング・ユニットを有する
システム。
(付記16)
前記並行性確認モジュールは、モデル・チェッカー及びアクティブ試験ツールのうちの1つを有する、
付記15に記載のシステム。
(付記17)
前記プログラムの前記2つ以上のブランチを解析するよう、前記1つ以上のプロセッシング・ユニットは、
前記テスト・ケースが第1ビットマップ及び第2ビットマップの夫々で新しいビットを生成するかどうかを判定し、
前記テスト・ケースが前記第1ビットマップ及び前記第2ビットマップの夫々で新しいビットを生成する場合に、前記テスト・ケースを優先テスト・ケースとして識別する
よう構成される、
付記15に記載のシステム。
(付記18)
前記グレーボックス・ファザーは、競合指向型のカバレッジ誘導グレーボックス・ファザーを有する、
付記15に記載のシステム。
(付記19)
前記テスト・ケースが優先テスト・ケースでないことに応答して、前記1つ以上のプロセッシング・ユニットは、テスト・ケース優先度付き待ち行列の一番下に又はその近くに前記テスト・ケースを位置付けるよう構成される、
付記15に記載のシステム。
(付記20)
前記テスト・ケースが優先テスト・ケースであることに応答して、前記1つ以上のプロセッシング・ユニットは、テスト・ケース優先度付き待ち行列の一番上に又はその近くに前記テスト・ケースを位置付けるよう構成される、
付記15に記載のシステム。
300 システム
302 ファザー
304 並行性確認モジュール
600 コンピュータ装置
610 プロセッサ
620 記憶デバイス
630 メモリ
640 通信デバイス

Claims (20)

  1. 並行脆弱性を識別する方法であって、
    共有メモリへのプログラムのリード及びライト・アクセスをインストルメントすることと、
    グレーボックス・ファザーにより前記プログラムのテスト・ケースを識別することと、
    前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラム2つ以上のブランチによって解析することと、
    前記テスト・ケースが優先テスト・ケースであることに応答して、該テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給することと、
    前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することと
    を有する方法。
  2. 前記テスト・ケースを前記並行性確認モジュールへ供給することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つへ前記テスト・ケースを供給することを含む、
    請求項1に記載の方法。
  3. 前記プログラム前記2つ以上のブランチによって解析することは、
    前記テスト・ケースが第1ビットマップ及び第2ビットマップの夫々で新しいビットを生成するかどうかを判定することと、
    前記テスト・ケースが前記第1ビットマップ及び前記第2ビットマップの夫々で新しいビットを生成する場合に、前記テスト・ケースを優先テスト・ケースとして識別することと
    を有する、
    請求項1に記載の方法。
  4. 前記プログラムのブランチを解析することは、競合指向型のカバレッジ誘導グレーボックス・ファザーにより前記ブランチを解析することを含む、
    請求項1に記載の方法。
  5. 1つ以上の並行脆弱性を識別するよう前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つにより前記テスト・ケースを試験することを含む、
    請求項1に記載の方法。
  6. 前記テスト・ケースが優先テスト・ケースであることに応答して、テスト・ケース優先度付き待ち行列の一番上に前記テスト・ケースを位置付ける
    請求項1に記載の方法。
  7. 前記テスト・ケースが優先テスト・ケースでないことに応答して、
    前記テスト・ケースを低優先テスト・ケースとして指定し、
    テスト・ケース優先度付き待ち行列の一番下に前記テスト・ケースを位置付ける
    請求項1に記載の方法。
  8. 1つ以上のプロセッシング・システムによって実行される場合に、該プロセッシング・システムに、
    共有メモリへのプログラムのリード及びライト・アクセスをインストルメントすることと、
    グレーボックス・ファザーにより前記プログラムのテスト・ケースを識別することと、
    前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラム2つ以上のブランチによって解析することと、
    前記テスト・ケースが優先テスト・ケースであることに応答して、該テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給することと、
    前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することと
    を有する動作を実行させる命令を含む
    1つ以上の非一時的なコンピュータ可読媒体。
  9. 前記テスト・ケースを前記並行性確認モジュールへ供給することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つへ前記テスト・ケースを供給することを含む、
    請求項8に記載のコンピュータ可読媒体。
  10. 前記プログラム前記2つ以上のブランチによって解析することは、
    前記テスト・ケースが第1ビットマップ及び第2ビットマップの夫々で新しいビットを生成するかどうかを判定することと、
    前記テスト・ケースが前記第1ビットマップ及び前記第2ビットマップの夫々で新しいビットを生成する場合に、前記テスト・ケースを優先テスト・ケースとして識別することと
    を有する、
    請求項8に記載のコンピュータ可読媒体。
  11. 前記プログラムのブランチを解析することは、競合指向型のカバレッジ誘導グレーボックス・ファザーにより前記ブランチを解析することを含む、
    請求項8に記載のコンピュータ可読媒体。
  12. 1つ以上の並行脆弱性を識別するよう前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験することは、モデル・チェッカー及びアクティブ試験ツールのうちの1つにより前記テスト・ケースを試験することを含む、
    請求項8に記載のコンピュータ可読媒体。
  13. 前記テスト・ケースが優先テスト・ケースであることに応答して、テスト・ケース優先度付き待ち行列の一番上に前記テスト・ケースを位置付ける
    請求項8に記載のコンピュータ可読媒体。
  14. 前記テスト・ケースが優先テスト・ケースでないことに応答して、
    前記テスト・ケースを低優先テスト・ケースとして指定し、
    テスト・ケース優先度付き待ち行列の一番下に前記テスト・ケースを位置付ける
    請求項8に記載のコンピュータ可読媒体。
  15. 共有メモリへのプログラムのリード及びライト・アクセスをインストルメントし、
    グレーボックス・ファザーにより前記プログラムのテスト・ケースを識別し、
    前記グレーボックス・ファザーにより前記テスト・ケースに基づき、該テスト・ケースが優先テスト・ケースであるかどうかを判別するよう、競合するペアの組を含む前記プログラム2つ以上のブランチによって解析し、
    前記テスト・ケースが優先テスト・ケースであることに応答して、該テスト・ケースを前記グレーボックス・ファザーから並行性確認モジュールへ供給し、
    前記並行性確認モジュールにより、1つ以上の並行脆弱性を識別するよう、前記テスト・ケースを1つ以上のスケジューリング・ポリシーにより試験する
    よう構成された1つ以上のプロセッシング・ユニットを有する
    システム。
  16. 前記並行性確認モジュールは、モデル・チェッカー及びアクティブ試験ツールのうちの1つを有する、
    請求項15に記載のシステム。
  17. 前記プログラム前記2つ以上のブランチによって解析するよう、前記1つ以上のプロセッシング・ユニットは、
    前記テスト・ケースが第1ビットマップ及び第2ビットマップの夫々で新しいビットを生成するかどうかを判定し、
    前記テスト・ケースが前記第1ビットマップ及び前記第2ビットマップの夫々で新しいビットを生成する場合に、前記テスト・ケースを優先テスト・ケースとして識別する
    よう構成される、
    請求項15に記載のシステム。
  18. 前記グレーボックス・ファザーは、競合指向型のカバレッジ誘導グレーボックス・ファザーを有する、
    請求項15に記載のシステム。
  19. 前記テスト・ケースが優先テスト・ケースでないことに応答して、前記1つ以上のプロセッシング・ユニットは、テスト・ケース優先度付き待ち行列の一番下に前記テスト・ケースを位置付けるよう構成される、
    請求項15に記載のシステム。
  20. 前記テスト・ケースが優先テスト・ケースであることに応答して、前記1つ以上のプロセッシング・ユニットは、テスト・ケース優先度付き待ち行列の一番上に前記テスト・ケースを位置付けるよう構成される、
    請求項15に記載のシステム。
JP2018241155A 2018-05-24 2018-12-25 並行脆弱性検出 Active JP7200661B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/988934 2018-05-24
US15/988,934 US10628281B2 (en) 2018-05-24 2018-05-24 Concurrency vulnerability detection

Publications (2)

Publication Number Publication Date
JP2019204482A JP2019204482A (ja) 2019-11-28
JP7200661B2 true JP7200661B2 (ja) 2023-01-10

Family

ID=64051435

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018241155A Active JP7200661B2 (ja) 2018-05-24 2018-12-25 並行脆弱性検出

Country Status (3)

Country Link
US (1) US10628281B2 (ja)
EP (1) EP3572944B1 (ja)
JP (1) JP7200661B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983901B1 (en) * 2018-05-30 2021-04-20 Amazon Technologies, Inc. Systems and methods for fuzz testing serverless software applications
US10635576B2 (en) * 2018-06-18 2020-04-28 Fujitsu Limited Branch coverage guided symbolic execution for hybrid fuzz testing of software binaries
CN111124926B (zh) * 2019-12-25 2022-09-16 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
US11734161B2 (en) * 2020-01-31 2023-08-22 Raytheon Company System and method for fuzzing test orchestration using reinforcement learning
CN111367794B (zh) * 2020-02-25 2023-05-23 杭州世平信息科技有限公司 一种面向AFL的自适应Bitmap表调整方法及装置
CN111510839B (zh) * 2020-04-13 2021-10-29 广东思派康电子科技有限公司 一种耳机的测试方法和测试系统
CN111858307B (zh) * 2020-06-18 2024-04-19 三星(中国)半导体有限公司 模糊测试方法和设备
KR102353187B1 (ko) * 2020-08-14 2022-01-20 국방과학연구소 퍼징에서 시드 파일을 스케줄링 하는 방법 및 이를 위한 장치
US11822673B2 (en) * 2021-08-05 2023-11-21 International Business Machines Corporation Guided micro-fuzzing through hybrid program analysis
CN113806750B (zh) * 2021-09-24 2024-02-23 深信服科技股份有限公司 文件安全风险检测方法、模型的训练方法、装置和设备
US20230142345A1 (en) * 2021-11-05 2023-05-11 Blackberry Limited Detecting software vulnerabilities in a binary code
CN113992433B (zh) * 2021-12-24 2022-03-25 杭州海康威视数字技术股份有限公司 基于变异策略的网络设备并发模糊测试方法及装置
CN114553490B (zh) * 2022-01-25 2024-02-09 浙江木链物联网科技有限公司 工业用被动模糊测试方法、系统和可读存储介质
CN116186717B (zh) * 2023-04-26 2023-07-04 中诚华隆计算机技术有限公司 一种多线程并发漏洞检测方法和装置
CN116881919B (zh) * 2023-06-01 2024-04-19 清华大学 漏洞挖掘方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009123216A (ja) 2007-11-14 2009-06-04 Nec Lab America Inc 並行バグ用のエラートレースを生成するシステムおよび方法
JP2010003153A (ja) 2008-06-20 2010-01-07 Toshiba Corp 情報処理装置及びプログラム
JP2011515000A (ja) 2008-03-11 2011-05-12 ユニバーシティ・オブ・ワシントン 効率的な決定論的マルチプロセッシング(deterministicmultiprocessing)
JP2016167262A (ja) 2015-03-05 2016-09-15 富士通株式会社 脆弱性分析のための自律型推論システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212385A (ja) * 1996-02-02 1997-08-15 Mitsubishi Electric Corp 並列プログラムデバッグ装置
US6615166B1 (en) * 1999-05-27 2003-09-02 Accenture Llp Prioritizing components of a network framework required for implementation of technology
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US20120089873A1 (en) * 2010-08-17 2012-04-12 Nec Laboratories America, Inc. Systems and methods for automated systematic concurrency testing
EP2956860A1 (en) 2013-02-15 2015-12-23 Sabanci Üniversitesi Interleaving coverage criteria oriented testing of multi-threaded applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009123216A (ja) 2007-11-14 2009-06-04 Nec Lab America Inc 並行バグ用のエラートレースを生成するシステムおよび方法
JP2011515000A (ja) 2008-03-11 2011-05-12 ユニバーシティ・オブ・ワシントン 効率的な決定論的マルチプロセッシング(deterministicmultiprocessing)
JP2010003153A (ja) 2008-06-20 2010-01-07 Toshiba Corp 情報処理装置及びプログラム
JP2016167262A (ja) 2015-03-05 2016-09-15 富士通株式会社 脆弱性分析のための自律型推論システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BOHME, M et al.,Coverage-Based Greybox Fuzzing as Markov Chain,IEEE Transactions on Software Engineering [online],IEEE,2017年,Vol. 45, No. 5,pp. 489-506,[retrieved on 2022.07.12], Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/abstract/document/8233151>,<DOI: 10.1109/TSE.2017.2785841>
SUTTON, M ほか著, 伊藤裕之 ほか訳,「ファジング ブルートフォースによる脆弱性発見手法 ランダムデータの自動注入によるセキュリティテストの実際」,第1版,日本,株式会社毎日コミュニケーションズ,2008年,pp. 3-28, 161-171,ISBN 978-4-8399-2629-8

Also Published As

Publication number Publication date
US10628281B2 (en) 2020-04-21
EP3572944B1 (en) 2022-04-20
EP3572944A1 (en) 2019-11-27
JP2019204482A (ja) 2019-11-28
US20190361789A1 (en) 2019-11-28

Similar Documents

Publication Publication Date Title
JP7200661B2 (ja) 並行脆弱性検出
EP3956773B1 (en) Program execution coverage expansion by selective data capture
JP7230572B2 (ja) ソフトウェアバイナリのハイブリッドファズテストのための、分岐網羅によりガイドされる記号実行
US8850581B2 (en) Identification of malware detection signature candidate code
JP6583838B2 (ja) アプリケーションのシミュレーション
US9436449B1 (en) Scenario-based code trimming and code reduction
US10353809B2 (en) System and method for executing integration tests in multiuser environment
Mercaldo et al. Hey malware, i can find you!
US11204859B2 (en) Partial-results post-silicon hardware exerciser
CN110741354A (zh) 呈现代码实体调用之间的差异
Beaman et al. Fuzzing vulnerability discovery techniques: Survey, challenges and future directions
WO2022180702A1 (ja) 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法
US9329979B2 (en) Derivation of generalized test cases
JP6976064B2 (ja) モデルチェックのためのデータ構造抽象化
US9507693B2 (en) Method, device and computer-readable storage medium for closure testing
US10176086B2 (en) Event-driven software test sequence determination
US11474795B2 (en) Static enforcement of provable assertions at compile
CN108874656A (zh) 代码测试方法、装置、可读存储介质及计算机设备
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
US10528691B1 (en) Method and system for automated selection of a subset of plurality of validation tests
US11307962B2 (en) Method for semantic preserving transform mutation discovery and vetting
US11057416B2 (en) Analyze code that uses web framework using local parameter model
Ferreira et al. Android testing crawler
Underwood et al. In search of shotgun parsers in android applications
US10324822B1 (en) Data analytics in a software development cycle

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220808

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221205

R150 Certificate of patent or registration of utility model

Ref document number: 7200661

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150