JP7474761B2 - ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法 - Google Patents

ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法 Download PDF

Info

Publication number
JP7474761B2
JP7474761B2 JP2021529701A JP2021529701A JP7474761B2 JP 7474761 B2 JP7474761 B2 JP 7474761B2 JP 2021529701 A JP2021529701 A JP 2021529701A JP 2021529701 A JP2021529701 A JP 2021529701A JP 7474761 B2 JP7474761 B2 JP 7474761B2
Authority
JP
Japan
Prior art keywords
computing system
machine
readable instructions
client computing
instance
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
JP2021529701A
Other languages
English (en)
Other versions
JP2022510165A (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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of JP2022510165A publication Critical patent/JP2022510165A/ja
Application granted granted Critical
Publication of JP7474761B2 publication Critical patent/JP7474761B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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/3692Test management for test results analysis
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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

Landscapes

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

Description

本出願は、その内容全体が参照により本明細書に組み込まれる、2018年11月26日に出願された「Systems and Methods for Training Bug Detection Algorithms」という名称の米国仮出願第62/771,345号の利益を主張する。
本開示は、ソフトウェア・バグ検出のためのシステム及び方法に関し、より詳細には、計算システム及びソフトウェア内の弱点の利用を可能にし、ひいてはシステム及びソフトウェアのコンプロマイズ(compromise)を可能にするシステム及び方法に関する。したがって、脆弱性(たとえば、ソフトウェア・バグ)を動的に識別し、前記脆弱性を利用し、前記脆弱性を改善するために、エンド・ユーザをトレーニングする必要がある。
計算システムは、第三者によって引き起こされる悪意のある操作に対して脆弱であり、システム又はソフトウェア内の弱点の利用を可能にし、ひいてはシステム又はソフトウェアのコンプロマイズを可能にし得る。したがって、シミュレートされるアプリケーション及びネットワーク・サービスに対する悪意のある操作を動的に識別し、それを改善するために、ユーザ及び/又はコンピュータ・システムをトレーニングするソフトウェア・バグ検出システムが必要である。
一態様では、方法は、第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することを含み、インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び第1の機械可読命令を備える。第1の機械可読命令は第1の事前定義されたソフトウェア・バグを備える。本方法は、仮想プロセッサを使用して第1の機械可読命令を実行することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、第1の機械可読命令の第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、管理計算システムに、第1の入力に関連する第1の信号を送信することを含み、第1の信号は、管理計算システムによる検証に応答して、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。
別の態様では、方法は、第1のクライアント計算システムを使用して、管理計算システムからのインスタンスを受信すること含み、インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び第1の機械可読命令を備える。第1の機械可読命令は第1の事前定義されたソフトウェア・バグを備える。本方法は、仮想プロセッサを使用して第1の機械可読命令を実行することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、第1の機械可読命令の第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、管理計算システムに、第1の入力に関連する第1の信号を送信することを含み、第1の信号が、管理計算システムによる検証に応答して、管理計算システムに第1のクライアント計算システムに関連するスコアを生成させる。
また別の態様では、方法は、管理計算システムを使用して、第1のクライアント計算システムに第1のインスタンスを送信することを含み、第1のインスタンスは管理計算システムの計算リソースの第1のパーティションを含む。計算リソースの第1のパーティションは第1の仮想プロセッサ及び第1の機械可読命令を備える。第1の機械可読命令は第1の事前定義されたソフトウェア・バグを備える。本方法は、管理計算システムを使用して、第1のクライアント計算システムによって受信される第1の入力に関連する第1の信号を受信することを含み、第1の入力は第1の機械可読命令の第1の事前定義されたソフトウェア・バグの識別を示す。本方法は、管理計算システムを使用して第1の信号を検証することを含む。本方法は、管理計算システムを使用して、第1の信号の検証に応答して、第1のクライアント計算システムに関連する第1のスコアを増加させることを含む。
また別の態様では、システムは、1つ又は複数のプロセッサと、機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体とを含み、機械可読命令は、実行されたとき、1つ又は複数のプロセッサに、管理計算システムからのインスタンスを受信させる。インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び機械可読命令の第1のセットを含む。機械可読命令の第1のセットは第1の事前定義されたソフトウェア・バグを含む。機械可読命令を実行することは、1つ又は複数のプロセッサに機械可読命令の第1のセットを実行させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、機械可読命令の第1のセットの第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、管理計算システムに、第1の入力に関連する第1の信号を送信させ、第1の信号は、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。
また別の態様では、機械学習システムは、1つ又は複数のプロセッサと、機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体とを含み、機械可読命令は、実行されたとき、1つ又は複数のプロセッサに、管理計算システムからのインスタンスを受信させる。インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び機械可読命令の第1のセットを含む。機械可読命令の第1のセットは第1の事前定義されたソフトウェア・バグを含む。機械可読命令を実行することは、1つ又は複数のプロセッサに機械可読命令の第1のセットを実行させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、機械可読命令の第1のセットの第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、管理計算システムに、第1の入力に関連する第1の信号を送信させ、第1の信号は、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。
また別の態様では、方法は、第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することを含む。インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び機械可読命令の第1のセットを含む。機械可読命令の第1のセットは第1の事前定義されたソフトウェア・バグを含む。計算リソースのパーティションは機械可読命令の第2のセットを含む。機械可読命令の第2のセットは第2の事前定義されたソフトウェア・バグを含む。機械可読命令の第2のセットは、第1のクライアント計算システム及び管理計算システムに通信可能に結合された第2のクライアント計算システムに関連する。本方法は、仮想プロセッサを使用して機械可読命令の第1のセットを実行することを含み、機械可読命令の第1のセットを実行することは、仮想プロセッサを使用して、機械可読命令の第1のセットの第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信することを含む。機械可読命令の第1のセットを実行することは、仮想プロセッサを使用して、管理計算システムに、第1の入力に関連する第1の信号を送信することを含み、第1の信号は、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。機械可読命令の第1のセットを実行することは、仮想プロセッサを使用して、機械可読命令の第2のセットの第2の事前定義されたソフトウェア・バグの識別を示す第2の入力を受信することを含む。機械可読命令の第1のセットを実行することは、仮想プロセッサを使用して、管理計算システムに、第2の入力に関連する第2の信号を送信することを含み、第2の信号は、管理計算システムに、第1のクライアント計算システムに関連するスコアを増加させる。本方法は、第1のクライアント計算システムを使用してユーザ・インターフェースを表示することを含む。ユーザ・インターフェースは、第1のユーザ・インターフェース要素の選択に応答して、仮想プロセッサに第1の入力を受信させる第1のユーザ・インターフェース要素を備える。ユーザ・インターフェースは、第2のユーザ・インターフェース要素の選択に応答して、仮想プロセッサに第2の入力を受信させる第2のユーザ・インターフェース要素を含む。ユーザ・インターフェースはテキスト・ユーザ・インターフェース要素を含む。本方法は、第1のクライアント計算システムを使用してテキスト・ユーザ・インターフェース要素内でバイナリ・ファイルを表示することを含み、バイナリ・ファイルは、機械可読命令の第1のセットからなるセット、及び機械可読命令の第2のセットからなるセットのうちの1つを表す。
本技術のこれらの及び他の特徴、及び特性、並びに、動作の方法、及び構造の関係する要素の機能、及び部品の組合せ及び製造の経済は、様々な図において同様の参照番号が対応する部分を指定する、それのすべてが本明細書の一部を形成する、添付の図面を参照しながら、以下の説明及び添付の特許請求の範囲を検討すると、より明らかになろう。しかしながら、図面は、例示及び説明の目的のみのためであり、本開示の限界の定義として意図されないことが明確に理解されるべきである。本明細書において及び特許請求の範囲において使用される際、「a」、「an」、及び「the」の単数形は、コンテキストが別段に明らかに規定しない限り、複数の指示対象を含む。
図面中に記載されている実施例は、本質において説明的で例示例であり、特許請求の範囲によって定義された主題を限定するものではない。例示的な実施例の以下の詳細な説明は、同様の構造が同様の参照番号で示されている、以下の図面とともに読まれたときに理解され得る。
本明細書で図示し、説明する1つ又は複数の実施例による例示的なソフトウェア・バグ検出システムを概略的に示す図である。 本明細書で図示し、説明する1つ又は複数の実施例による例示的なソフトウェア・バグ検出システム内に含まれている例示的なモジュール及び構成要素の機能ブロック図を概略的に示す図である。 本明細書で図示し、説明する1つ又は複数の実施例による別の例示的なソフトウェア・バグ検出システム内に含まれている例示的なモジュール及び構成要素の機能ブロック図を概略的に示す図である。 本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムの複数のコンテナを展開する例示的な方法の流れ図を示す図である。 本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムの管理計算システムの例示的なユーザ・インターフェースを概略的に示す図である。 本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのインスタンスのソフトウェア・バグを識別する例示的な方法の流れ図を示す図である。 本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのインスタンスのソフトウェア・バグを識別する例示的な方法の流れ図を示す図である。 本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのシミュレーション・セッション中にクライアント計算システムにソフトウェア・バグを動的に展開する管理計算システムの例示的な方法の流れ図を示す図である。 本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのクライアント計算システムの例示的なユーザ・インターフェースを概略的に示す図である。
図を参照すると、本開示の実施例は、一般に、複数のクライアント計算システムを使用して、事前定義されたソフトウェア・バグを識別するために、ユーザ又はコンピュータ・システムをトレーニングするためのデバイス、システム、及び方法を対象にしている。実施例では、管理計算システムが複数のクライアント計算システムに通信可能に結合され、管理計算システムはクライアント計算システムの各々に仮想計算リソースを展開する。仮想計算リソースは、それぞれ、仮想プロセッサによって実行可能である機械可読命令を含み得、機械可読命令の各々は、展開の前に管理計算システムのアドミニストレータによって定義される1つ又は複数のソフトウェア・バグを含み得る。
シミュレーション・セッション中に、クライアント計算システムの各々のユーザ(又はクライアント計算システムがトレーニングされている実施例ではクライアント計算システム自体)は、それらのそれぞれの展開される機械可読命令を評価し、事前定義されたソフトウェア・バグの位置を特定し、補正し、補正された事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システムのユーザが、事前定義されたソフトウェア・バグを適切に補正したことを、管理計算システムが検証したことに応答して、管理計算システムは、対応するクライアント計算システムに関連するスコアを増加させる。
同様に、クライアント計算システムの各々のユーザ(又はクライアント計算システムがトレーニングされている実施例ではクライアント計算システム自体)は、他のクライアント計算システムに展開される機械可読命令を評価し、他のクライアント計算システムの事前定義されたソフトウェア・バグの位置を特定し、利用し、利用される事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システムのユーザが、事前定義されたソフトウェア・バグを適切に利用したことを、管理計算システムが検証したことに応答して、管理計算システムは、対応するクライアント計算システムに関連するスコアを増加させる。
シミュレーション・セッションが完了すると、管理計算システムは、複数の計算システムの各クライアント計算システムについてスコアを生成し、報告し得る。その後、管理計算システムは、クライアント計算システムの各クライアント計算システムのランク付けを示す報告をランク付けし、生成し得る。
したがって、ソフトウェア・バグ検出システムは、ユーザ及び/又はシステムが、メモリ破損問題、メモリ脆弱性問題、メモリ開示問題、情報漏洩問題、論理脆弱性問題、暗号問題など、悪意のある第三者行為により起こり得る様々な計算システム及びネットワーク問題を識別し、補正するそれらの能力を改善することを可能にする。
本明細書で使用する際、用語「ソフトウェア・バグ」は、アプリケーション・サービス及び計算システムのネットワークのうちの少なくとも1つに関連する、エラー、不具合、障害、及び/又は脆弱性を指す。本明細書で使用する際、用語「事前定義されたソフトウェア・バグ」は、アプリケーション・サービス及び計算システムのネットワークのうちの少なくとも1つに関連する、エラー、不具合、障害、及び/又は脆弱性のリストから選択されるエラー、不具合、障害、及び/又は脆弱性を指す。
次に図1を参照すると、ソフトウェア・バグ検出システム10が概略的に示されている。実施例では、ソフトウェア・バグ検出システム10は、管理計算システム20と、(まとめてクライアント計算システム30と呼ばれる)第1のクライアント計算システム30-1と、第2のクライアント計算システム30-2と、第3のクライアント計算システム30-3とを含む。3つのクライアント計算システム30が示されているが、ソフトウェア・バグ検出システム10は、他の実施例では任意の数のクライアント計算システム30を含み得ることを理解すべきである。クライアント計算システム30と管理計算システムとはネットワーク80を介して通信可能に結合され得る。
図1に示されているように、管理計算システム20は、アドミニストレータ40によって動作させられ、制御され得る。さらに、第1のクライアント計算システム30-1は、ユーザ50-1によって動作させられ、制御され得、第2のクライアント計算システム30-2は、ユーザ50-2によって動作させられ、制御され得、第3のクライアント計算システム30-3は、ユーザ50-3によって動作させられ、制御され得る。ソフトウェア・バグ検出システム10は、クライアント計算システム30が、(まとめてユーザ50と呼ばれる)ユーザ50-1、50-2、50-3によって動作させられ、制御されることを示すが、クライアント計算システム30の動作及び制御は、ユーザとの対話なしにクライアント計算システム30によって部分的に又は完全に実行され得ることを理解すべきである。非限定的な実例として、クライアント計算システム30は、1つ若しくは複数の機械学習及び/又は1つ若しくは複数のディープ・ラーニング・アルゴリズムを使用して、及びユーザ50からの入力なしに、本明細書で説明する機能を実行する人工知能(AI:artificial intelligence)計算システムであり得る。
実施例では、アドミニストレータ40は、管理計算システム20を使用して、クライアント計算システム30の各々に仮想計算リソースを展開する。仮想計算リソースは、それぞれ、仮想プロセッサによって実行可能である機械可読命令を含み得、機械可読命令の各々は、以下でさらに詳細に説明するように、展開の前にアドミニストレータ40又は管理計算システム20によって定義される1つ又は複数のソフトウェア・バグを含み得る。
様々な実施例では、アドミニストレータ40は、管理計算システム20を使用して、シミュレーション・セッションの様々なパラメータと、クライアント計算システム30の各々に展開される仮想計算リソースとを定義し得る。非限定的な実例として、以下で図3A~図3Bを参照しながらさらに詳細に説明するように、アドミニストレータ40は、ユーザ50の各々を特定のクライアント計算システム30に割り当て、クライアント計算システム30の各々に展開される機械可読命令内に含めるためのソフトウェア・バグを定義し、シミュレーション・セッションの長さを定義し得る。
シミュレーション・セッションのパラメータが定義されると、アドミニストレータ40は、管理計算システム20を使用してクライアント計算システム30に仮想計算リソースを展開し得る。以下で図4Aを参照しながらさらに詳細に説明するように、シミュレーション・セッション中に、クライアント計算システム30の各々のユーザ50(又はユーザ対話なしにクライアント計算システム30)は、それらのそれぞれの展開される機械可読命令を評価し、事前定義されたソフトウェア・バグの位置を特定し、補正し、補正された事前定義されたソフトウェア・バグを検証のために管理計算システム20にサブミットし得る。対応するクライアント計算システム30のユーザ50(又はユーザ対話なしにそれぞれのクライアント計算システム30)が、事前定義されたソフトウェア・バグを適切に補正したことを、管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システム30に関連するスコアを増加させる。
さらに、以下で図4Bを参照しながらさらに詳細に説明するように、シミュレーション・セッション中に、クライアント計算システム30の各々のユーザ50は、他のクライアント計算システム30に展開される機械可読命令を評価し、他のクライアント計算システム30の事前定義されたソフトウェア・バグの位置を特定し、利用し、利用される事前定義されたソフトウェア・バグを検証のために管理計算システム20にサブミットし得る。対応するクライアント計算システム30のユーザが、事前定義されたソフトウェア・バグを適切に利用したことを、管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システムに関連するスコアを増加させる。クライアント計算システム30の各々に展開される1つ又は複数のソフトウェア・バグは、シミュレーション・セッション中に、事前定義された時間期間の後に交替させられ得ることを理解すべきである。
シミュレーション・セッションが完了すると、管理計算システム20は、以下で図4Cを参照しながらさらに詳細に説明するように、クライアント計算システム30の各々についてスコアを生成し、報告し得る。
図2Aを参照すると、ソフトウェア・バグ検出システム10-1内に含まれている例示的なモジュール及び構成要素の機能ブロック図が概略的に示されている。図2Aに示されているように、管理計算システム20は、一般に、通信インターフェース52と、1つ又は複数のプロセッサ54と、ネットワーク・インターフェース・ハードウェア56と、データ記憶構成要素58と、入出力ハードウェア60と、1つ又は複数の非一時的コンピュータ可読媒体62とを含む。1つ又は複数の非一時的コンピュータ可読媒体62は、オペレーティング・システム・カーネル64と、コンテナ・マネージャ・モジュール66と、スコアリング・モジュール68と、セッション・モジュール70と、サービス作成モジュール72と、トラフィック・キャプチャ・モジュール74と、サービス・レベル契約チェッカー・モジュール76とを含む。管理計算システム20の構成要素は通信インターフェース52を通して物理的に及び/又は通信可能に結合され得る。
通信インターフェース52は、信号を送信する媒体から形成される。非限定的な実例として、通信インターフェース52は、導線、導電トレース、光導波路などから形成される。通信インターフェース52はまた、電磁放射及びそれらの対応する電磁波が伝搬される広がり(expanse)を指し得る。その上、通信インターフェース52は、信号を送信する媒体の組合せから形成され得る。一実施例では、通信インターフェース52は、管理計算システム20の様々な構成要素との間の電気データ信号の送信を可能にするように協働する、導電トレースと導線とコネクタとバスとの組合せを含む。さらに、用語「信号」は、DC、AC、正弦波、三角波、方形波、振動などの媒体中を進行する(たとえば、電気、光、磁気、機械又は電磁)波形を意味することに留意されたい。
それの各々がコンピュータ処理ユニット(CPU)であり得る1つ又は複数のプロセッサ54は、1つ又は複数の非一時的コンピュータ可読媒体62中に記憶される機械可読命令を受信し、実行し得る。非限定的な実例として、1つ又は複数のプロセッサ54は共有プロセッサ回路、専用プロセッサ回路、又はグループ・プロセッサ回路のうちの1つであり得る。本明細書で説明するように、用語「共有プロセッサ回路」は、複数のモジュールからのいくつかの又はすべての機械可読命令を実行する単一のプロセッサ回路を指す。本明細書で説明するように、用語「グループ・プロセッサ回路」は、追加のプロセッサ回路と組み合わせて、1つ又は複数の非一時的コンピュータ可読媒体の複数のモジュールからのいくつかの又はすべての機械実行可能命令を実行するプロセッサ回路を指す。複数のプロセッサ回路への言及は、別々のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、又は上記の組合せを包含する。
入出力ハードウェア60は、管理計算システム20のハードウェアと対話する基本入出力システム(BIOS:basic input/output system)、管理計算システム20の特定のデバイスと対話するデバイス・ドライバ、1つ又は複数のオペレーティング・システム、ユーザ・アプリケーション、背景サービス、背景アプリケーションなどを含み得る。ネットワーク・インターフェース・ハードウェア56は、アンテナ、モデム、LANポート、ワイヤレス・フィデリティ(Wi-Fi)カード、WiMaxカード、ロング・ターム・エボリューション(LTE)カード、Zigbeeカード、Bluetoothチップ、USBカード、モバイル通信ハードウェア、並びに/又は他のネットワーク及び/若しくはデバイスと通信するための他のハードウェアを含む、ワイヤード又はワイヤレス・ネットワーキング・ハードウェアを含み、及び/又はネットワーク80を介してワイヤード又はワイヤレス・ネットワーキング・ハードウェアと通信し得る。データ記憶構成要素58は1つ又は複数のプロセッサ54に通信可能に結合される。非限定的な実例として、データ記憶構成要素58は、NoSQL、MySQL、Oracle、SQLサーバ、NewSQLなどをサポートする1つ又は複数のデータベース・サーバを含み得る。
1つ又は複数の非一時的コンピュータ可読媒体62は1つ又は複数のプロセッサ54に通信可能に結合される。非限定的な実例として、1つ又は複数の非一時的コンピュータ可読媒体62は共有メモリ回路、専用メモリ回路、又はグループ・メモリ回路のうちの1つであり得る。本明細書で説明するように、用語「共有メモリ回路」は、以下でさらに詳細に説明される、複数のモジュールからのいくつかの又はすべての機械可読命令を記憶する単一のメモリ回路を指す。本明細書で説明するように、用語「グループ・メモリ回路」は、追加のメモリと組み合わせて、複数のモジュールからのいくつかの又はすべての機械可読命令を記憶するメモリ回路を指す。1つ又は複数の非一時的コンピュータ可読媒体62の非限定的な実例は、(SRAM、DRAM、及び/又は他のタイプのランダム・アクセス・メモリを含む)ランダム・アクセス・メモリ、読取り専用メモリ(ROM:read-only memory)、フラッシュ・メモリ、レジスタ、コンパクト・ディスク(CD:compact discs)、デジタル・バーサタイル・ディスク(DVD:digital versatile discs)、及び/又は他のタイプの記憶構成要素を含む。
図2Aに示されているように、第1のクライアント計算システム30-1は、通信インターフェース82と、1つ又は複数のプロセッサ84と、ネットワーク・インターフェース・ハードウェア86と、データ記憶構成要素88と、入出力ハードウェア90と、1つ又は複数の非一時的コンピュータ可読媒体92とを含む。1つ又は複数の非一時的コンピュータ可読媒体92は、管理計算システム20から受信されるインスタンス93を含む。インスタンス93は管理計算システム20の計算リソースのパーティションを含む。インスタンス93のパーティションは、仮想プロセッサ94と、ゲーミング・モジュール98及びランタイム・システム100を含む仮想メモリ96とを含む。クライアント計算システム30-1の構成要素は、通信インターフェース82を通して物理的に及び/又は通信可能に結合され得る。図2Aに示された実施例は第1のクライアント計算システム30-1を示すが、クライアント計算システム30の各々は、通信インターフェース82と、1つ又は複数のプロセッサ84と、ネットワーク・インターフェース・ハードウェア86と、データ記憶構成要素88と、入出力ハードウェア90と、1つ又は複数の非一時的コンピュータ可読媒体92とを含むことを理解すべきである。
通信インターフェース82は、信号を送信する媒体から形成される。非限定的な実例として、通信インターフェース82は、導線、導電トレース、光導波路などから形成される。通信インターフェース82はまた、電磁放射及びそれらの対応する電磁波が伝搬される広がりを指し得る。その上、通信インターフェース82は、信号を送信する媒体の組合せから形成され得る。一実施例では、通信インターフェース82は、第1のクライアント計算システム30-1の様々な構成要素との間の電気データ信号の送信を可能にするように協働する、導電トレースと導線とコネクタとバスとの組合せを含む。
それの各々がコンピュータ処理ユニット(CPU)であり得る1つ又は複数のプロセッサ84は、1つ又は複数の非一時的コンピュータ可読媒体92中に記憶される機械可読命令を受信し、実行し得る。非限定的な実例として、1つ又は複数のプロセッサ84は、共有プロセッサ回路、専用プロセッサ回路、又はグループ・プロセッサ回路のうちの1つであり得る。
入出力ハードウェア90は、第1のクライアント計算システム30-1のハードウェアと対話する基本入出力システム(BIOS)、第1のクライアント計算システム30-1の特定のデバイスと対話するデバイス・ドライバ、1つ又は複数のオペレーティング・システム、ユーザ・アプリケーション、背景サービス、背景アプリケーションなどを含み得る。ネットワーク・インターフェース・ハードウェア86は、アンテナ、モデム、LANポート、ワイヤレス・フィデリティ(Wi-Fi)カード、WiMaxカード、ロング・ターム・エボリューション(LTE)カード、Zigbeeカード、Bluetoothチップ、USBカード、モバイル通信ハードウェア、並びに/又は他のネットワーク及び/若しくはデバイスと通信するための他のハードウェアを含む、ワイヤード又はワイヤレス・ネットワーキング・ハードウェアを含み、及び/又はネットワーク80を介してワイヤード又はワイヤレス・ネットワーキング・ハードウェアと通信し得る。データ記憶構成要素88は1つ又は複数のプロセッサ84に通信可能に結合される。非限定的な実例として、データ記憶構成要素88は、NoSQL、MySQL、Oracle、SQLサーバ、NewSQLなどをサポートする1つ又は複数のデータベース・サーバを含み得る。
1つ又は複数の非一時的コンピュータ可読媒体92は1つ又は複数のプロセッサ84に通信可能に結合される。非限定的な実例として、1つ又は複数の非一時的コンピュータ可読媒体92は共有メモリ回路、専用メモリ回路、又はグループ・メモリ回路のうちの1つであり得る。1つ又は複数の非一時的コンピュータ可読媒体92の非限定的な実例は、(SRAM、DRAM、及び/又は他のタイプのランダム・アクセス・メモリを含む)ランダム・アクセス・メモリ、読取り専用メモリ(ROM)、フラッシュ・メモリ、レジスタ、コンパクト・ディスク(CD)、デジタル・バーサタイル・ディスク(DVD)、及び/又は他のタイプの記憶構成要素を含む。
次に、図2Aを参照しながら、管理計算システム20及び第1のクライアント計算システム30-1の様々なモジュールの説明を行う。本明細書で説明するように、用語「モジュール」は、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、デジタル、アナログ、又は混合アナログ/デジタル個別又は集積回路、組合せ論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、プロセッサ回路によって実行される機械可読命令を記憶するメモリ回路、説明される機能を与える他の好適なハードウェア構成要素、又は上記のいくつか若しくはすべての組合せを指すか、それらのうちの一部であるか、又はそれらを含み得る。
コンテナ・マネージャ・モジュール66は、ソフトウェア・バグ検出システム10-1中のコンテナであるインスタンス93を定義し、第1のクライアント計算システム30-1に展開する。本明細書で定義するように、フレーズ「コンテナ」は、それぞれのクライアント計算システム30の対応するモジュールが、管理計算システム20の計算リソースを使用して実行可能であり、別々に実行可能であるように、機械可読命令及びすべてのそれの依存性を含む、ソフトウェア・パッケージを指す。コンテナ・マネージャ・モジュール66はクライアント計算システム30の各々に機械可読命令及びインスタンス93のそれぞれの依存性を展開し、クライアント計算システム30の各々はオペレーティング・システム・カーネル64を共有し得る。
スコアリング・モジュール68は、シミュレーション・セッションの実行の間及び/又は後にクライアント計算システム30の各々についてスコアを生成する。以下で、たとえば、図4A~図4Cを参照しながら、スコアリング・モジュール68に関するさらなる詳細についてさらに詳細に説明する。セッション・モジュール70は、アドミニストレータ40がシミュレーション・セッションのいくつかのパラメータを定義することを可能にする。以下で、図3A~図3Bを参照しながら、セッション・モジュール70に関するさらなる詳細について説明する。
サービス作成モジュール72は、アドミニストレータ40がクライアント計算システム30の各々のアプリケーション・サービスのためのソフトウェア・バグを定義することを可能にする。トラフィック・キャプチャ・モジュール74は、アドミニストレータ40がクライアント計算システム30の各々のネットワーク・トラフィックのソフトウェア・バグを定義することを可能にする。以下で、たとえば、図3A~図3Bを参照しながら、サービス作成モジュール72及びトラフィック・キャプチャ・モジュール74に関するさらなる詳細についてさらに詳細に説明する。サービス・レベル契約チェッカー・モジュール76は、シミュレーション・セッション中にクライアント計算システム30の各々のオフライン・ステータスを決定する。以下で、たとえば、図4A~図4Bを参照しながら、サービス・レベル契約チェッカー・モジュール76に関するさらなる詳細についてさらに詳細に説明する。
上記で説明したように、インスタンス93は第1のクライアント計算システム30-1にコンテナとして展開される。インスタンス93の機械可読命令は、仮想プロセッサ94と、仮想メモリ96と、ゲーミング・モジュール98と、ランタイム・システム100とを含む。
仮想メモリ96は、ゲーミング・モジュール98及びランタイム・システム100のための基本サービスを与える、基礎となるオペレーティング・システムを含む。ゲーミング・モジュール98は、シミュレーション・セッション中に生成されるクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含む。ランタイム・システム100は、たとえば、第2のクライアント計算システム30-2及び第3のクライアント計算システム30-3に対して、第1のクライアント計算システム30-1に展開されるインスタンス93が別々に実行されることを可能にする環境を与える。
図2Bを参照しながら、ソフトウェア・バグ検出システム10-2内に含まれている例示的なモジュール及び構成要素の別の例示的な機能ブロック図が概略的に示されている。ソフトウェア・バグ検出システム10-2は、図2Aに示されたソフトウェア・バグ検出システム10-1と同様であるが、この実施例では、インスタンス93は仮想マシンとして展開される。本明細書で使用する際、フレーズ「仮想マシン」は、インスタンス93が管理計算システム20のエミュレーションであるように、機械可読命令及びすべてのそれの依存性を含むソフトウェア・パッケージを指す。各仮想マシンは、それ自体のゲスト・オペレーティング・システム104を含み得(たとえば、各仮想マシンはそれ自体のオペレーティング・システムを含み得る)、仮想マシンのハードウェアは仮想化され得る。したがって、仮想マシンのハイパーバイザ102は、シミュレーション・セッション中のクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含み得る。
次に、図2Bを参照しながら、管理計算システム20及び第1のクライアント計算システム30-1の様々なモジュールの説明を与える。
ハイパーバイザ102は、シミュレーション・セッション中のクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含み得る。
スコアリング・モジュール68は、シミュレーション・セッションの実行の間及び/又は後にクライアント計算システム30の各々についてスコアを生成する。以下で、たとえば、図4A~図4Cを参照しながら、スコアリング・モジュール68に関するさらなる詳細についてさらに詳細に説明する。セッション・モジュール70は、アドミニストレータ40がシミュレーション・セッションのいくつかのパラメータを定義することを可能にする。以下で、図3A~図3Bを参照しながら、セッション・モジュール70に関するさらなる詳細について説明する。
サービス作成モジュール72は、アドミニストレータ40がクライアント計算システム30の各々のアプリケーション・サービスのためのソフトウェア・バグを定義することを可能にする。トラフィック・キャプチャ・モジュール74は、アドミニストレータ40がクライアント計算システム30の各々のネットワーク・トラフィックのソフトウェア・バグを定義することを可能にする。以下で、たとえば、図3A~図3Bを参照しながら、サービス作成モジュール72及びトラフィック・キャプチャ・モジュール74に関するさらなる詳細についてさらに詳細に説明する。サービス・レベル契約チェッカー・モジュール76は、シミュレーション・セッション中にクライアント計算システム30の各々のオフライン・ステータスを決定する。以下で、たとえば、図4A~図4Bを参照しながら、サービス・レベル契約チェッカー・モジュール76に関するさらなる詳細についてさらに詳細に説明する。
インスタンス93は第1のクライアント計算システム30-1に仮想マシンとして展開される。インスタンス93の機械可読命令は、仮想プロセッサ94と、仮想メモリ96と、ゲーミング・モジュール98と、ランタイム・システム100と、ゲスト・オペレーティング・システム104とを含む。
仮想メモリ96は、ゲーミング・モジュール98及びランタイム・システム100のための基本サービスを与える、基礎となるオペレーティング・システムを含む。ゲーミング・モジュール98は、シミュレーション・セッション中に生成されるクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含む。ランタイム・システム100は、たとえば、第2のクライアント計算システム30-2及び第3のクライアント計算システム30-3に対して、第1のクライアント計算システム30-1に展開されるインスタンス93が別々に実行されることを可能にする環境を与える。
図2A~図2Bを参照しながら上記で説明した実施例は、第1のクライアント計算システム30-1がユーザ50-1によって制御され、動作させられることを示すが、ユーザ50-1からの入力又は行為を必要とする、図2A~図2Bに記載されている機能のうちのいくつかはクライアント計算システム30によってのみ実行され得ることを理解すべきである。非限定的な実例として、第1のクライアント計算システム30ー1は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して、及びユーザ50-1からの入力なしに上記で説明した機能を実行するAI計算システムであり得る。
図3Aを参照すると、ソフトウェア・バグ検出システム10の複数のインスタンス93を展開する例示的な方法300の流れ図が示されている。図3Aに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。いくつかの実施例では、本明細書で説明されていない追加のブロックも実行され得る。さらに、図3Aに示されたいくつかのブロックは、管理計算システム20を使用してアドミニストレータ40によって実行されるとして説明されるが、図3Aのブロックに記載されている機能のいくつか又はすべては管理計算システム20によってのみ実行され得る(たとえば、管理計算システム20は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びアドミニストレータ40からの入力なしに図3Aに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
図1、図2A~図2B、及び図3Aを参照すると、アドミニストレータ40は、ブロック305において管理計算システム20のサービス作成モジュール72を使用してユーザ50(たとえば、第1のクライアント計算システム30-1に関連するユーザ50-1)から第1のチームを選択する。
まだ図1、図2A~図2B、及び図3Aを参照すると、ブロック310において、アドミニストレータ40は、管理計算システム20のサービス作成モジュール72を使用して、クライアント計算システム30に展開するべき事前定義されたソフトウェア・バグ及びサービスを選択する。いくつかの実施例では、事前定義されたソフトウェア・バグはソフトウェア弱点及び/又はバグの共通脆弱性タイプ一覧(CWE:common weakness enumeration)リストから選択され得る。管理計算システム20によって生成され、表示される例示的なユーザ・インターフェース340を示す、図3Bに非限定的な実例として示されているように、アドミニストレータ40は、ユーザ・インターフェース要素345とユーザ・インターフェース要素355とのうちの少なくとも1つを選択することによって、CWE-121(たとえば、スタック・ベース・バッファ・オーバーフロー)、CWE-23(たとえば、相対経路)、CWE-287(たとえば、不正な認証)、及びCWE-676(たとえば、潜在的に危険な機能の使用)として、ソフトウェア・バグを選択し得る。CWEリストのソフトウェア・バグ及び/又は弱点は、他の実施例ではアドミニストレータ40によって選択され得ることを理解すべきである。また、事前定義されたソフトウェア・バグは、他の実施例では、事前定義されたソフトウェア・バグの任意の他のリストから選択され得ることを理解すべきである。サービス作成モジュール72を使用してソフトウェア・バグがコンパイルされるたびに、シミュレーション・セッションの再利用/レプリカビリティ(replicability)を保証するために新しい及び/又はランダム・メモリ・ロケーションが選択されることを理解すべきである。
さらに、ブロック310において、アドミニストレータ40は、事前定義されたソフトウェア・バグに関連するアプリケーション・サービス及び/又はネットワーク・サービスを選択し得る。図3Bに非限定的な実例として示されているように、アドミニストレータ40は、ユーザ・インターフェース要素350を選択することによってメッセンジャー・アプリケーション・サービスを選択し得る。アドミニストレータ40は、他の実施例では、電子メール・アプリケーション・サービス、インターネット・アプリケーション・サービス、及び/又はカスタム・アプリケーション・サービスを選択し得ることを理解すべきである。
まだ図1、図2A~図2B、及び図3Aを参照すると、ブロック315において、アドミニストレータ40は、管理計算システム20のセッション・モジュール70を使用してシミュレーション・セッションのパラメータを指定する。いくつかの実施例では、図3Bに示されているように、アドミニストレータ40は、対応値をユーザ・インターフェース要素360に入力することによって、シミュレーション・セッションのセッション長さ(たとえば、120時間)、ラウンド長さ(たとえば、2分)、及び/又は他のパラメータを指定し得る。図1、図2A~図2B、及び図3Aを参照すると、ブロック320において、アドミニストレータ40は、ユーザ・インターフェース要素360のうちの1つを選択することによって、管理計算システム20のコンテナ・マネージャ・モジュール66を使用して、インスタンス93を対応するクライアント計算システム30に展開する。
図1、図2A~図2B、及び図3Aを参照すると、ブロック325において、管理計算システム20は、ソフトウェア・バグ検出システム10内に追加のチームが含まれるかどうかを決定する。本明細書で使用する際、用語「チーム」は、個人、個々人からなるグループ、AI計算システム、又はAI計算システムのグループを指す。そうである場合、方法300はブロック330に進む。ブロック330において及び図1、図2A~図2B、及び図3Aを参照しながら、管理計算システム20は、次のチームを選択し、ブロック310に進む。ブロック325において、管理計算システム20が、ソフトウェア・バグ検出システム10内に追加のチームが含まれないことを決定した場合、方法300は終了する。
図4Aを参照すると、ソフトウェア・バグ検出システム10のシミュレーション・セッション中にそれぞれのクライアント計算システム30に展開されるインスタンス93のソフトウェア・バグを識別する例示的な方法400の流れ図が示されている。図4Aに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。いくつかの実施例では、本明細書で説明されていない追加のブロックが実行され得る。さらに、図4Aに示されたいくつかのブロックは、クライアント計算システム30のユーザ50によって実行されるとして説明されるが、図4Aのブロックに記載されている機能のいくつか又はすべてはクライアント計算システム30によってのみ実行され得る(たとえば、クライアント計算システム30は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びユーザ50からの入力なしに図4Aに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
図1、図2A~図2B、図4A、及び図4Dを参照すると、ブロック405において、第1のクライアント計算システム30-1のユーザ50-1は、インスタンス93のゲーミング・モジュール98を使用して、他のクライアント計算システム30の対向するコンテナ(又は仮想マシン)(たとえば、第2のクライアント計算システム30-2及び第3のクライアント計算システム30-3に展開されるインスタンス93)の事前定義されたソフトウェア・バグを識別する。
いくつかの実施例では、図4Dに示されているように、シミュレーション・セッションが開始したとき、インスタンス93を実行することは、各クライアント計算システム30にユーザ・インターフェース700を生成させる。ユーザ・インターフェース700は、クライアント計算システム30の各々のスコアを示すスコアカード部分705と、第1のクライアント計算システム30-1に展開される計算リソースに関連する様々なメトリクスを示すチーム・ヘルス部分710と、現在のシミュレーション・セッションの進捗値を示すラウンド情報715とを含む。ユーザ・インターフェース700は、管理計算システム20がインスタンス93をクライアント計算システム30に展開することに応答して開始される、セッション・タイマーの現在値を示す時間情報720を含む。いくつかの実施例では、セッション・タイマーは、新しいシミュレーション・セッションが実行されたときにリセットされ得る。
ユーザ・インターフェース700はまた、シミュレーション・セッションに関連する様々なイベントを示すゲーミング情報725と、第1のクライアント計算システム30-1に関連する様々なエラーを示すエラー情報730とを含む。ユーザ・インターフェース700はまた、第1のクライアント計算システム30-1に、第1のクライアント計算システム30-1に与えられる修正された機械可読命令に関連するバイナリ・ファイルをアップロードさせるアップロード・バイナリ・ユーザ・インターフェース要素735と、第1のクライアント計算システム30-1に、別のクライアント計算システム30に与えられる修正された機械可読命令に関連するバイナリ・ファイルをアップロードさせるサブミット・フラグ・ユーザ・インターフェース要素740とを含む。ユーザ・インターフェース700はまた、第1のクライアント計算システム30-1に、ネットワーク・トラフィックに関連するバイナリ・ファイルを管理計算システムに要求し、ダウンロードさせるダウンロード・パケット・キャプチャ(PCAP:download packet capture)ユーザ・インターフェース要素750と、第1のクライアント計算システム30-1に、アプリケーション・サービスに関連するバイナリ・ファイルを管理計算システム20に要求し、ダウンロードさせるダウンロード・バイナリ・ユーザ・インターフェース要素755とを含む。
非限定的な実例として、第1のクライアント計算システム30-1のユーザ50-1は、ダウンロードPCAPユーザ・インターフェース要素750とダウンロード・バイナリ・ユーザ・インターフェース要素755とのうちの少なくとも1つを選択することによって、他のクライアント計算システム30の事前定義されたソフトウェア・バグを識別し得る。ダウンロードPCAPユーザ・インターフェース要素750とダウンロード・バイナリ・ユーザ・インターフェース要素755とのうちの1つの選択に応答して、ユーザ・インターフェース700は、他のクライアント計算システム30に展開される事前定義されたソフトウェア・バグに関連するバイナリ・ファイルを表示し得る。その後、第1のクライアント計算システム30-1のユーザ50-1は、テキスト・ユーザ・インターフェース内でバイナリ・ファイルを選択的に修正することによって、他のクライアント計算システム30の事前定義されたソフトウェア・バグの位置を特定し、利用し得る。
図1、図2A~図2B、図4A、及び図4Dを参照すると、ブロック410において、ユーザ50-1は、アップロード・バイナリ・ユーザ・インターフェース要素735を選択することによって、利用される事前定義されたソフトウェア・バグを検証のためにサブミットする。
図1、図2A~図2B、図4A、及び図4Dを参照すると、ブロック415において、アドミニストレータ40又は管理計算システム20は、ユーザ50-1によって識別される利用される事前定義されたソフトウェア・バグが検証されたかどうかを決定する。非限定的な実例として、アドミニストレータ40又は管理計算システム20は、ユーザ50-1が、対応するクライアント計算システム30に展開されるソフトウェア・バグに基づいて、事前定義されたソフトウェア・バグを適切に識別し、利用したかどうかを決定し得る。そうである場合、方法400は、ブロック420に進み、第1のクライアント計算システム30-1のスコアを更新する。他の場合、方法400はブロック425に進む。
図1、図2A~図2B、図4A、及び図4Dを参照すると、ブロック425において、インスタンス93は、フィード中に新しいエントリがあるかどうかを決定する(たとえば、インスタンス93は、他のクライアント計算システム30の追加の機械可読命令がダウンロードのために利用可能であるかどうかを決定する)。そうである場合、方法400は、ブロック430に進み、第1のクライアント計算システム30-1が新しいアプリケーション・サービス及び/又はトラフィック・キャプチャをダウンロードし、次いでブロック405に進む。他の場合、方法400はブロック435に進む。
図1、図2A~図2B、図4A、及び図4Dを参照すると、ブロック435において、インスタンス93は、シミュレーション・セッションが経過したかどうかを決定する。いくつかの実施例では、シミュレーション・セッションが経過していることは、時間情報720によって表示されるタイマー値によって示され得る。そうである場合、方法400は終了する。他の場合、方法400はブロック405に進む。
図4Bを参照すると、ソフトウェア・バグ検出システム10のシミュレーション・セッション中に別のクライアント計算システム30に展開されるインスタンス93のソフトウェア・バグを識別する例示的な方法500の流れ図が示されている。図4Bに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。さらに、図4Bに示されたいくつかのブロックはクライアント計算システム30のユーザ50によって実行されるとして説明されるが、図4Bのブロックに記載されている機能のいくつか又はすべてはクライアント計算システム30によってのみ実行され得る(たとえば、クライアント計算システム30は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びユーザ50からの入力なしに図4Bに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
図1、図2A~図2B、図4B、及び図4Dを参照すると、ブロック505において、第1のクライアント計算システム30-1のユーザ50-1は、インスタンス93のゲーミング・モジュール98を使用して、第1のクライアント計算システム30-1に展開されるコンテナ(又は仮想マシン)の事前定義されたソフトウェア・バグを識別する。非限定的な実例として、第1のクライアント計算システム30-1のユーザ50-1は、ダウンロードPCAPユーザ・インターフェース要素750とダウンロード・バイナリ・ユーザ・インターフェース要素755とのうちの少なくとも1つを選択することによって、第1のクライアント計算システム30-1に展開される事前定義されたソフトウェア・バグを識別し得る。ダウンロードPCAPユーザ・インターフェース要素750とダウンロード・バイナリ・ユーザ・インターフェース要素755とのうちの1つの選択に応答して、ユーザ・インターフェース700は、第1のクライアント計算システム30-1に展開される事前定義されたソフトウェア・バグに関連するバイナリ・ファイルを表示し得る。
図1、図2A~図2B、図4B、及び図4Dを参照すると、ブロック510において、ユーザ50-1は、第1のクライアント計算システム30-1に展開される事前定義されたソフトウェア・バグをデバッグする。非限定的な実例として、第1のクライアント計算システム30-1のユーザ50-1は、テキスト・ユーザ・インターフェース内でバイナリ・ファイルを選択的に修正することによって、第1のクライアント計算システム30-1の事前定義されたソフトウェア・バグの位置を特定し、補正し得る。さらに、ブロック510において、ユーザ50-1は、アップロード・バイナリ・ユーザ・インターフェース要素735を選択することよって、デバッグされるソフトウェア・バグを検証のためにサブミットする。
図1、図2A~図2B、図4B、及び図4Dを参照すると、ブロック515において、アドミニストレータ40又は管理計算システム20は、ユーザ50-1によって識別され、補正された事前定義されたソフトウェア・バグが検証されたかどうかを決定する。非限定的な実例として、アドミニストレータ40又は管理計算システム20は、ユーザ50-1が、対応するクライアント計算システム30に展開されるソフトウェア・バグに基づいて、事前定義されたソフトウェア・バグを適切に識別し、補正したかどうかを決定し得る。そうである場合、方法500は、ブロック520に進み、第1のクライアント計算システム30-1のスコアを更新する。他の場合、方法500はブロック525に進む。
図1、図2A~図2B、図4B、及び図4Dを参照すると、ブロック525において、インスタンス93は、フィード中に新しいエントリがあるかどうかを決定する(たとえば、インスタンス93は、第1のクライアント計算システム30-1の追加の機械可読命令がダウンロードのために利用可能であるかどうかを決定する)。そうである場合、方法500は、ブロック530に進み、第1のクライアント計算システム30-1が新しいアプリケーション・サービス及び/又はトラフィック・キャプチャをダウンロードし、次いで、ブロック505に進む。他の場合、方法500はブロック535に進む。
図1、図2A~図2B、及び図4Bを参照すると、ブロック535において、インスタンス93は、シミュレーション・セッションが経過したかどうかを決定する。そうである場合、方法500は終了する。他の場合、方法400はブロック505に進む。
図4Cを参照すると、シミュレーション・セッション中に、ソフトウェア・バグをクライアント計算システム30に動的に展開する管理計算システム20の例示的な方法600の流れ図が示されている。図4Cに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。さらに、図4Cに示されたいくつかのブロックは、管理計算システム20を使用してアドミニストレータ40によって実行されるとして説明されるが、図4Cのブロックに記載されている機能のいくつか又はすべては管理計算システム20によってのみ実行され得る(たとえば、管理計算システム20は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びアドミニストレータ40からの入力なしに図4Cに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
図1、図2A~図2B、及び図4Cを参照すると、ブロック605において、アドミニストレータ40又は管理計算システム20は、ユーザ50によってサブミットされた事前定義されたソフトウェア・バグが検証されたかどうかを決定する。非限定的な実例として、アドミニストレータ40又は管理計算システム20は、ユーザ50-1が、対応するクライアント計算システム30に展開されたソフトウェア・バグに基づいて、事前定義されたソフトウェア・バグを適切に識別し、補正又は利用したかどうかを決定し得る。別の非限定的な実例として、クライアント計算システム30のパーセンテージが、事前定義されたソフトウェア・バグの位置を特定し、利用することに成功し、そのパーセンテージが所定のしきい値パーセンテージよりも大きい場合、管理計算システム20は、事前定義されたソフトウェア・バグを検証する。そうである場合、方法600はブロック610に進む。他の場合、方法600はブロック605に留まる。
図1、図2A~図2B、及び図4Cを参照すると、ブロック610において、アドミニストレータ40は、管理計算システム20のサービス作成モジュール72及び/又はトラフィック・キャプチャ・モジュール74を使用して、新しい事前定義されたソフトウェア・バグ、アプリケーション・サービス、及び/又はそれぞれのクライアント計算システム30に展開するべきネットワーク・トラフィック・サービスを選択する。図1、図2A~図2B、及び図4Cを参照すると、ブロック615において、アドミニストレータ40は、管理計算システム20のコンテナ・マネージャ・モジュール66を使用して、対応するクライアント計算システム30に新しい事前定義されたソフトウェア・バグ、アプリケーション・サービス、及び/又はネットワーク・トラフィック・サービスを展開する。図1、図2A~図2B、及び図4Cを参照すると、ブロック620において、管理計算システム20は、シミュレーション・セッションが経過したかどうかを決定する。そうである場合、方法600は終了する。他の場合、方法600はブロック605に進む。
シミュレーション・セッションが完了する(たとえば、図4Aの方法400、図4Bの方法500、及び図4Cの方法600のうちの1つが終了する)と、管理計算システム20のスコアリング・モジュール68はクライアント計算システム30の各々についてスコアを生成し、報告し得る。その後、管理計算システム20は、クライアント計算システム30をランク付けし、各々のランク付けを示す報告を生成し得る。いくつかの実施例では、事前定義されたしきい値よりも大きい時間期間の間、それぞれのクライアント計算システムがオフラインであったことをサービス・レベル契約チェッカー・モジュール76が決定したことに応答して、スコアリング・モジュール68はクライアント計算システム30のうちの1つについてスコアを調整し(たとえば、減少させ)得る。
ここで、本明細書で説明した実施例は、クライアント計算システム30を使用して、事前定義されたソフトウェア・バグを識別するためのデバイス、システム、及び方法に関することを理解すべきである。上記で説明したように、クライアント計算システム30の各々のユーザ50(又はユーザ介入なしにクライアント計算システム30のうちの1つ又は複数)は、それらのそれぞれの展開される機械可読命令を評価し、事前定義されたソフトウェア・バグの位置を特定し、補正し、シミュレーション・セッション中に、補正された事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システム30のユーザ50が事前定義されたソフトウェア・バグを適切に補正したことをアドミニストレータ40及び/又は管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システム30に関連するスコアを増加させる。
さらに、クライアント計算システム30の各々のユーザ50(又はユーザ介入なしにクライアント計算システム30のうちの1つ又は複数)は、他のクライアント計算システム30に展開される機械可読命令を評価し、他のクライアント計算システム30の事前定義されたソフトウェア・バグの位置を特定し、利用し、利用される事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システム30のユーザ50が事前定義されたソフトウェア・バグを適切に利用したことをアドミニストレータ40及び/又は管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システム30に関連するスコアを増加させる。
したがって、ソフトウェア・バグ検出システム10は、ユーザ50及び/又はクライアント計算システム30が、メモリ破損問題、メモリ脆弱性問題、メモリ開示問題、情報漏洩問題、論理脆弱性問題、暗号問題など、悪意のある第三者行為により起こり得る様々な計算システム問題を診断するそれらの能力を改善することを可能にする。
本明細書で説明した機能ブロック及び/又はフローチャート要素は機械可読命令に変換され得る。非限定的な実例として、機械可読命令は、(たとえば、ハイパーテキスト・マークアップ言語、拡張可能マークアップ言語など)パースされるべき説明文、(ii)アセンブリ言語、(iii)コンパイラによってソース・コードから生成されるオブジェクト・コード、(iv)インタープリタによる実行のための任意の好適なプログラミング言語からのシンタックスを使用して書かれるソース・コード、(v)ジャストインタイム・コンパイラなどによるコンパイル及び実行のためのソース・コードなど、任意のプログラミング・プロトコルを使用して書かれ得る。代替的に、機械可読命令は、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)構成若しくは特定用途向け集積回路(ASIC:application-specific integrated circuit)のいずれか、又はそれらの等価物を介して実装される論理など、ハードウェア記述言語(HDL:hardware description language)で書かれ得る。したがって、本明細書で説明した機能は、事前プログラムされたハードウェア要素として、又はハードウェア構成要素とソフトウェア構成要素との組合せとして、任意の従来のコンピュータ・プログラミング言語で実装され得る。
様々な改変及び変形が、本開示の範囲から逸脱することなく行われ得ることが当業者には明らかになろう。本開示の趣旨及び要旨を組み込んだ開示された実施例の改変、組合せ、サブコンビネーション及び変形形態は当業者が想到し得るので、本開示は、添付の特許請求及びそれらの等価物の範囲内であらゆるものを含むと解釈されるべきである。

Claims (10)

  1. 第1のクライアント計算システムによって管理計算システムからのインスタンスを受信することであって、
    前記インスタンスが前記第1のクライアント計算システムに仮想マシンとして展開され、前記インスタンスが前記管理計算システムのエミュレーションであるように、前記仮想マシンが前記管理計算システムの計算リソースのパーティションを備え、
    計算リソースの前記パーティションが仮想プロセッサ及び第1の機械可読命令を備え、
    前記第1の機械可読命令が第1の事前定義されたソフトウェア・バグを備える、
    インスタンスを受信することと、
    前記仮想プロセッサによって前記第1の機械可読命令を実行することであって、前記第1の機械可読命令を実行することは、
    前記仮想プロセッサによって、前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信すること、及び
    前記仮想プロセッサによって、前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムによる検証に応答して、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信すること
    を含む、前記第1の機械可読命令を実行することと
    を含む方法。
  2. 計算リソースの前記パーティションが第2の機械可読命令を備え、
    前記第2の機械可読命令が第2の事前定義されたソフトウェア・バグを備える、
    求項1に記載の方法。
  3. 前記仮想プロセッサによって、前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの識別を示す第2の入力を受信することと、
    前記仮想プロセッサによって、前記管理計算システムに、前記第2の入力に関連する第2の信号を送信することであって、前記第2の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連する前記スコアを増加させる、第2の信号を送信することと、
    前記第1のクライアント計算システムによってユーザ・インターフェースを表示することであって、
    前記ユーザ・インターフェースが、第1のユーザ・インターフェース要素の選択に応答して、前記仮想プロセッサに前記第1の入力を受信させる前記第1のユーザ・インターフェース要素を備え、
    前記ユーザ・インターフェースが、第2のユーザ・インターフェース要素の選択に応答して、前記仮想プロセッサに前記第2の入力を受信させる前記第2のユーザ・インターフェース要素を備え、
    前記ユーザ・インターフェースがテキスト・ユーザ・インターフェース要素を備える、
    ところの前記ユーザ・インターフェースを表示することと、
    前記第1のクライアント計算システムによって前記テキスト・ユーザ・インターフェース要素内でバイナリ・ファイルを表示することであって、前記バイナリ・ファイルが前記第1の機械可読命令のセット及び前記第2の機械可読命令のセットのうちの1つを表す、前記バイナリ・ファイルを表示することと、をさらに含み、
    前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの前記識別を示す前記第1の入力を受信することは、
    前記仮想プロセッサによって前記バイナリ・ファイルの修正を受信することであって、前記バイナリ・ファイルが前記第1の機械可読命令の前記セットを表す、前記バイナリ・ファイルの修正を受信することと、
    前記仮想プロセッサによって、前記バイナリ・ファイルの前記修正に応答して前記第1のユーザ・インターフェース要素の前記選択を受信することと
    をさらに含み、
    前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの前記識別を示す前記第2の入力を受信することは、
    前記仮想プロセッサによって前記バイナリ・ファイルの修正を受信することであって、前記バイナリ・ファイルが前記第2の機械可読命令の前記セットを表す、前記バイナリ・ファイルの修正を受信することと、
    前記仮想プロセッサによって、前記バイナリ・ファイルの前記修正に応答して前記第2のユーザ・インターフェース要素の前記選択を受信することと
    をさらに含む、請求項2に記載の方法。
  4. 前記第1の機械可読命令の前記セットが前記第1の事前定義されたソフトウェア・バグを備え、
    前記第2の機械可読命令の前記セットが前記第2の事前定義されたソフトウェア・バグを備える、請求項3に記載の方法。
  5. 前記第1の事前定義されたソフトウェア・バグが、事前定義されたソフトウェア・バグのリストから選択される、請求項1から3までのいずれか一項に記載の方法。
  6. 第1のクライアント計算システムによって管理計算システムからのインスタンスを受信することであって、
    前記インスタンスが前記第1のクライアント計算システムに仮想マシンとして展開され、前記インスタンスが前記管理計算システムのエミュレーションとなるように、前記仮想マシンが前記管理計算システムの計算リソースのパーティションを備え、
    計算リソースの前記パーティションが仮想プロセッサ及び第1の機械可読命令を備え、
    前記第1の機械可読命令が第1の事前定義されたソフトウェア・バグを備える、
    インスタンスを受信することと、
    前記仮想プロセッサによって前記第1の機械可読命令を実行することであって、前記第1の機械可読命令を実行することは、
    前記仮想プロセッサによって、前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成することと、
    前記仮想プロセッサによって、前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムによる検証に応答して、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信することと
    を含む、前記第1の機械可読命令を実行することと
    を含む方法。
  7. 管理計算システムによって第1のクライアント計算システムに第1のインスタンスを送信することであって、
    前記第1のインスタンスが前記第1のクライアント計算システムに仮想マシンとして展開され、前記インスタンスが前記管理計算システムのエミュレーションとなるように、前記仮想マシンが前記管理計算システムの計算リソースの第1のパーティションを備え、
    計算リソースの前記第1のパーティションが第1の仮想プロセッサ及び第1の機械可読命令を備え、
    前記第1の機械可読命令が第1の事前定義されたソフトウェア・バグを備える、
    第1のインスタンスを送信することと、
    前記管理計算システムによって、前記第1のクライアント計算システムによって受信される第1の入力に関連する第1の信号を受信することであって、前記第1の入力が前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの識別を示す、第1の信号を受信することと、
    前記管理計算システムによって前記第1の信号を検証することと、
    前記管理計算システムによって、前記第1の信号の検証に応答して、前記第1のクライアント計算システムに関連する第1のスコアを増加させることと
    を含む方法。
  8. 1つ又は複数のプロセッサと、
    機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体と
    を備えるシステムであって、前記機械可読命令は、実行されたとき、前記1つ又は複数のプロセッサに、
    管理計算システムからのインスタンスを受信することであって、
    前記インスタンスが前記システムに仮想マシンとして展開され、前記インスタンスが前記管理計算システムのエミュレーションとなるように、前記仮想マシンが前記管理計算システムの計算リソースのパーティションを備え、
    計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
    機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備える、
    インスタンスを受信することと、
    機械可読命令の前記第1のセットを実行することであって、機械可読命令の前記第1のセットを実行することが、前記1つ又は複数のプロセッサに、
    機械可読命令の前記第1のセットの前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信すること、及び
    前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムに、前記システムに関連するスコアを生成させる、第1の信号を送信すること
    を行わせる、機械可読命令の前記第1のセットを実行することと
    を行わせる、システム。
  9. 1つ又は複数のプロセッサと、
    機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体と
    を備える機械学習システムであって、前記機械可読命令は、実行されたとき、前記機械学習システムに、
    管理計算システムからのインスタンスを受信することであって、
    前記インスタンスが前記機械学習システムに仮想マシンとして展開され、前記インスタンスが前記管理計算システムのエミュレーションとなるように、前記仮想マシンが前記管理計算システムの計算リソースのパーティションを備え、
    計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
    機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備える、
    インスタンスを受信することと、
    機械可読命令の前記第1のセットを実行することであって、機械可読命令の前記第1のセットを実行することが、前記機械学習システムに、
    機械可読命令の前記第1のセットの前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成すること、及び
    前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムに、前記機械学習システムに関連するスコアを生成させる、第1の信号を送信すること
    を行わせる、機械可読命令の前記第1のセットを実行することと
    を行わせる、機械学習システム。
  10. 第1のクライアント計算システムによって管理計算システムからのインスタンスを受信することであって、
    前記インスタンスが前記第1のクライアント計算システムに仮想マシンとして展開され、前記インスタンスが前記管理計算システムのエミュレーションとなるように、前記仮想マシンが前記管理計算システムの計算リソースのパーティションを備え、
    計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
    機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備え、
    計算リソースの前記パーティションが機械可読命令の第2のセットを備え、
    機械可読命令の前記第2のセットが第2の事前定義されたソフトウェア・バグを備え
    インスタンスを受信することと、
    前記仮想プロセッサによって機械可読命令の前記第1のセットを実行することであって、機械可読命令の前記第1のセットを実行することは、
    前記仮想プロセッサによって、機械可読命令の前記第1のセットの前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信すること、及び
    前記仮想プロセッサによって、前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信すること
    を含む、前記第1のセットを実行することと、
    前記仮想プロセッサによって、機械可読命令の前記第2のセットの前記第2の事前定義されたソフトウェア・バグの識別を示す第2の入力を受信することと、
    前記仮想プロセッサによって、前記管理計算システムに、前記第2の入力に関連する第2の信号を送信することであって、前記第2の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連する前記スコアを増加させる、第2の信号を送信することと、
    前記第1のクライアント計算システムによってユーザ・インターフェースを表示することであって、
    前記ユーザ・インターフェースが、第1のユーザ・インターフェース要素の選択に応答して、前記仮想プロセッサに前記第1の入力を受信させる、前記第1のユーザ・インターフェース要素を備え、
    前記ユーザ・インターフェースが、第2のユーザ・インターフェース要素の選択に応答して、前記仮想プロセッサに前記第2の入力を受信させる、前記第2のユーザ・インターフェース要素を備え、
    前記ユーザ・インターフェースがテキスト・ユーザ・インターフェース要素を備える、
    ユーザ・インターフェースを表示することと、
    前記第1のクライアント計算システムによって前記テキスト・ユーザ・インターフェース要素内でバイナリ・ファイルを表示することであって、前記バイナリ・ファイルが、機械可読命令の前記第1のセットからなるセット、及び機械可読命令の前記第2のセットからなるセットのうちの1つを表す、バイナリ・ファイルを表示することと
    を含む方法。
JP2021529701A 2018-11-26 2019-11-26 ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法 Active JP7474761B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862771345P 2018-11-26 2018-11-26
US62/771,345 2018-11-26
PCT/US2019/063287 WO2020112800A1 (en) 2018-11-26 2019-11-26 Systems and methods for training systems to detect software bugs

Publications (2)

Publication Number Publication Date
JP2022510165A JP2022510165A (ja) 2022-01-26
JP7474761B2 true JP7474761B2 (ja) 2024-04-25

Family

ID=70853561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021529701A Active JP7474761B2 (ja) 2018-11-26 2019-11-26 ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法

Country Status (4)

Country Link
JP (1) JP7474761B2 (ja)
AU (1) AU2019386064B2 (ja)
CA (1) CA3120863A1 (ja)
WO (1) WO2020112800A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005501333A (ja) 2001-08-24 2005-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサに譲渡するためのシステム
JP2007503038A (ja) 2003-08-20 2007-02-15 マクロヴィジョン ヨーロッパ リミテッド コード難読化およびエミュレーションによるプロセッサ制御
JP2011002993A (ja) 2009-06-18 2011-01-06 Toyota Motor Corp ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法
JP2017514241A (ja) 2014-03-13 2017-06-01 バグウルフ ピーティーワイ リミテッド 評価システム及び方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612606B2 (en) * 2010-10-12 2013-12-17 Juniper Networks, Inc. Preserving an authentication state by maintaining a virtual local area network (VLAN) association
JP2012088874A (ja) * 2010-10-19 2012-05-10 Hitachi Ltd プログラムバグ管理システム
WO2013023185A1 (en) * 2011-08-11 2013-02-14 Shopvolution Limited System and method for electronic social shopping game platforms
US20170351560A1 (en) * 2016-06-02 2017-12-07 Microsoft Technology Licensing, Llc Software failure impact and selection system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005501333A (ja) 2001-08-24 2005-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーション プロセッサに譲渡するためのシステム
JP2007503038A (ja) 2003-08-20 2007-02-15 マクロヴィジョン ヨーロッパ リミテッド コード難読化およびエミュレーションによるプロセッサ制御
JP2011002993A (ja) 2009-06-18 2011-01-06 Toyota Motor Corp ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法
JP2017514241A (ja) 2014-03-13 2017-06-01 バグウルフ ピーティーワイ リミテッド 評価システム及び方法

Also Published As

Publication number Publication date
AU2019386064A1 (en) 2021-06-03
WO2020112800A1 (en) 2020-06-04
AU2019386064B2 (en) 2024-07-18
JP2022510165A (ja) 2022-01-26
US20220004484A1 (en) 2022-01-06
CA3120863A1 (en) 2020-06-04

Similar Documents

Publication Publication Date Title
Keahey et al. Lessons learned from the chameleon testbed
Liu et al. Crystalnet: Faithfully emulating large production networks
US20200073739A1 (en) Constraint solver execution service and infrastructure therefor
US10990516B1 (en) Method, apparatus, and computer program product for predictive API test suite selection
US10203967B1 (en) Client configurable hardware logic and corresponding data
US9237130B2 (en) Hierarchical rule development and binding for web application server firewall
CN109656538A (zh) 应用程序的生成方法、装置、***、设备和介质
US8910294B1 (en) System and method for application failure testing in a cloud computing environment
US9612942B2 (en) Verification of a computer program in respect to an unexpected response to an access request
CN110147240A (zh) 基于云存储的应用程序安装方法、***及存储介质
EP3629182A2 (en) Generating a test script execution order
US20150381467A1 (en) System and method thereof for dynamically testing networked target systems through simulation by a mobile device
US20220247793A1 (en) Scanning and remediating configuration settings of a device using a policy-driven approach
US9582407B2 (en) Security role testing using an embeddable container and properties object
US11249885B2 (en) Test case generator and user interface
US10685115B1 (en) Method and system for implementing cloud native application threat detection
US10176067B1 (en) On-demand diagnostics in a virtual environment
US9716625B2 (en) Identifying compatible system configurations
US20180276318A1 (en) Adaptive bug-search depth for simple and deep counterexamples
CN113946854B (zh) 一种文件访问控制方法、装置及计算机可读存储介质
US20200285568A1 (en) Devices and methods for generating a stream of health-related data
JP7474761B2 (ja) ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法
US11184404B1 (en) Performing idempotent operations to scan and remediate configuration settings of a device
US12045160B2 (en) Systems and methods for training systems to detect software bugs
US10055516B1 (en) Testing open mobile alliance server payload on an open mobile alliance client simulator

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210727

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230929

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240415

R150 Certificate of patent or registration of utility model

Ref document number: 7474761

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150