IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マルクス、ブライアンの特許一覧

特表2022-510165ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-26
(54)【発明の名称】ソフトウェア・バグを検出するためにシステムをトレーニングするためのシステム及び方法
(51)【国際特許分類】
   G06F 11/36 20060101AFI20220119BHJP
   G06F 21/57 20130101ALI20220119BHJP
   G06F 9/455 20060101ALI20220119BHJP
   G09B 19/00 20060101ALI20220119BHJP
   G06F 11/34 20060101ALI20220119BHJP
【FI】
G06F11/36 164
G06F21/57 370
G06F9/455 150
G09B19/00 Z
G06F11/34 157
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021529701
(86)(22)【出願日】2019-11-26
(85)【翻訳文提出日】2021-07-21
(86)【国際出願番号】 US2019063287
(87)【国際公開番号】W WO2020112800
(87)【国際公開日】2020-06-04
(31)【優先権主張番号】62/771,345
(32)【優先日】2018-11-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
2.ZIGBEE
(71)【出願人】
【識別番号】521225166
【氏名又は名称】マルクス、ブライアン
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】マルクス、ブライアン
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA12
5B042GA22
5B042HH07
(57)【要約】
第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の事前定義されたソフトウェア・バグを備え、
前記第2の機械可読命令が、前記第1のクライアント計算システム及び前記管理計算システムに通信可能に結合された第2のクライアント計算システムに関連する、請求項1に記載の方法。
【請求項3】
前記仮想プロセッサを使用して、前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの識別を示す第2の入力を受信することと、
前記仮想プロセッサを使用して、前記管理計算システムに、前記第2の入力に関連する第2の信号を送信することであって、前記第2の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連する前記スコアを増加させる、第2の信号を送信することと
をさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のクライアント計算システムを使用してユーザ・インターフェースを表示することであって、
前記ユーザ・インターフェースが、第1のユーザ・インターフェース要素の選択に応答して、前記仮想プロセッサに前記第1の入力を受信させる前記第1のユーザ・インターフェース要素を備え、
前記ユーザ・インターフェースが、第2のユーザ・インターフェース要素の選択に応答して、前記仮想プロセッサに前記第2の入力を受信させる前記第2のユーザ・インターフェース要素を備え、
前記ユーザ・インターフェースがテキスト・ユーザ・インターフェース要素を備える、
ユーザ・インターフェースを表示することと、
前記第1のクライアント計算システムを使用して前記テキスト・ユーザ・インターフェース要素内でバイナリ・ファイルを表示することであって、前記バイナリ・ファイルが前記第1の機械可読命令のセット及び前記第2の機械可読命令のセットのうちの1つを表す、バイナリ・ファイルを表示することと
をさらに含む、請求項3に記載の方法。
【請求項5】
前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの前記識別を示す前記第1の入力を受信することは、
前記仮想プロセッサを使用して前記バイナリ・ファイルの修正を受信することであって、前記バイナリ・ファイルが前記第1の機械可読命令の前記セットを表す、前記バイナリ・ファイルの修正を受信することと、
前記仮想プロセッサを使用して、前記バイナリ・ファイルの前記修正に応答して前記第1のユーザ・インターフェース要素の前記選択を受信することと
をさらに含む、請求項4に記載の方法。
【請求項6】
前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの前記識別を示す前記第2の入力を受信することは、
前記仮想プロセッサを使用して前記バイナリ・ファイルの修正を受信することであって、前記バイナリ・ファイルが前記第2の機械可読命令の前記セットを表す、前記バイナリ・ファイルの修正を受信することと、
前記仮想プロセッサを使用して、前記バイナリ・ファイルの前記修正に応答して前記第2のユーザ・インターフェース要素の前記選択を受信することと
をさらに含む、請求項4に記載の方法。
【請求項7】
前記第1の機械可読命令の前記セットが前記第1の事前定義されたソフトウェア・バグを備え、
前記第2の機械可読命令の前記セットが前記第2の事前定義されたソフトウェア・バグを備える、請求項4から6までのいずれかに記載の方法。
【請求項8】
前記第1の事前定義されたソフトウェア・バグが、事前定義されたソフトウェア・バグのリストから選択される、請求項1から7までのいずれか一項に記載の方法。
【請求項9】
第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び第1の機械可読命令を備え、
前記第1の機械可読命令が第1の事前定義されたソフトウェア・バグを備える、
インスタンスを受信することと、
前記仮想プロセッサを使用して前記第1の機械可読命令を実行することであって、前記第1の機械可読命令を実行することは、
前記仮想プロセッサを使用して、前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成することと、
前記仮想プロセッサを使用して、前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムによる検証に応答して、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信することと
を含む、前記第1の機械可読命令を実行することと
を含む方法。
【請求項10】
計算リソースの前記パーティションが第2の機械可読命令を備え、
前記第2の機械可読命令が第2の事前定義されたソフトウェア・バグを備え、
前記第2の機械可読命令が、前記第1のクライアント計算システム及び前記管理計算システムに通信可能に結合された第2のクライアント計算システムに関連する、請求項9に記載の方法。
【請求項11】
前記仮想プロセッサを使用して、前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの識別を示す第2の入力を生成することと、
前記仮想プロセッサを使用して、前記管理計算システムに、前記第2の入力に関連する第2の信号を送信することであって、前記第2の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連する前記スコアを増加させる、第2の信号を送信することと
をさらに含む、請求項10に記載の方法。
【請求項12】
前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの前記識別を示す前記第1の入力を生成することは、
前記仮想プロセッサを使用してバイナリ・ファイルを修正することであって、
前記バイナリ・ファイルが前記第1の機械可読命令のセットを表し、
前記第1の機械可読命令の前記セットが前記第1の事前定義されたソフトウェア・バグを備える、バイナリ・ファイルを修正すること
をさらに含む、請求項11に記載の方法。
【請求項13】
前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの前記識別を示す前記第2の入力を生成することは、
前記仮想プロセッサを使用してバイナリ・ファイルを修正することであって、
前記バイナリ・ファイルが前記第2の機械可読命令のセットを表し、
前記第2の機械可読命令の前記セットが前記第2の事前定義されたソフトウェア・バグを備える、バイナリ・ファイルを修正すること
をさらに含む、請求項11に記載の方法。
【請求項14】
管理計算システムを使用して第1のクライアント計算システムに第1のインスタンスを送信することであって、
前記第1のインスタンスが前記管理計算システムの計算リソースの第1のパーティションを備え、
計算リソースの前記第1のパーティションが第1の仮想プロセッサ及び第1の機械可読命令を備え、
前記第1の機械可読命令が第1の事前定義されたソフトウェア・バグを備える、
第1のインスタンスを送信することと、
前記管理計算システムを使用して、前記第1のクライアント計算システムによって受信される第1の入力に関連する第1の信号を受信することであって、前記第1の入力が前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの識別を示す、第1の信号を受信することと、
前記管理計算システムを使用して前記第1の信号を検証することと、
前記管理計算システムを使用して、前記第1の信号の検証に応答して、前記第1のクライアント計算システムに関連する第1のスコアを増加させることと
を含む方法。
【請求項15】
前記管理計算システムを使用して、前記第1の信号の検証に応答して、前記第1のクライアント計算システムに第2の機械可読命令を送信することであって、前記第2の機械可読命令が第2の事前定義されたソフトウェア・バグを備える、第2の機械可読命令を送信すること
をさらに含む、請求項14に記載の方法。
【請求項16】
前記管理計算システムを使用して、前記第1のクライアント計算システムによって受信される第2の入力に関連する第2の信号を受信することであって、前記第2の入力が前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの識別を示す、第2の信号を受信することと、
前記管理計算システムを使用して前記第2の信号を検証することと、
前記管理計算システムを使用して、前記第2の信号の検証に応答して、前記第1のクライアント計算システムに関連する前記第1のスコアを増加させることと
をさらに含む、請求項15に記載の方法。
【請求項17】
前記管理計算システムを使用して第2のクライアント計算システムに第2のインスタンスを送信することであって、
前記第2のインスタンスが前記管理計算システムの計算リソースの第2のパーティションを備え、
計算リソースの前記第2のパーティションが第2の仮想プロセッサ及び第2の機械可読命令を備え、
前記第2の機械可読命令が第2の事前定義されたソフトウェア・バグを備える、
第2のインスタンスを送信することと、
前記管理計算システムを使用して、前記第2のクライアント計算システムによって受信される第2の入力に関連する第2の信号を受信することであって、前記第2の入力が前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの識別を示す、第2の信号を受信することと、
前記管理計算システムを使用して前記第2の信号を検証することと、
前記管理計算システムを使用して、前記第2の信号の検証に応答して、前記第2のクライアント計算システムに関連する第2のスコアを増加させることと
をさらに含む、請求項14に記載の方法。
【請求項18】
前記管理計算システムを使用してセッション・タイマーを開始することと、
前記管理計算システムを使用して、しきい値よりも大きい前記セッション・タイマーの値に応答して前記第1のクライアント計算システムに第2の機械可読命令を送信することと、
前記管理計算システムを使用して、前記第1のクライアント計算システムによって受信される第2の入力に関連する第2の信号を受信することであって、前記第2の入力が、前記第2の機械可読命令の前記第2の事前定義されたソフトウェア・バグの訂正を示す、第2の信号を受信することと、
前記管理計算システムを使用して前記第2の信号を検証することと、
前記管理計算システムを使用して、前記第2の信号の検証に応答して、前記第1のクライアント計算システムに関連する前記第1のスコアを増加させることと
をさらに含む、請求項14に記載の方法。
【請求項19】
前記しきい値よりも大きい前記セッション・タイマーの前記値に応答して前記セッション・タイマーをリセットすることをさらに含む、請求項18に記載の方法。
【請求項20】
前記管理計算システムを使用して、前記第1のクライアント計算システムが、事前定義された時間期間の間にオフラインであるという決定に応答して、前記第1のクライアント計算システムに関連する前記第1のスコアを減少させることをさらに含む、請求項14に記載の方法。
【請求項21】
1つ又は複数のプロセッサと、
機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体と
を備えるシステムであって、前記機械可読命令は、実行されたとき、前記1つ又は複数のプロセッサに、
管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備える、
インスタンスを受信することと、
機械可読命令の前記第1のセットを実行することであって、機械可読命令の前記第1のセットを実行することが、前記1つ又は複数のプロセッサに、
機械可読命令の前記第1のセットの前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信すること、及び
前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信すること
を行わせる、機械可読命令の前記第1のセットを実行することと
を行わせる、システム。
【請求項22】
1つ又は複数のプロセッサと、
機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体と
を備える機械学習システムであって、前記機械可読命令は、実行されたとき、前記機械学習システムに、
管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備える、
インスタンスを受信することと、
機械可読命令の前記第1のセットを実行することであって、機械可読命令の前記第1のセットを実行することが、前記機械学習システムに、
機械可読命令の前記第1のセットの前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成すること、及び
前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信すること
を行わせる、機械可読命令の前記第1のセットを実行することと
を行わせる、機械学習システム。
【請求項23】
第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備え、
計算リソースの前記パーティションが機械可読命令の第2のセットを備え、
機械可読命令の前記第2のセットが第2の事前定義されたソフトウェア・バグを備え、
機械可読命令の前記第2のセットが、前記第1のクライアント計算システム及び前記管理計算システムに通信可能に結合された第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つを表す、バイナリ・ファイルを表示することと
を含む方法。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、その内容全体が参照により本明細書に組み込まれる、2018年11月26日に出願された「Systems and Methods for Training Bug Detection Algorithms」という名称の米国仮出願第62/771,345号の利益を主張する。
【0002】
本開示は、ソフトウェア・バグ検出のためのシステム及び方法に関し、より詳細には、計算システム及びソフトウェア内の弱点の利用を可能にし、ひいてはシステム及びソフトウェアのコンプロマイズ(compromise)を可能にするシステム及び方法に関する。したがって、脆弱性(たとえば、ソフトウェア・バグ)を動的に識別し、前記脆弱性を利用し、前記脆弱性を改善するために、エンド・ユーザをトレーニングする必要がある。
【背景技術】
【0003】
計算システムは、第三者によって引き起こされる悪意のある操作に対して脆弱であり、システム又はソフトウェア内の弱点の利用を可能にし、ひいてはシステム又はソフトウェアのコンプロマイズを可能にし得る。したがって、シミュレートされるアプリケーション及びネットワーク・サービスに対する悪意のある操作を動的に識別し、それを改善するために、ユーザ及び/又はコンピュータ・システムをトレーニングするソフトウェア・バグ検出システムが必要である。
【発明の概要】
【課題を解決するための手段】
【0004】
一態様では、方法は、第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することを含み、インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び第1の機械可読命令を備える。第1の機械可読命令は第1の事前定義されたソフトウェア・バグを備える。本方法は、仮想プロセッサを使用して第1の機械可読命令を実行することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、第1の機械可読命令の第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、管理計算システムに、第1の入力に関連する第1の信号を送信することを含み、第1の信号は、管理計算システムによる検証に応答して、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。
【0005】
別の態様では、方法は、第1のクライアント計算システムを使用して、管理計算システムからのインスタンスを受信すること含み、インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び第1の機械可読命令を備える。第1の機械可読命令は第1の事前定義されたソフトウェア・バグを備える。本方法は、仮想プロセッサを使用して第1の機械可読命令を実行することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、第1の機械可読命令の第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成することを含む。第1の機械可読命令を実行することは、仮想プロセッサを使用して、管理計算システムに、第1の入力に関連する第1の信号を送信することを含み、第1の信号が、管理計算システムによる検証に応答して、管理計算システムに第1のクライアント計算システムに関連するスコアを生成させる。
【0006】
また別の態様では、方法は、管理計算システムを使用して、第1のクライアント計算システムに第1のインスタンスを送信することを含み、第1のインスタンスは管理計算システムの計算リソースの第1のパーティションを含む。計算リソースの第1のパーティションは第1の仮想プロセッサ及び第1の機械可読命令を備える。第1の機械可読命令は第1の事前定義されたソフトウェア・バグを備える。本方法は、管理計算システムを使用して、第1のクライアント計算システムによって受信される第1の入力に関連する第1の信号を受信することを含み、第1の入力は第1の機械可読命令の第1の事前定義されたソフトウェア・バグの識別を示す。本方法は、管理計算システムを使用して第1の信号を検証することを含む。本方法は、管理計算システムを使用して、第1の信号の検証に応答して、第1のクライアント計算システムに関連する第1のスコアを増加させることを含む。
【0007】
また別の態様では、システムは、1つ又は複数のプロセッサと、機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体とを含み、機械可読命令は、実行されたとき、1つ又は複数のプロセッサに、管理計算システムからのインスタンスを受信させる。インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び機械可読命令の第1のセットを含む。機械可読命令の第1のセットは第1の事前定義されたソフトウェア・バグを含む。機械可読命令を実行することは、1つ又は複数のプロセッサに機械可読命令の第1のセットを実行させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、機械可読命令の第1のセットの第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、管理計算システムに、第1の入力に関連する第1の信号を送信させ、第1の信号は、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。
【0008】
また別の態様では、機械学習システムは、1つ又は複数のプロセッサと、機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体とを含み、機械可読命令は、実行されたとき、1つ又は複数のプロセッサに、管理計算システムからのインスタンスを受信させる。インスタンスは管理計算システムの計算リソースのパーティションを含む。計算リソースのパーティションは仮想プロセッサ及び機械可読命令の第1のセットを含む。機械可読命令の第1のセットは第1の事前定義されたソフトウェア・バグを含む。機械可読命令を実行することは、1つ又は複数のプロセッサに機械可読命令の第1のセットを実行させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、機械可読命令の第1のセットの第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信させる。機械可読命令の第1のセットを実行することは、1つ又は複数のプロセッサに、管理計算システムに、第1の入力に関連する第1の信号を送信させ、第1の信号は、管理計算システムに、第1のクライアント計算システムに関連するスコアを生成させる。
【0009】
また別の態様では、方法は、第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つを表す。
【0010】
本技術のこれらの及び他の特徴、及び特性、並びに、動作の方法、及び構造の関係する要素の機能、及び部品の組合せ及び製造の経済は、様々な図において同様の参照番号が対応する部分を指定する、それのすべてが本明細書の一部を形成する、添付の図面を参照しながら、以下の説明及び添付の特許請求の範囲を検討すると、より明らかになろう。しかしながら、図面は、例示及び説明の目的のみのためであり、本開示の限界の定義として意図されないことが明確に理解されるべきである。本明細書において及び特許請求の範囲において使用される際、「a」、「an」、及び「the」の単数形は、コンテキストが別段に明らかに規定しない限り、複数の指示対象を含む。
【0011】
図面中に記載されている実施例は、本質において説明的で例示例であり、特許請求の範囲によって定義された主題を限定するものではない。例示的な実施例の以下の詳細な説明は、同様の構造が同様の参照番号で示されている、以下の図面とともに読まれたときに理解され得る。
【図面の簡単な説明】
【0012】
図1】本明細書で図示し、説明する1つ又は複数の実施例による例示的なソフトウェア・バグ検出システムを概略的に示す図である。
図2A】本明細書で図示し、説明する1つ又は複数の実施例による例示的なソフトウェア・バグ検出システム内に含まれている例示的なモジュール及び構成要素の機能ブロック図を概略的に示す図である。
図2B】本明細書で図示し、説明する1つ又は複数の実施例による別の例示的なソフトウェア・バグ検出システム内に含まれている例示的なモジュール及び構成要素の機能ブロック図を概略的に示す図である。
図3A】本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムの複数のコンテナを展開する例示的な方法の流れ図を示す図である。
図3B】本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムの管理計算システムの例示的なユーザ・インターフェースを概略的に示す図である。
図4A】本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのインスタンスのソフトウェア・バグを識別する例示的な方法の流れ図を示す図である。
図4B】本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのインスタンスのソフトウェア・バグを識別する例示的な方法の流れ図を示す図である。
図4C】本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのシミュレーション・セッション中にクライアント計算システムにソフトウェア・バグを動的に展開する管理計算システムの例示的な方法の流れ図を示す図である。
図4D】本明細書で図示し、説明する1つ又は複数の実施例によるソフトウェア・バグ検出システムのクライアント計算システムの例示的なユーザ・インターフェースを概略的に示す図である。
【発明を実施するための形態】
【0013】
図を参照すると、本開示の実施例は、一般に、複数のクライアント計算システムを使用して、事前定義されたソフトウェア・バグを識別するために、ユーザ又はコンピュータ・システムをトレーニングするためのデバイス、システム、及び方法を対象にしている。実施例では、管理計算システムが複数のクライアント計算システムに通信可能に結合され、管理計算システムはクライアント計算システムの各々に仮想計算リソースを展開する。仮想計算リソースは、それぞれ、仮想プロセッサによって実行可能である機械可読命令を含み得、機械可読命令の各々は、展開の前に管理計算システムのアドミニストレータによって定義される1つ又は複数のソフトウェア・バグを含み得る。
【0014】
シミュレーション・セッション中に、クライアント計算システムの各々のユーザ(又はクライアント計算システムがトレーニングされている実施例ではクライアント計算システム自体)は、それらのそれぞれの展開される機械可読命令を評価し、事前定義されたソフトウェア・バグの位置を特定し、補正し、補正された事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システムのユーザが、事前定義されたソフトウェア・バグを適切に補正したことを、管理計算システムが検証したことに応答して、管理計算システムは、対応するクライアント計算システムに関連するスコアを増加させる。
【0015】
同様に、クライアント計算システムの各々のユーザ(又はクライアント計算システムがトレーニングされている実施例ではクライアント計算システム自体)は、他のクライアント計算システムに展開される機械可読命令を評価し、他のクライアント計算システムの事前定義されたソフトウェア・バグの位置を特定し、利用し、利用される事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システムのユーザが、事前定義されたソフトウェア・バグを適切に利用したことを、管理計算システムが検証したことに応答して、管理計算システムは、対応するクライアント計算システムに関連するスコアを増加させる。
【0016】
シミュレーション・セッションが完了すると、管理計算システムは、複数の計算システムの各クライアント計算システムについてスコアを生成し、報告し得る。その後、管理計算システムは、クライアント計算システムの各クライアント計算システムのランク付けを示す報告をランク付けし、生成し得る。
【0017】
したがって、ソフトウェア・バグ検出システムは、ユーザ及び/又はシステムが、メモリ破損問題、メモリ脆弱性問題、メモリ開示問題、情報漏洩問題、論理脆弱性問題、暗号問題など、悪意のある第三者行為により起こり得る様々な計算システム及びネットワーク問題を識別し、補正するそれらの能力を改善することを可能にする。
【0018】
本明細書で使用する際、用語「ソフトウェア・バグ」は、アプリケーション・サービス及び計算システムのネットワークのうちの少なくとも1つに関連する、エラー、不具合、障害、及び/又は脆弱性を指す。本明細書で使用する際、用語「事前定義されたソフトウェア・バグ」は、アプリケーション・サービス及び計算システムのネットワークのうちの少なくとも1つに関連する、エラー、不具合、障害、及び/又は脆弱性のリストから選択されるエラー、不具合、障害、及び/又は脆弱性を指す。
【0019】
次に図1を参照すると、ソフトウェア・バグ検出システム10が概略的に示されている。実施例では、ソフトウェア・バグ検出システム10は、管理計算システム20と、(まとめてクライアント計算システム30と呼ばれる)第1のクライアント計算システム30-1と、第2のクライアント計算システム30-2と、第3のクライアント計算システム30-3とを含む。3つのクライアント計算システム30が示されているが、ソフトウェア・バグ検出システム10は、他の実施例では任意の数のクライアント計算システム30を含み得ることを理解すべきである。クライアント計算システム30と管理計算システムとはネットワーク80を介して通信可能に結合され得る。
【0020】
図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)計算システムであり得る。
【0021】
実施例では、アドミニストレータ40は、管理計算システム20を使用して、クライアント計算システム30の各々に仮想計算リソースを展開する。仮想計算リソースは、それぞれ、仮想プロセッサによって実行可能である機械可読命令を含み得、機械可読命令の各々は、以下でさらに詳細に説明するように、展開の前にアドミニストレータ40又は管理計算システム20によって定義される1つ又は複数のソフトウェア・バグを含み得る。
【0022】
様々な実施例では、アドミニストレータ40は、管理計算システム20を使用して、シミュレーション・セッションの様々なパラメータと、クライアント計算システム30の各々に展開される仮想計算リソースとを定義し得る。非限定的な実例として、以下で図3A図3Bを参照しながらさらに詳細に説明するように、アドミニストレータ40は、ユーザ50の各々を特定のクライアント計算システム30に割り当て、クライアント計算システム30の各々に展開される機械可読命令内に含めるためのソフトウェア・バグを定義し、シミュレーション・セッションの長さを定義し得る。
【0023】
シミュレーション・セッションのパラメータが定義されると、アドミニストレータ40は、管理計算システム20を使用してクライアント計算システム30に仮想計算リソースを展開し得る。以下で図4Aを参照しながらさらに詳細に説明するように、シミュレーション・セッション中に、クライアント計算システム30の各々のユーザ50(又はユーザ対話なしにクライアント計算システム30)は、それらのそれぞれの展開される機械可読命令を評価し、事前定義されたソフトウェア・バグの位置を特定し、補正し、補正された事前定義されたソフトウェア・バグを検証のために管理計算システム20にサブミットし得る。対応するクライアント計算システム30のユーザ50(又はユーザ対話なしにそれぞれのクライアント計算システム30)が、事前定義されたソフトウェア・バグを適切に補正したことを、管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システム30に関連するスコアを増加させる。
【0024】
さらに、以下で図4Bを参照しながらさらに詳細に説明するように、シミュレーション・セッション中に、クライアント計算システム30の各々のユーザ50は、他のクライアント計算システム30に展開される機械可読命令を評価し、他のクライアント計算システム30の事前定義されたソフトウェア・バグの位置を特定し、利用し、利用される事前定義されたソフトウェア・バグを検証のために管理計算システム20にサブミットし得る。対応するクライアント計算システム30のユーザが、事前定義されたソフトウェア・バグを適切に利用したことを、管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システムに関連するスコアを増加させる。クライアント計算システム30の各々に展開される1つ又は複数のソフトウェア・バグは、シミュレーション・セッション中に、事前定義された時間期間の後に交替させられ得ることを理解すべきである。
【0025】
シミュレーション・セッションが完了すると、管理計算システム20は、以下で図4Cを参照しながらさらに詳細に説明するように、クライアント計算システム30の各々についてスコアを生成し、報告し得る。
【0026】
図2Aを参照すると、ソフトウェア・バグ検出システム10-1内に含まれている例示的なモジュール及び構成要素の機能ブロック図が概略的に示されている。図2Aに示されているように、管理計算システム20は、一般に、通信インターフェース52と、1つ又は複数のプロセッサ54と、ネットワーク・インターフェース・ハードウェア56と、データ記憶構成要素58と、入出力ハードウェア60と、1つ又は複数の非一時的コンピュータ可読媒体62とを含む。1つ又は複数の非一時的コンピュータ可読媒体62は、オペレーティング・システム・カーネル64と、コンテナ・マネージャ・モジュール66と、スコアリング・モジュール68と、セッション・モジュール70と、サービス作成モジュール72と、トラフィック・キャプチャ・モジュール74と、サービス・レベル契約チェッカー・モジュール76とを含む。管理計算システム20の構成要素は通信インターフェース52を通して物理的に及び/又は通信可能に結合され得る。
【0027】
通信インターフェース52は、信号を送信する媒体から形成される。非限定的な実例として、通信インターフェース52は、導線、導電トレース、光導波路などから形成される。通信インターフェース52はまた、電磁放射及びそれらの対応する電磁波が伝搬される広がり(expanse)を指し得る。その上、通信インターフェース52は、信号を送信する媒体の組合せから形成され得る。一実施例では、通信インターフェース52は、管理計算システム20の様々な構成要素との間の電気データ信号の送信を可能にするように協働する、導電トレースと導線とコネクタとバスとの組合せを含む。さらに、用語「信号」は、DC、AC、正弦波、三角波、方形波、振動などの媒体中を進行する(たとえば、電気、光、磁気、機械又は電磁)波形を意味することに留意されたい。
【0028】
それの各々がコンピュータ処理ユニット(CPU)であり得る1つ又は複数のプロセッサ54は、1つ又は複数の非一時的コンピュータ可読媒体62中に記憶される機械可読命令を受信し、実行し得る。非限定的な実例として、1つ又は複数のプロセッサ54は共有プロセッサ回路、専用プロセッサ回路、又はグループ・プロセッサ回路のうちの1つであり得る。本明細書で説明するように、用語「共有プロセッサ回路」は、複数のモジュールからのいくつかの又はすべての機械可読命令を実行する単一のプロセッサ回路を指す。本明細書で説明するように、用語「グループ・プロセッサ回路」は、追加のプロセッサ回路と組み合わせて、1つ又は複数の非一時的コンピュータ可読媒体の複数のモジュールからのいくつかの又はすべての機械実行可能命令を実行するプロセッサ回路を指す。複数のプロセッサ回路への言及は、別々のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、又は上記の組合せを包含する。
【0029】
入出力ハードウェア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つ又は複数のデータベース・サーバを含み得る。
【0030】
1つ又は複数の非一時的コンピュータ可読媒体62は1つ又は複数のプロセッサ54に通信可能に結合される。非限定的な実例として、1つ又は複数の非一時的コンピュータ可読媒体62は共有メモリ回路、専用メモリ回路、又はグループ・メモリ回路のうちの1つであり得る。本明細書で説明するように、用語「共有メモリ回路」は、以下でさらに詳細に説明される、複数のモジュールからのいくつかの又はすべての機械可読命令を記憶する単一のメモリ回路を指す。本明細書で説明するように、用語「グループ・メモリ回路」は、追加のメモリと組み合わせて、複数のモジュールからのいくつかの又はすべての機械可読命令を記憶するメモリ回路を指す。1つ又は複数の非一時的コンピュータ可読媒体62の非限定的な実例は、(SRAM、DRAM、及び/又は他のタイプのランダム・アクセス・メモリを含む)ランダム・アクセス・メモリ、読取り専用メモリ(ROM:read-only memory)、フラッシュ・メモリ、レジスタ、コンパクト・ディスク(CD:compact discs)、デジタル・バーサタイル・ディスク(DVD:digital versatile discs)、及び/又は他のタイプの記憶構成要素を含む。
【0031】
図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とを含むことを理解すべきである。
【0032】
通信インターフェース82は、信号を送信する媒体から形成される。非限定的な実例として、通信インターフェース82は、導線、導電トレース、光導波路などから形成される。通信インターフェース82はまた、電磁放射及びそれらの対応する電磁波が伝搬される広がりを指し得る。その上、通信インターフェース82は、信号を送信する媒体の組合せから形成され得る。一実施例では、通信インターフェース82は、第1のクライアント計算システム30-1の様々な構成要素との間の電気データ信号の送信を可能にするように協働する、導電トレースと導線とコネクタとバスとの組合せを含む。
【0033】
それの各々がコンピュータ処理ユニット(CPU)であり得る1つ又は複数のプロセッサ84は、1つ又は複数の非一時的コンピュータ可読媒体92中に記憶される機械可読命令を受信し、実行し得る。非限定的な実例として、1つ又は複数のプロセッサ84は、共有プロセッサ回路、専用プロセッサ回路、又はグループ・プロセッサ回路のうちの1つであり得る。
【0034】
入出力ハードウェア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つ又は複数のデータベース・サーバを含み得る。
【0035】
1つ又は複数の非一時的コンピュータ可読媒体92は1つ又は複数のプロセッサ84に通信可能に結合される。非限定的な実例として、1つ又は複数の非一時的コンピュータ可読媒体92は共有メモリ回路、専用メモリ回路、又はグループ・メモリ回路のうちの1つであり得る。1つ又は複数の非一時的コンピュータ可読媒体92の非限定的な実例は、(SRAM、DRAM、及び/又は他のタイプのランダム・アクセス・メモリを含む)ランダム・アクセス・メモリ、読取り専用メモリ(ROM)、フラッシュ・メモリ、レジスタ、コンパクト・ディスク(CD)、デジタル・バーサタイル・ディスク(DVD)、及び/又は他のタイプの記憶構成要素を含む。
【0036】
次に、図2Aを参照しながら、管理計算システム20及び第1のクライアント計算システム30-1の様々なモジュールの説明を行う。本明細書で説明するように、用語「モジュール」は、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、デジタル、アナログ、又は混合アナログ/デジタル個別又は集積回路、組合せ論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、プロセッサ回路によって実行される機械可読命令を記憶するメモリ回路、説明される機能を与える他の好適なハードウェア構成要素、又は上記のいくつか若しくはすべての組合せを指すか、それらのうちの一部であるか、又はそれらを含み得る。
【0037】
コンテナ・マネージャ・モジュール66は、ソフトウェア・バグ検出システム10-1中のコンテナであるインスタンス93を定義し、第1のクライアント計算システム30-1に展開する。本明細書で定義するように、フレーズ「コンテナ」は、それぞれのクライアント計算システム30の対応するモジュールが、管理計算システム20の計算リソースを使用して実行可能であり、別々に実行可能であるように、機械可読命令及びすべてのそれの依存性を含む、ソフトウェア・パッケージを指す。コンテナ・マネージャ・モジュール66はクライアント計算システム30の各々に機械可読命令及びインスタンス93のそれぞれの依存性を展開し、クライアント計算システム30の各々はオペレーティング・システム・カーネル64を共有し得る。
【0038】
スコアリング・モジュール68は、シミュレーション・セッションの実行の間及び/又は後にクライアント計算システム30の各々についてスコアを生成する。以下で、たとえば、図4A図4Cを参照しながら、スコアリング・モジュール68に関するさらなる詳細についてさらに詳細に説明する。セッション・モジュール70は、アドミニストレータ40がシミュレーション・セッションのいくつかのパラメータを定義することを可能にする。以下で、図3A図3Bを参照しながら、セッション・モジュール70に関するさらなる詳細について説明する。
【0039】
サービス作成モジュール72は、アドミニストレータ40がクライアント計算システム30の各々のアプリケーション・サービスのためのソフトウェア・バグを定義することを可能にする。トラフィック・キャプチャ・モジュール74は、アドミニストレータ40がクライアント計算システム30の各々のネットワーク・トラフィックのソフトウェア・バグを定義することを可能にする。以下で、たとえば、図3A図3Bを参照しながら、サービス作成モジュール72及びトラフィック・キャプチャ・モジュール74に関するさらなる詳細についてさらに詳細に説明する。サービス・レベル契約チェッカー・モジュール76は、シミュレーション・セッション中にクライアント計算システム30の各々のオフライン・ステータスを決定する。以下で、たとえば、図4A図4Bを参照しながら、サービス・レベル契約チェッカー・モジュール76に関するさらなる詳細についてさらに詳細に説明する。
【0040】
上記で説明したように、インスタンス93は第1のクライアント計算システム30-1にコンテナとして展開される。インスタンス93の機械可読命令は、仮想プロセッサ94と、仮想メモリ96と、ゲーミング・モジュール98と、ランタイム・システム100とを含む。
【0041】
仮想メモリ96は、ゲーミング・モジュール98及びランタイム・システム100のための基本サービスを与える、基礎となるオペレーティング・システムを含む。ゲーミング・モジュール98は、シミュレーション・セッション中に生成されるクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含む。ランタイム・システム100は、たとえば、第2のクライアント計算システム30-2及び第3のクライアント計算システム30-3に対して、第1のクライアント計算システム30-1に展開されるインスタンス93が別々に実行されることを可能にする環境を与える。
【0042】
図2Bを参照しながら、ソフトウェア・バグ検出システム10-2内に含まれている例示的なモジュール及び構成要素の別の例示的な機能ブロック図が概略的に示されている。ソフトウェア・バグ検出システム10-2は、図2Aに示されたソフトウェア・バグ検出システム10-1と同様であるが、この実施例では、インスタンス93は仮想マシンとして展開される。本明細書で使用する際、フレーズ「仮想マシン」は、インスタンス93が管理計算システム20のエミュレーションであるように、機械可読命令及びすべてのそれの依存性を含むソフトウェア・パッケージを指す。各仮想マシンは、それ自体のゲスト・オペレーティング・システム104を含み得(たとえば、各仮想マシンはそれ自体のオペレーティング・システムを含み得る)、仮想マシンのハードウェアは仮想化され得る。したがって、仮想マシンのハイパーバイザ102は、シミュレーション・セッション中のクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含み得る。
【0043】
次に、図2Bを参照しながら、管理計算システム20及び第1のクライアント計算システム30-1の様々なモジュールの説明を与える。
【0044】
ハイパーバイザ102は、シミュレーション・セッション中のクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含み得る。
【0045】
スコアリング・モジュール68は、シミュレーション・セッションの実行の間及び/又は後にクライアント計算システム30の各々についてスコアを生成する。以下で、たとえば、図4A図4Cを参照しながら、スコアリング・モジュール68に関するさらなる詳細についてさらに詳細に説明する。セッション・モジュール70は、アドミニストレータ40がシミュレーション・セッションのいくつかのパラメータを定義することを可能にする。以下で、図3A図3Bを参照しながら、セッション・モジュール70に関するさらなる詳細について説明する。
【0046】
サービス作成モジュール72は、アドミニストレータ40がクライアント計算システム30の各々のアプリケーション・サービスのためのソフトウェア・バグを定義することを可能にする。トラフィック・キャプチャ・モジュール74は、アドミニストレータ40がクライアント計算システム30の各々のネットワーク・トラフィックのソフトウェア・バグを定義することを可能にする。以下で、たとえば、図3A図3Bを参照しながら、サービス作成モジュール72及びトラフィック・キャプチャ・モジュール74に関するさらなる詳細についてさらに詳細に説明する。サービス・レベル契約チェッカー・モジュール76は、シミュレーション・セッション中にクライアント計算システム30の各々のオフライン・ステータスを決定する。以下で、たとえば、図4A図4Bを参照しながら、サービス・レベル契約チェッカー・モジュール76に関するさらなる詳細についてさらに詳細に説明する。
【0047】
インスタンス93は第1のクライアント計算システム30-1に仮想マシンとして展開される。インスタンス93の機械可読命令は、仮想プロセッサ94と、仮想メモリ96と、ゲーミング・モジュール98と、ランタイム・システム100と、ゲスト・オペレーティング・システム104とを含む。
【0048】
仮想メモリ96は、ゲーミング・モジュール98及びランタイム・システム100のための基本サービスを与える、基礎となるオペレーティング・システムを含む。ゲーミング・モジュール98は、シミュレーション・セッション中に生成されるクライアント計算システム30のユーザ・インターフェースに対応する機械可読命令と、アプリケーション・サービスと、ネットワーク・トラフィック・サービスと、アドミニストレータ40又は管理計算システム20によって定義されるソフトウェア・バグとを含む。ランタイム・システム100は、たとえば、第2のクライアント計算システム30-2及び第3のクライアント計算システム30-3に対して、第1のクライアント計算システム30-1に展開されるインスタンス93が別々に実行されることを可能にする環境を与える。
【0049】
図2A図2Bを参照しながら上記で説明した実施例は、第1のクライアント計算システム30-1がユーザ50-1によって制御され、動作させられることを示すが、ユーザ50-1からの入力又は行為を必要とする、図2A図2Bに記載されている機能のうちのいくつかはクライアント計算システム30によってのみ実行され得ることを理解すべきである。非限定的な実例として、第1のクライアント計算システム30ー1は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して、及びユーザ50-1からの入力なしに上記で説明した機能を実行するAI計算システムであり得る。
【0050】
図3Aを参照すると、ソフトウェア・バグ検出システム10の複数のインスタンス93を展開する例示的な方法300の流れ図が示されている。図3Aに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。いくつかの実施例では、本明細書で説明されていない追加のブロックも実行され得る。さらに、図3Aに示されたいくつかのブロックは、管理計算システム20を使用してアドミニストレータ40によって実行されるとして説明されるが、図3Aのブロックに記載されている機能のいくつか又はすべては管理計算システム20によってのみ実行され得る(たとえば、管理計算システム20は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びアドミニストレータ40からの入力なしに図3Aに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
【0051】
図1図2A図2B、及び図3Aを参照すると、アドミニストレータ40は、ブロック305において管理計算システム20のサービス作成モジュール72を使用してユーザ50(たとえば、第1のクライアント計算システム30-1に関連するユーザ50-1)から第1のチームを選択する。
【0052】
まだ図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)を保証するために新しい及び/又はランダム・メモリ・ロケーションが選択されることを理解すべきである。
【0053】
さらに、ブロック310において、アドミニストレータ40は、事前定義されたソフトウェア・バグに関連するアプリケーション・サービス及び/又はネットワーク・サービスを選択し得る。図3Bに非限定的な実例として示されているように、アドミニストレータ40は、ユーザ・インターフェース要素350を選択することによってメッセンジャー・アプリケーション・サービスを選択し得る。アドミニストレータ40は、他の実施例では、電子メール・アプリケーション・サービス、インターネット・アプリケーション・サービス、及び/又はカスタム・アプリケーション・サービスを選択し得ることを理解すべきである。
【0054】
まだ図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に展開する。
【0055】
図1図2A図2B、及び図3Aを参照すると、ブロック325において、管理計算システム20は、ソフトウェア・バグ検出システム10内に追加のチームが含まれるかどうかを決定する。本明細書で使用する際、用語「チーム」は、個人、個々人からなるグループ、AI計算システム、又はAI計算システムのグループを指す。そうである場合、方法300はブロック330に進む。ブロック330において及び図1図2A図2B、及び図3Aを参照しながら、管理計算システム20は、次のチームを選択し、ブロック310に進む。ブロック325において、管理計算システム20が、ソフトウェア・バグ検出システム10内に追加のチームが含まれないことを決定した場合、方法300は終了する。
【0056】
図4Aを参照すると、ソフトウェア・バグ検出システム10のシミュレーション・セッション中にそれぞれのクライアント計算システム30に展開されるインスタンス93のソフトウェア・バグを識別する例示的な方法400の流れ図が示されている。図4Aに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。いくつかの実施例では、本明細書で説明されていない追加のブロックが実行され得る。さらに、図4Aに示されたいくつかのブロックは、クライアント計算システム30のユーザ50によって実行されるとして説明されるが、図4Aのブロックに記載されている機能のいくつか又はすべてはクライアント計算システム30によってのみ実行され得る(たとえば、クライアント計算システム30は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びユーザ50からの入力なしに図4Aに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
【0057】
図1図2A図2B図4A、及び図4Dを参照すると、ブロック405において、第1のクライアント計算システム30-1のユーザ50-1は、インスタンス93のゲーミング・モジュール98を使用して、他のクライアント計算システム30の対向するコンテナ(又は仮想マシン)(たとえば、第2のクライアント計算システム30-2及び第3のクライアント計算システム30-3に展開されるインスタンス93)の事前定義されたソフトウェア・バグを識別する。
【0058】
いくつかの実施例では、図4Dに示されているように、シミュレーション・セッションが開始したとき、インスタンス93を実行することは、各クライアント計算システム30にユーザ・インターフェース700を生成させる。ユーザ・インターフェース700は、クライアント計算システム30の各々のスコアを示すスコアカード部分705と、第1のクライアント計算システム30-1に展開される計算リソースに関連する様々なメトリクスを示すチーム・ヘルス部分710と、現在のシミュレーション・セッションの進捗値を示すラウンド情報715とを含む。ユーザ・インターフェース700は、管理計算システム20がインスタンス93をクライアント計算システム30に展開することに応答して開始される、セッション・タイマーの現在値を示す時間情報720を含む。いくつかの実施例では、セッション・タイマーは、新しいシミュレーション・セッションが実行されたときにリセットされ得る。
【0059】
ユーザ・インターフェース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とを含む。
【0060】
非限定的な実例として、第1のクライアント計算システム30-1のユーザ50-1は、ダウンロードPCAPユーザ・インターフェース要素750とダウンロード・バイナリ・ユーザ・インターフェース要素755とのうちの少なくとも1つを選択することによって、他のクライアント計算システム30の事前定義されたソフトウェア・バグを識別し得る。ダウンロードPCAPユーザ・インターフェース要素750とダウンロード・バイナリ・ユーザ・インターフェース要素755とのうちの1つの選択に応答して、ユーザ・インターフェース700は、他のクライアント計算システム30に展開される事前定義されたソフトウェア・バグに関連するバイナリ・ファイルを表示し得る。その後、第1のクライアント計算システム30-1のユーザ50-1は、テキスト・ユーザ・インターフェース内でバイナリ・ファイルを選択的に修正することによって、他のクライアント計算システム30の事前定義されたソフトウェア・バグの位置を特定し、利用し得る。
【0061】
図1図2A図2B図4A、及び図4Dを参照すると、ブロック410において、ユーザ50-1は、アップロード・バイナリ・ユーザ・インターフェース要素735を選択することによって、利用される事前定義されたソフトウェア・バグを検証のためにサブミットする。
【0062】
図1図2A図2B図4A、及び図4Dを参照すると、ブロック415において、アドミニストレータ40又は管理計算システム20は、ユーザ50-1によって識別される利用される事前定義されたソフトウェア・バグが検証されたかどうかを決定する。非限定的な実例として、アドミニストレータ40又は管理計算システム20は、ユーザ50-1が、対応するクライアント計算システム30に展開されるソフトウェア・バグに基づいて、事前定義されたソフトウェア・バグを適切に識別し、利用したかどうかを決定し得る。そうである場合、方法400は、ブロック420に進み、第1のクライアント計算システム30-1のスコアを更新する。他の場合、方法400はブロック425に進む。
【0063】
図1図2A図2B図4A、及び図4Dを参照すると、ブロック425において、インスタンス93は、フィード中に新しいエントリがあるかどうかを決定する(たとえば、インスタンス93は、他のクライアント計算システム30の追加の機械可読命令がダウンロードのために利用可能であるかどうかを決定する)。そうである場合、方法400は、ブロック430に進み、第1のクライアント計算システム30-1が新しいアプリケーション・サービス及び/又はトラフィック・キャプチャをダウンロードし、次いでブロック405に進む。他の場合、方法400はブロック435に進む。
【0064】
図1図2A図2B図4A、及び図4Dを参照すると、ブロック435において、インスタンス93は、シミュレーション・セッションが経過したかどうかを決定する。いくつかの実施例では、シミュレーション・セッションが経過していることは、時間情報720によって表示されるタイマー値によって示され得る。そうである場合、方法400は終了する。他の場合、方法400はブロック405に進む。
【0065】
図4Bを参照すると、ソフトウェア・バグ検出システム10のシミュレーション・セッション中に別のクライアント計算システム30に展開されるインスタンス93のソフトウェア・バグを識別する例示的な方法500の流れ図が示されている。図4Bに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。さらに、図4Bに示されたいくつかのブロックはクライアント計算システム30のユーザ50によって実行されるとして説明されるが、図4Bのブロックに記載されている機能のいくつか又はすべてはクライアント計算システム30によってのみ実行され得る(たとえば、クライアント計算システム30は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びユーザ50からの入力なしに図4Bに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
【0066】
図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に展開される事前定義されたソフトウェア・バグに関連するバイナリ・ファイルを表示し得る。
【0067】
図1図2A図2B図4B、及び図4Dを参照すると、ブロック510において、ユーザ50-1は、第1のクライアント計算システム30-1に展開される事前定義されたソフトウェア・バグをデバッグする。非限定的な実例として、第1のクライアント計算システム30-1のユーザ50-1は、テキスト・ユーザ・インターフェース内でバイナリ・ファイルを選択的に修正することによって、第1のクライアント計算システム30-1の事前定義されたソフトウェア・バグの位置を特定し、補正し得る。さらに、ブロック510において、ユーザ50-1は、アップロード・バイナリ・ユーザ・インターフェース要素735を選択することよって、デバッグされるソフトウェア・バグを検証のためにサブミットする。
【0068】
図1図2A図2B図4B、及び図4Dを参照すると、ブロック515において、アドミニストレータ40又は管理計算システム20は、ユーザ50-1によって識別され、補正された事前定義されたソフトウェア・バグが検証されたかどうかを決定する。非限定的な実例として、アドミニストレータ40又は管理計算システム20は、ユーザ50-1が、対応するクライアント計算システム30に展開されるソフトウェア・バグに基づいて、事前定義されたソフトウェア・バグを適切に識別し、補正したかどうかを決定し得る。そうである場合、方法500は、ブロック520に進み、第1のクライアント計算システム30-1のスコアを更新する。他の場合、方法500はブロック525に進む。
【0069】
図1図2A図2B図4B、及び図4Dを参照すると、ブロック525において、インスタンス93は、フィード中に新しいエントリがあるかどうかを決定する(たとえば、インスタンス93は、第1のクライアント計算システム30-1の追加の機械可読命令がダウンロードのために利用可能であるかどうかを決定する)。そうである場合、方法500は、ブロック530に進み、第1のクライアント計算システム30-1が新しいアプリケーション・サービス及び/又はトラフィック・キャプチャをダウンロードし、次いで、ブロック505に進む。他の場合、方法500はブロック535に進む。
【0070】
図1図2A図2B、及び図4Bを参照すると、ブロック535において、インスタンス93は、シミュレーション・セッションが経過したかどうかを決定する。そうである場合、方法500は終了する。他の場合、方法400はブロック505に進む。
【0071】
図4Cを参照すると、シミュレーション・セッション中に、ソフトウェア・バグをクライアント計算システム30に動的に展開する管理計算システム20の例示的な方法600の流れ図が示されている。図4Cに示されたブロックはすべて行われるとして及び特定の順序で示されているが、他の実施例では、ブロックのうちの1つ又は複数は実行されないことがあり、いくつかの実施例では、ブロックのうちの1つ又は複数は、本明細書で図示され、説明された順序とは異なる順序で実行され得る。さらに、図4Cに示されたいくつかのブロックは、管理計算システム20を使用してアドミニストレータ40によって実行されるとして説明されるが、図4Cのブロックに記載されている機能のいくつか又はすべては管理計算システム20によってのみ実行され得る(たとえば、管理計算システム20は、機械学習及び/又はディープ・ラーニング・アルゴリズムを使用して及びアドミニストレータ40からの入力なしに図4Cに記載されている機能を実行するAI計算システムであり得る)ことを理解すべきである。
【0072】
図1図2A図2B、及び図4Cを参照すると、ブロック605において、アドミニストレータ40又は管理計算システム20は、ユーザ50によってサブミットされた事前定義されたソフトウェア・バグが検証されたかどうかを決定する。非限定的な実例として、アドミニストレータ40又は管理計算システム20は、ユーザ50-1が、対応するクライアント計算システム30に展開されたソフトウェア・バグに基づいて、事前定義されたソフトウェア・バグを適切に識別し、補正又は利用したかどうかを決定し得る。別の非限定的な実例として、クライアント計算システム30のパーセンテージが、事前定義されたソフトウェア・バグの位置を特定し、利用することに成功し、そのパーセンテージが所定のしきい値パーセンテージよりも大きい場合、管理計算システム20は、事前定義されたソフトウェア・バグを検証する。そうである場合、方法600はブロック610に進む。他の場合、方法600はブロック605に留まる。
【0073】
図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に進む。
【0074】
シミュレーション・セッションが完了する(たとえば、図4Aの方法400、図4Bの方法500、及び図4Cの方法600のうちの1つが終了する)と、管理計算システム20のスコアリング・モジュール68はクライアント計算システム30の各々についてスコアを生成し、報告し得る。その後、管理計算システム20は、クライアント計算システム30をランク付けし、各々のランク付けを示す報告を生成し得る。いくつかの実施例では、事前定義されたしきい値よりも大きい時間期間の間、それぞれのクライアント計算システムがオフラインであったことをサービス・レベル契約チェッカー・モジュール76が決定したことに応答して、スコアリング・モジュール68はクライアント計算システム30のうちの1つについてスコアを調整し(たとえば、減少させ)得る。
【0075】
ここで、本明細書で説明した実施例は、クライアント計算システム30を使用して、事前定義されたソフトウェア・バグを識別するためのデバイス、システム、及び方法に関することを理解すべきである。上記で説明したように、クライアント計算システム30の各々のユーザ50(又はユーザ介入なしにクライアント計算システム30のうちの1つ又は複数)は、それらのそれぞれの展開される機械可読命令を評価し、事前定義されたソフトウェア・バグの位置を特定し、補正し、シミュレーション・セッション中に、補正された事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システム30のユーザ50が事前定義されたソフトウェア・バグを適切に補正したことをアドミニストレータ40及び/又は管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システム30に関連するスコアを増加させる。
【0076】
さらに、クライアント計算システム30の各々のユーザ50(又はユーザ介入なしにクライアント計算システム30のうちの1つ又は複数)は、他のクライアント計算システム30に展開される機械可読命令を評価し、他のクライアント計算システム30の事前定義されたソフトウェア・バグの位置を特定し、利用し、利用される事前定義されたソフトウェア・バグを検証のためにサブミットし得る。対応するクライアント計算システム30のユーザ50が事前定義されたソフトウェア・バグを適切に利用したことをアドミニストレータ40及び/又は管理計算システム20が検証したことに応答して、管理計算システム20は、対応するクライアント計算システム30に関連するスコアを増加させる。
【0077】
したがって、ソフトウェア・バグ検出システム10は、ユーザ50及び/又はクライアント計算システム30が、メモリ破損問題、メモリ脆弱性問題、メモリ開示問題、情報漏洩問題、論理脆弱性問題、暗号問題など、悪意のある第三者行為により起こり得る様々な計算システム問題を診断するそれらの能力を改善することを可能にする。
【0078】
本明細書で説明した機能ブロック及び/又はフローチャート要素は機械可読命令に変換され得る。非限定的な実例として、機械可読命令は、(たとえば、ハイパーテキスト・マークアップ言語、拡張可能マークアップ言語など)パースされるべき説明文、(ii)アセンブリ言語、(iii)コンパイラによってソース・コードから生成されるオブジェクト・コード、(iv)インタープリタによる実行のための任意の好適なプログラミング言語からのシンタックスを使用して書かれるソース・コード、(v)ジャストインタイム・コンパイラなどによるコンパイル及び実行のためのソース・コードなど、任意のプログラミング・プロトコルを使用して書かれ得る。代替的に、機械可読命令は、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)構成若しくは特定用途向け集積回路(ASIC:application-specific integrated circuit)のいずれか、又はそれらの等価物を介して実装される論理など、ハードウェア記述言語(HDL:hardware description language)で書かれ得る。したがって、本明細書で説明した機能は、事前プログラムされたハードウェア要素として、又はハードウェア構成要素とソフトウェア構成要素との組合せとして、任意の従来のコンピュータ・プログラミング言語で実装され得る。
【0079】
様々な改変及び変形が、本開示の範囲から逸脱することなく行われ得ることが当業者には明らかになろう。本開示の趣旨及び要旨を組み込んだ開示された実施例の改変、組合せ、サブコンビネーション及び変形形態は当業者が想到し得るので、本開示は、添付の特許請求及びそれらの等価物の範囲内であらゆるものを含むと解釈されるべきである。
図1
図2A
図2B
図3A
図3B
図4A
図4B
図4C
図4D
【手続補正書】
【提出日】2021-07-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び第1の機械可読命令を備え、
前記第1の機械可読命令が第1の事前定義されたソフトウェア・バグを備える、
インスタンスを受信することと、
前記仮想プロセッサを使用して前記第1の機械可読命令を実行することであって、前記第1の機械可読命令を実行することは、
前記仮想プロセッサを使用して、前記第1の機械可読命令の前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を受信すること、及び
前記仮想プロセッサを使用して、前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムによる検証に応答して、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信すること
を含む、前記第1の機械可読命令を実行することと
を含む方法。
【請求項2】
計算リソースの前記パーティションが第2の機械可読命令を備え、
前記第2の機械可読命令が第2の事前定義されたソフトウェア・バグを備え、
前記第2の機械可読命令が、前記第1のクライアント計算システム及び前記管理計算システムに通信可能に結合された第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の機械可読命令を実行することと
を含む方法。
【請求項7】
管理計算システムを使用して第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の信号を送信すること
を行わせる、機械可読命令の前記第1のセットを実行することと
を行わせる、システム。
【請求項9】
1つ又は複数のプロセッサと、
機械可読命令を記憶する1つ又は複数の非一時的コンピュータ可読媒体と
を備える機械学習システムであって、前記機械可読命令は、実行されたとき、前記機械学習システムに、
管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備える、
インスタンスを受信することと、
機械可読命令の前記第1のセットを実行することであって、機械可読命令の前記第1のセットを実行することが、前記機械学習システムに、
機械可読命令の前記第1のセットの前記第1の事前定義されたソフトウェア・バグの識別を示す第1の入力を生成すること、及び
前記管理計算システムに、前記第1の入力に関連する第1の信号を送信することであって、前記第1の信号が、前記管理計算システムに、前記第1のクライアント計算システムに関連するスコアを生成させる、第1の信号を送信すること
を行わせる、機械可読命令の前記第1のセットを実行することと
を行わせる、機械学習システム。
【請求項10】
第1のクライアント計算システムを使用して管理計算システムからのインスタンスを受信することであって、
前記インスタンスが前記管理計算システムの計算リソースのパーティションを備え、
計算リソースの前記パーティションが仮想プロセッサ及び機械可読命令の第1のセットを備え、
機械可読命令の前記第1のセットが第1の事前定義されたソフトウェア・バグを備え、
計算リソースの前記パーティションが機械可読命令の第2のセットを備え、
機械可読命令の前記第2のセットが第2の事前定義されたソフトウェア・バグを備え、
機械可読命令の前記第2のセットが、前記第1のクライアント計算システム及び前記管理計算システムに通信可能に結合された第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つを表す、バイナリ・ファイルを表示することと
を含む方法。
【国際調査報告】