(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-31
(54)【発明の名称】ソフトウェアの脆弱性のトリアージのためのシステムおよび方法
(51)【国際特許分類】
G06F 21/57 20130101AFI20231024BHJP
【FI】
G06F21/57 370
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023516547
(86)(22)【出願日】2021-09-10
(85)【翻訳文提出日】2023-05-08
(86)【国際出願番号】 EP2021074995
(87)【国際公開番号】W WO2022063612
(87)【国際公開日】2022-03-31
(32)【優先日】2020-09-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】516172237
【氏名又は名称】アクセンチュア グローバル ソリューションズ リミテッド
(74)【代理人】
【識別番号】100102406
【氏名又は名称】黒田 健二
(74)【代理人】
【識別番号】100100240
【氏名又は名称】松本 孝
(72)【発明者】
【氏名】タラント,フィンバー
(72)【発明者】
【氏名】スリダール,ゴパル カヴァナダラ
(72)【発明者】
【氏名】キム,ジー ヒョブ
(72)【発明者】
【氏名】シャルマ,ナヴディープ
(72)【発明者】
【氏名】マルルーニー,エアンナ
(72)【発明者】
【氏名】プロトニコフ,アントン
(72)【発明者】
【氏名】コホウト,カレル
(72)【発明者】
【氏名】ラクロワ,マーリオ ラウンド
(72)【発明者】
【氏名】レヴィン,リチャード
(72)【発明者】
【氏名】オバンド,ジョニー
(57)【要約】
ソフトウェアアプリケーションにおいて識別されたセキュリティ脆弱性の分類と、自動決定木トリアージおよび/または機械学習に基づくそれらのセキュリティ脆弱性のトリアージとのためのシステムおよび方法が提供される。開示されるシステムは、検出された潜在的脆弱性問題をリストする報告を生成し、決定木を含む自動トリアージポリシーを使用するか、または報告から脆弱性特徴を抽出してその抽出された脆弱性特徴を機械学習モデルを用いて処理することによって、潜在的脆弱性問題がエクスプロイト可能であるかどうかを自動的に決定してもよい。
【特許請求の範囲】
【請求項1】
ソフトウェア脆弱性を評価するためのシステムであって、
実行可能な命令を記憶するためのメモリと、
前記メモリにアクセスするように適合されたプロセッサとを含み、前記プロセッサがさらに、前記メモリに記憶された前記実行可能な命令を実行して、
複数の予め定められた脆弱性タイプに対応する複数の所定の自動トリアージポリシーを含む自動トリアージルールライブラリにアクセスすることであって、各自動トリアージポリシーが、前記複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかを決定するための決定木を含む、前記アクセスすることと、
前記予め定められた複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかの確率的決定のために機械学習モデルライブラリにアクセスすることと、
ソフトウェア製品のソースコードに基づく前記ソフトウェア製品の潜在的脆弱性問題をリストする電子文書を得ることと、
前記潜在的脆弱性問題が前記複数の予め定められた脆弱性タイプのうちの1つに関連するかどうかを決定することと、
前記潜在的脆弱性問題が前記複数の予め定められた脆弱性タイプのうちの前記1つに関連すると決定されたときに、前記複数の予め定められた脆弱性タイプのうちの前記1つおよび対応する決定木に関連する前記自動トリアージルールライブラリから読み出された自動トリアージポリシーを用いて前記電子文書を処理することに基づいて、前記ソフトウェア製品がエクスプロイト可能であるかどうかを決定し、そうでないときは、前記機械学習モデルライブラリからの機械学習モデルを用いて前記電子文書を処理することに基づいて、前記ソフトウェア製品がエクスプロイト可能であるかどうかを確率的に決定することとを行うように適合される、システム。
【請求項2】
前記決定木が、漸進的に順序付けされた自動トリアージ方法のセットを含む、請求項1に記載のシステム。
【請求項3】
前記自動トリアージポリシーの各自動トリアージ方法が、前記電子文書を処理するときにトリアージ出力を生成するように構成される、請求項2に記載のシステム。
【請求項4】
各自動トリアージ方法からの前記トリアージ出力が、前記ソフトウェア製品がエクスプロイト不可能であるか、エクスプロイト可能であるか、または前記ソフトウェア製品のエクスプロイト可能性が決定されないことを示すトリアージ決定のうちの1つを含む、請求項3に記載のシステム。
【請求項5】
前記プロセッサが、前記自動トリアージ方法の出力が前記ソフトウェア製品はエクスプロイト可能であることを示すか、または前記ソフトウェア製品の前記エクスプロイト可能性は決定されないことを示すときには前記決定木に従って漸進的に前記自動トリアージポリシーの前記自動トリアージ方法を呼び出すことと、エクスプロイト不可能であるというトリアージ出力が得られたときには前記決定木を終了させることとによって、前記自動トリアージポリシーに基づいて前記ソフトウェア製品がエクスプロイト可能であるかどうかを決定するように適合される、請求項4に記載のシステム。
【請求項6】
前記自動トリアージポリシーの各自動トリアージ方法が、前記自動トリアージポリシーの予め定められた質問木の中の予め定められたトリアージ質問に対する回答としてトリアージ出力を決定するための1つ以上のトリアージアルゴリズムの体系化されたバージョンを含む、請求項3に記載のシステム。
【請求項7】
各トリアージポリシーおよび前記自動トリアージ方法が、別々のコンテキストデータ、経験的データ、および計算データに基づいて導出されたガイドラインのセットに基づいて確立される、請求項6に記載のシステム。
【請求項8】
前記ガイドラインのセットが、前記1つ以上のトリアージアルゴリズムの前記体系化されたバージョンを生成するために処理される所定のフォーマットでコード化される、請求項7に記載のシステム。
【請求項9】
前記プロセッサが、
前記ソフトウェア製品の前記ソースコードをスキャンして前記潜在的脆弱性問題を検出することと、
検出された前記潜在的脆弱性問題に基づいて前記電子文書を生成することとを行うようにさらに適合される、請求項1に記載のシステム。
【請求項10】
前記プロセッサが、前記ソフトウェア製品がエクスプロイト可能であるかどうかを確率的に決定することを、
各潜在的脆弱性問題について前記電子文書から特徴を抽出することと、
抽出された前記特徴に基づいてベクトルを決定することと、
前記ベクトルに基づいて複数の脆弱性スコア付けモデルのうちの1つを選択することであって、前記脆弱性スコア付けモデルが前記機械学習モデルライブラリから選択される、前記選択することと、
前記脆弱性スコア付けモデルの選択された前記1つを用いて前記ベクトルに基づく脆弱性精度スコアを決定することとによって行うように適合される、請求項9に記載のシステム。
【請求項11】
前記プロセッサが、
ポリシーデータまたはビジネスルールのセットを受信することと、
抽出された前記特徴を前記ポリシーデータまたはビジネスルールのセットに対して比較することと、
検出された前記潜在的脆弱性問題の少なくとも1つに対応するスキャンされた前記ソースコードに基づいてトークンを決定することとを行うようにさらに適合される、請求項10に記載のシステム。
【請求項12】
前記ベクトルが前記トークンに基づくものである、請求項11に記載のシステム。
【請求項13】
前記プロセッサが、前記脆弱性精度スコアをユーザに対して表示するようにさらに適合される、請求項10に記載のシステム。
【請求項14】
前記機械学習モデルライブラリが、複数のランダムフォレスト機械学習モデルを含む、請求項1に記載のシステム。
【請求項15】
ソフトウェア脆弱性を評価するための方法であって、
複数の予め定められた脆弱性タイプに対応する複数の所定の自動トリアージポリシーを含む自動トリアージルールライブラリにアクセスするステップであって、各自動トリアージポリシーが、前記複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかを決定するための決定木を含む、前記アクセスするステップと、
前記予め定められた複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかの確率的決定のために機械学習モデルライブラリにアクセスするステップと、
ソフトウェア製品のソースコードに基づく前記ソフトウェア製品の潜在的脆弱性問題をリストする電子文書を得るステップと、
前記潜在的脆弱性問題が前記複数の予め定められた脆弱性タイプのうちの1つに関連するかどうかを決定するステップと、
前記潜在的脆弱性問題が前記複数の予め定められた脆弱性タイプのうちの前記1つに関連すると決定されたときに、前記複数の予め定められた脆弱性タイプのうちの前記1つおよび対応する決定木に関連する前記自動トリアージルールライブラリから読み出された自動トリアージポリシーを用いて前記電子文書を処理することに基づいて、前記ソフトウェア製品がエクスプロイト可能であるかどうかを決定し、そうでないときは、前記機械学習モデルライブラリからの機械学習モデルを用いて前記電子文書を処理することに基づいて、前記ソフトウェア製品がエクスプロイト可能であるかどうかを確率的に決定するステップとを含む、方法。
【請求項16】
前記決定木が、漸進的に順序付けされた自動トリアージ方法のセットを含む、請求項15に記載の方法。
【請求項17】
前記自動トリアージポリシーの各自動トリアージ方法が、前記電子文書を処理するときにトリアージ出力を生成するように構成される、請求項16に記載の方法。
【請求項18】
各自動トリアージ方法からの前記トリアージ出力が、前記ソフトウェア製品がエクスプロイト不可能であるか、エクスプロイト可能であるか、または前記ソフトウェア製品のエクスプロイト可能性が決定されないことを示すトリアージ決定のうちの1つを含む、請求項17に記載の方法。
【請求項19】
前記自動トリアージポリシーに基づいて前記ソフトウェア製品がエクスプロイト可能であるかどうかを決定することが、
前記自動トリアージ方法の出力が前記ソフトウェア製品はエクスプロイト可能であることを示すか、または前記ソフトウェア製品の前記エクスプロイト可能性は決定されないことを示すときには、前記決定木に従って漸進的に前記自動トリアージポリシーの前記自動トリアージ方法を呼び出すことと、
エクスプロイト不可能であるというトリアージ出力が得られたときには前記決定木を終了させることとを含む、請求項18に記載の方法。
【請求項20】
前記自動トリアージポリシーの各自動トリアージ方法が、前記自動トリアージポリシーの予め定められた質問木の中の予め定められたトリアージ質問に対する回答としてトリアージ出力を決定するための1つ以上のトリアージアルゴリズムの体系化されたバージョンを含む、請求項17に記載の方法。
【請求項21】
前記ソフトウェア製品がエクスプロイト可能であるかどうかを確率的に決定することが、
各潜在的脆弱性問題について前記電子文書から特徴を抽出することと、
抽出された前記特徴に基づいてベクトルを決定することと、
前記ベクトルに基づいて複数の脆弱性スコア付けモデルのうちの1つを選択することであって、前記脆弱性スコア付けモデルが前記機械学習モデルライブラリから選択される、前記選択することと、
前記脆弱性スコア付けモデルの選択された前記1つを用いて前記ベクトルに基づく脆弱性精度スコアを決定することとを含む、請求項15に記載の方法。
【請求項22】
プロセッサによって実行されるように構成された命令を含む非一時的コンピュータ可読媒体であって、実行される前記命令が、
複数の予め定められた脆弱性タイプに対応する複数の所定の自動トリアージポリシーを含む自動トリアージルールライブラリにアクセスすることであって、各自動トリアージポリシーが、前記複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかを決定するための決定木を含む、前記アクセスすることと、
前記予め定められた複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかの確率的決定のために機械学習モデルライブラリにアクセスすることと、
ソフトウェア製品のソースコードに基づく前記ソフトウェア製品の潜在的脆弱性問題をリストする電子文書を得ることと、
前記潜在的脆弱性問題が前記複数の予め定められた脆弱性タイプのうちの1つに関連するかどうかを決定することと、
前記潜在的脆弱性問題が前記複数の予め定められた脆弱性タイプのうちの前記1つに関連すると決定されたときに、前記複数の予め定められた脆弱性タイプのうちの前記1つおよび対応する決定木に関連する前記自動トリアージルールライブラリから読み出された自動トリアージポリシーを用いて前記電子文書を処理することに基づいて、前記ソフトウェア製品がエクスプロイト可能であるかどうかを決定し、そうでないときは、前記機械学習モデルライブラリからの機械学習モデルを用いて前記電子文書を処理することに基づいて、前記ソフトウェア製品がエクスプロイト可能であるかどうかを確率的に決定することとを前記プロセッサに行わせるように適合される、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般的にソフトウェアセキュリティの分野に関し、特に、ソフトウェアアプリケーションの開発の際にそのセキュリティ脆弱性をスキャンおよび改善するための方法およびシステムに関する。
【背景技術】
【0002】
ソフトウェアおよびアプリケーションの開発の際の、セキュリティ脆弱性に対するスキャン、分析、および改善の手順は典型的に低速かつ手動である。当該技術分野における基本的な技術およびツールは、脆弱性をスキャンして識別することが公知である。しかし、専門家が結果を解釈し、最も関連性の高い脆弱性を明らかにし、解決策を提案することが必要とされる。これは通常かなりの時間を要し、かつこうしたサイバーセキュリティの専門家は不足している。ソフトウェア開発者は、専門家の分析の品質を維持し、かつ要求を満たし得るより迅速なプロセスを望んでいる。ソフトウェアアプリケーションの開発段階でそれらをより効率的かつ効果的にスキャンするための知能が望まれている。
【0003】
本開示の実施形態に対する前述およびその他の目的、特徴、および利点は、添付の図面に示された実施形態の以下のより特定的な説明から明らかとなり、図面における参照文字はさまざまな図面にわたって同じ部分を示す。図面は必ずしも縮尺通りではなく、代わりに本開示の原理を示すところが強調されている。
【図面の簡単な説明】
【0004】
【
図1】本開示の特定の実施形態による、例示的システムに対するアーキテクチャの例を示すブロック図である。
【
図2】本開示の特定の実施形態による、
図1に示される例示的システムを実装するためのスキャンエンジンおよび脆弱性報告エンジンの実施形態を示すブロック図である。
【
図3】本開示の特定の実施形態による、
図1に示されるシステムを実装するための例示的抽出エンジンによって実装される方法の例を示す流れ図である。
【
図4】本開示の特定の実施形態による、
図1に示される例示的システムを実装するためのフォーマットエンジンおよびベクトルエンジンの実施形態を示すブロック図である。
【
図5】本開示の特定の実施形態による、
図1に示される例示的システムを実装するためのベクトルエンジン、分類エンジン、および出力エンジンに対するコンポーネントの実施形態を示すブロック図である。
【
図6】本開示の特定の実施形態による、
図1に示される例示的システムを実装するためのさまざまなエンジンに対するコンポーネントの実施形態を示すブロック図である。
【
図7】本開示の特定の実施形態による、例示的システムを実装するための自動トリアージ方法の例を示すチャート図である。
【
図8(a)】本開示の特定の実施形態による、例示的システムによって実施されたスキャン結果の例を示すチャート図である。
【
図8(b)】本開示の特定の実施形態による、例示的システムによって実施されたスキャン結果の例を示すチャート図である。
【
図9】本開示の特定の実施形態による、例示的システムによって実装される方法の例を示すブロック図である。
【
図10】本開示の特定の実施形態による、例示的システムによって実装される方法の例を示す流れ図である。
【
図11】自動トリアージポリシー(ATP:automated triage policy)ルールライブラリの例と、ATPを生成するためのステップの例と、ATPに対応する自動トリアージ方法(ATM:automated triage methods)とを示す図である。
【
図12】ATPと脆弱性とのマッピングの例を示す図である。
【
図13】
図11の品質改善(IQ:improved quality)ガイドライン生成のためのプロセスの例を示す図である。
【発明を実施するための形態】
【0005】
ここで本開示の実施形態が詳細に参照され、その実施形態の例が添付の図面に示されている。
【0006】
本開示は、ソフトウェアアプリケーションにおけるセキュリティ脆弱性をスキャンおよび修正するためのシステム、方法、コンピュータ可読媒体、またはサービスとしてのプラットフォーム(PaaS:platform-as-a-service)製品を含むさまざまな形態で具現化されてもよい。いくつかの例において、本明細書に記載される開示の技術的利点は、ソフトウェアアプリケーションの開発段階でスキャンされたそのセキュリティ脆弱性の識別を含んでもよい。別の技術的利点は、スキャン結果における誤検出および重複の低減であってもよい。さらに別の技術的利点は、脆弱性の根本的原因の分析であってもよい。別の技術的利点は、人間のセキュリティアナリストに追加の情報を提供することで、その分析範囲を低減させて効率を高めることを含んでもよい。技術的利点は、識別されたセキュリティ脆弱性の分類と、機械学習に基づくそれらの自動トリアージとを含んでもよい。特定の例において、技術的利点は、スキャン結果を翻訳または解釈して、スキャンによって識別されたセキュリティ脆弱性の改善を決定することを含んでもよい。ある例において、技術的利点は、ソフトウェアアプリケーションの安全な開発を可能にするために、ユーザインターフェースまたはスキャン報告を介してソフトウェア開発者への提案を提示することを含んでもよい。したがって、本開示の例示的な利益は、セキュリティアナリストが脆弱性を評価するための時間の低減と、開発されるソフトウェアアプリケーションのセキュリティの信頼性の改善とを含んでもよい。脆弱性を検出する基本的なスキャン結果をセキュリティアナリストに提供する非効率的な技術が存在するが、本開示の技術的利点は、スキャン結果の評価と、実際の脆弱性対誤検出の決定とを含んでもよい。
【0007】
図1は、たとえばハードウェア、ソフトウェア、ミドルウェア、アプリケーションプログラムインターフェース(API:application program interfaces)、および/または回路の特徴を実装するためのその他のコンポーネントなどの、本明細書に記載される回路の任意の組み合わせを含むさまざまなコンポーネントおよびモジュールを用いて、多くの異なるやり方で実装され得るこうしたシステム100の実施形態を示す。システム100は、スキャンエンジン101、脆弱性報告エンジン102、抽出エンジン103、フォーマットエンジン104、ベクトルエンジン105、分類エンジン106、出力エンジン107、レビューエンジン108、および/または報告エンジン109を含んでもよい。ある実施形態において、開示される方法のステップは、これらのエンジン101~109によって実現されてもよい。
【0008】
ある実施形態において、システム100はコンピュータデバイス110を含んでもよく、コンピュータデバイス110はメモリ111およびプロセッサ112を含んでもよい。システム100は、生成されたユーザインターフェース(UI:user interfaces)113、および
図2に示されるリプレゼンテーショナルステートトランスファー(REST:Representational State Transfer)API114も含んでもよく、これはコンポーネント、モジュール、およびデータベース間の通信を可能にするように適合されてもよい。以下に考察されるとおり、ユーザはUI113を介してシステム100とインターフェースしてもよい。いくつかの実施形態において、メモリ111は、前述のエンジン101~109、UI113、およびREST API114を含む、システム100のコンポーネントおよびモジュールを含んでもよい。システム100は、ソースコードデータベース115、脆弱性報告データベース116、セキュリティ脆弱性データベース117、javaコードリポジトリもしくはデータベース118、および/またはトレーニング済モデルデータベース119も含んでもよい。さらに、システム100は、ソフトウェア-セキュリティサーバ120およびルータを含んでもよい。
【0009】
コンピュータデバイス110、データベース115~119、ソフトウェア-セキュリティサーバ120、およびルータは、本開示の特定の実施形態に従って、多くの異なるやり方で論理的および物理的に組織化されてもよい。データベース115~119は、異なるタイプのデータ構造(たとえばリンクリスト、ハッシュテーブル、または暗黙的ストレージ機構など)によって実装されてもよく、リレーショナルデータベースおよび/またはオブジェクトリレーショナルデータベースを含んでもよい。データベース115~119は、デバイス110のメモリ111および/もしくはソフトウェア-セキュリティサーバ120に記憶されてもよく、またはそれらは複数のデバイス、サーバ、処理システム、もしくはリポジトリの間で分散されてもよい。たとえば、脆弱性報告データベース116はソフトウェア-セキュリティサーバ120と通信するように構成されてもよく、脆弱性報告エンジン102および抽出エンジン103はソフトウェア-セキュリティサーバ120と通信するように構成されてもよい。特定の実施形態において、コンピュータデバイス110は、
図1に示されるコンポーネントおよびモジュールを介して以下に考察されるプロセスステップを行うために、プロセッサ112によって制御され得る通信インターフェース、ディスプレイ回路、および入力/出力(I/O:input/output)インターフェース回路を含んでもよい。以下に考察されるとおり、ユーザは、ディスプレイ回路によって表示されるUI113を介してシステム100とインターフェースしてもよい。
【0010】
図2は、ソースコードデータベース115に記憶されたソースコード125をスキャンするように構成されたスキャンエンジン101の実施形態を示す。ある実施形態において、コンピュータデバイス110は、システム100の任意の所望の機能を実装し得るシステム回路を含んでもよい。以下に考察されるとおり、いくつかの実施形態において、スキャンエンジン101は、セキュリティ脆弱性127についてソースコード125をスキャンするように構成されてもよい。たとえば、スキャンエンジン101は、システム100によってスキャンされるべきソースコード125を記憶するソースコードデータベース115と通信するように構成され得る、以下にさらに考察されるアプリケーション-スキャンクライアント128において実装されてもよい。ある実施形態において、アプリケーション-スキャンクライアント128はコンピュータデバイス110を含んでもよい。代替的に、ソースコードデータベース115は、ディスプレイ129と通信するように適合され得る別のデバイスにおいて実装されるアプリケーション-スキャンクライアント128と通信するように構成され得るコンピュータデバイス110において実装されてもよい。いくつかの実施形態において、
図2に示されるとおり、スキャンエンジン101は脆弱性報告130を生成して、その脆弱性報告130を脆弱性報告エンジン102に送信するようにさらに構成されてもよい。
【0011】
特定の実施形態において、開示される方法の最初のステップとして、スキャンエンジン101はソースコード125をスキャンするためのスキャン要求を受信してもよい。いくつかの実施形態において、これはプロセスの最初の段階であってもよく、ここでクライアントまたはユーザは、ソースコード125内にあるか、またはそれに関係するセキュリティ脆弱性または脅威127の検出のために、ソースコード125の分析を要求する。ある例において、この最初の分析は、システム100がコードアナライザ133と共に行ってもよい。特定の実施形態において、スキャンエンジン101のコードアナライザ133は、コマーシャルパッケージまたはオープンソースソリューションによって実装されてもよい。たとえば、コードアナライザ133は、たとえばVeracode、HCL AppScan、Checkmarx、および/またはFortifyなどのスキャンツールを含んでもよい。一般的に、コードアナライザ133は、脆弱性報告130を使用することによって、ビジネスに不可欠なソフトウェアアプリケーションにおけるセキュリティ欠陥からシステムを保護しようと試みる。コードアナライザ133は、ソフトウェア製品またはアプリケーション135のソースコード125をスキャンして、脆弱性報告130を生成してもよい。特定の実施形態において、脆弱性報告エンジン102が脆弱性報告130を生成してもよい。
【0012】
いくつかの実施形態において、クライアント132が選択、受信、および/または識別したアプリケーション135に対するソースコード125は、ソースコードデータベース115内に記憶されてもよい。これは、セキュリティアナリストがエクスプロイト可能とみなし得るセキュリティ脆弱性127をソースコード125が含むかどうかを決定するために評価または分析することをクライアント132が要求するソースコード125を含んでもよい。ある実施形態において、ソースコード125は、アプリケーション-スキャンクライアント128にプッシュまたは送信されてもよい。アプリケーション-スキャンクライアント128は、静的アプリケーションセキュリティテストソフトウェアを含んでもよい。特定の実施形態において、ユーザまたはクライアント132は、アプリケーション-スキャンクライアント128にソフトウェアアプリケーション135のソースコード125を入力、インプット、提出、または送信してもよい。
【0013】
アプリケーション-スキャンクライアント128は、ソースコード125のスキャンに対応する脆弱性報告130を生成してもよい。典型的に、セキュリティアナリストは、セキュリティ脆弱性/脅威127であり得るソースコード125を決定することと、無視してもよい誤検出を決定することとを行うために、アプリケーション-スキャンクライアント128を介してこうしたファイルをレビューするために長時間を費やすことがある。脆弱性報告130は、ソフトウェア-セキュリティサーバ120に記憶されてもよい。脆弱性報告130は、コードアナライザ133によって使用されるスキャンプロジェクトコードを含んでもよく、これはセキュリティの専門家がセキュリティ問題について企業ソフトウェアをスキャンするために使用する一連のツールを含んでもよい。いくつかの実施形態において、脆弱性報告130は脆弱性報告データベース116に記憶されてもよく、これはリレーショナルデータベースサービス(RDS:relational database service)を含んでもよい。脆弱性報告データベース116に記憶された脆弱性報告130は、ソフトウェア-セキュリティサーバ120に送信されてもよい。ある実施形態において、
図2に示される脆弱性報告エンジン102と抽出エンジン103との間の大きい矢印によって示されるとおり、ソフトウェア-セキュリティサーバ120は、REST API114を介して抽出エンジン103に脆弱性報告130を送信するように構成されてもよい。
【0014】
図3は、ソフトウェア-セキュリティサーバ120と通信するように構成され得る抽出エンジン103によって実装される特徴抽出プロセスの実施形態を示す。開示される方法の特徴抽出プロセスは、ソースコード125の一部が脆弱であり得るか、またはコードアナライザ133によって生成された脆弱性報告130に基づいていないことを示す特徴138を脆弱性報告130から抽出することと、その特徴138をフォーマットエンジン104に送信することとを含んでもよい。このプロセスは、REST API114を介してソフトウェア-セキュリティサーバ120から脆弱性報告130を受信する最初のステップ(ブロック301)を含んでもよい。セキュリティ脆弱性127の異なるコンポーネントを含む特徴138が読み出されてもよい(ブロック302)。特定の実施形態において、こうして読み出された特徴138は、対応する脆弱性報告130に基づいてソースコード125のセキュリティ脆弱性127に関連する脅威を識別してもよい。
【0015】
特徴抽出プロセスは、ソースコード抽出のステップも含んでもよい。ブロック303を参照されたい。このステップは
図2に示されるソースコードエクストラクタ300によって実行されてもよく、ソースコードエクストラクタ300は、スキャンおよび/またはテストされたアプリケーション135から元のソースコード125を抽出する。
図3のブロック303を参照されたい。抽出されたソースコード125は、読み出された特徴138に対応するコード125を含んでもよい。よって、ソースコードエクストラクタ300は、ソースコードデータベース115と直接通信するか、または
図2に示されるとおりに間接的に通信するように構成されてもよい。加えて、このプロセスは、抽出されたソースコード125のセキュリティ脆弱性127を脆弱性データベース117にプッシュまたは送信するステップ(
図3のブロック304)を含んでもよい。この伝達は、フォーマットエンジン104を介して行われてもよい。したがって、すべてのセキュリティ脆弱性127がコードアナライザ133によって検出されてもよく、ソースコード125は、システム100によるさらなる処理のために脆弱性データベース117に送信されて記憶されてもよい。
【0016】
ある実施形態において、フォーマットエンジン104は、抽出エンジン103のソースコードエクストラクタ300から受信したセキュリティ脆弱性127をフォーマットして、脆弱性データベース117に受信されるように構成されたフォーマットにしてもよい。ある例において、受信されるセキュリティ脆弱性127は、システム100に適合するか、またはシステム100によって使用可能なフォーマットで記憶されてもよい。フォーマットエンジン104は、コードアナライザ133によって識別された、抽出エンジン103から受信したすべてのセキュリティ脆弱性127を、システム100によるセキュリティ脆弱性127の変換を可能にするように適合されたフォーマットで記憶してもよい。そのフォーマットはシステム100によって可読であってもよい。このフォーマットで、クリーンにされたかまたは再フォーマットされた脆弱性127は、システム100によって実行される分析実験を介して分析されてもよい。脆弱性データベース117に記憶されるクリーンにされた脆弱性127は、システム100によるさらなる変換に適合されてもよい。特定の実施形態において、脆弱性データベース117は、クリーンにされたセキュリティ脆弱性127をベクトルエンジン105に送信するように適合されてもよい。
【0017】
図4は、ベクトルエンジン105の例を示し、加えてエンジン間の大きい矢印で示されるとおり、ベクトルエンジン105と他のエンジン104および106のコンポーネントとの相互作用を示す。ベクトルエンジン105は、セキュリティ脆弱性127が実際に脅威であるかどうかを予測または決定するために、機械学習(ML:machine learning)モデル141をトレーニングするための特徴ベクトル173を作成するように構成されてもよい。クリーンにされたセキュリティ脆弱性127は、人間可読特徴138から機械学習モデル141による処理が可能なフォーマットに変換されてもよい。いくつかの実施形態において、クリーンにされたセキュリティ脆弱性127に対するデータを分解して、機械学習モデル141による処理が可能なフォーマットにする方法として、抽象構文木(AST:abstract syntax trees)が使用されてもよい。ある実施形態において、以下に考察されるとおり、ベクトル化プロセスにおけるトークナイザ155がAST143に置き換えられてもよい。構文木143は、プログラミング言語で書かれたソースコード125の抽象構文構造の木表現を含んでもよい。木143の各ノードは、ソースコード125において生じる構成を示してもよい。
【0018】
図4に示されるとおり、ベクトルエンジン105のオーケストレータ147は、フォーマットエンジン104からクリーンにされた脆弱性127を受信してもよい。いくつかの実施形態において、脆弱性データベース117は、REST API114を介して、クリーンにされたセキュリティ脆弱性127をオーケストレータ147に伝達するように構成されてもよい。脆弱性ルータ148は、オーケストレータ147と通信するように構成されてもよい。脆弱性ルータ148はクリーンにされた脆弱性127のリストをスキャンして、各々のクリーンにされた脆弱性127を、対応するセキュリティ脆弱性127のタイプに基づいて分類してもよい。分類された脆弱性127に対する決定された脆弱性127のタイプに基づいて、分類された脆弱性127は、予め定められた機械学習ルールまたはプログラミングルールに基づいて、システム100内で転送されてもよい。
【0019】
特定の実施形態において、ベクトルエンジン105は文法ファイル151を含んでもよく、文法ファイル151は、文法エンジンがユーザデバイス110において認識し得る音声からテキストの単語、用語、および語句152を定義してもよい。文法ファイル151は.py、.java、.js、.cs、および/または.xmlファイルを含んでもよい。ある実施形態において、文法ファイル151にリストされた用語152は、文法エンジンがサーチして言葉による応答と比較する用語であってもよい。文法エンジンが一致する用語152を見出すとき、文法エンジンは関連するコマンドを実行するか、またはその用語152をフィールドに入れてもよい。字句アナライザ154は、文法ファイル151および脆弱性特徴138を受信して、特定の実施形態による特徴138を戻すためにトークナイザ155を介してトークン化を実行してもよい。
【0020】
トークナイザ155は字句分析、字句解析、またはトークン化を行ってもよい。これは、クリーンにされた脆弱性127に対する文字156の配列をトークン157の配列に変換するプロセスを含んでもよい。トークン化された脆弱性特徴158は、トークン化されたフォーマットでメモリ111に記憶される脆弱性127を含んでもよく、それはこうしたトークン157の配列を含んでもよい。ターゲットにされるソースコード125がホストされ得るところにリポジトリ160が選択されてもよい。ある実施形態において、リポジトリ160はそのサイズに基づいて選択されてもよい。ホストされるコード125はトークナイザ161に送信されてもよく、トークナイザ161は言語認識のためのツールを含んでもよい。このトークナイザ161はリポジトリ160をトークン化して、トークン157を生成してもよい。
【0021】
いくつかの実施形態において、ベクトルエンジン105は、単語の埋め込みおよびテキストの分類を学習するためのライブラリを含み得るFastText作成モデル162を含んでもよい。FastText作成モデル162は、トークン157を受信してトレーニング済埋め込みモデル166を生成してもよい。トレーニング済埋め込みモデル166は埋め込みを含んでもよく、その埋め込みは連続数のベクトルに対する離散カテゴリ変数のマッピングを含んでもよい。特定の実施形態において、各々のクリーンにされた脆弱性127は脆弱性カテゴリ170にマッピングされることによって、カテゴリ170にマッピングされた各々のクリーンにされた脆弱性127に対する脆弱性ID171が生成されてもよい。特定の実施形態において、ベクタライザ172は入力としてトークン化された脆弱性特徴158を受信してもよく、単一の特徴ベクトル173を出力してもよい。特徴ベクトル173は、ベクタライザ172から収集されたすべての出力を含んでもよい。さらに、特徴ベクトルは、関連ソースコードを得ることができるソースコードツリーへのリンクを含み得る。これらの特徴ベクトル173は、分類エンジン106に送信されてもよい。
【0022】
図5は、開示されるシステム101の特定の実施形態による、分類エンジン106の実施形態、ならびに分類エンジン106と他のエンジン105および107のコンポーネントとの相互作用を示す。特徴ベクトル173は、クリーンにされた脆弱性127が脅威であるか否かを決定するために、事前トレーニング済MLモデル141、予め定められたプログラミングルール150、および/またはブランケットルール174に対する入力として使用されてもよい。分類エンジン106は、ブランケットルール174、プログラミングルール150、および/またはMLモデル141という少なくとも3つの異なる方法を通じて、脆弱性127が脅威であるか否かを決定してもよい。ブランケットルール174およびプログラミングルール150は、脆弱性127のトリアージを自動化するように構成された自動トリアージ方法に適用されてもよい。特定の実施形態において、ブランケットルール174は脆弱性ルータ148を通じて転送された脆弱性127に適用されてもよく、MLモデル141は必要とされなくてもよい。こうした脆弱性127は、脆弱性127がエクスプロイト可能であることを一貫して示す履歴データに基づいて選択されてもよい。よって、識別された脆弱性127が再びエクスプロイト可能であり得ると自動的に推測することは合理的であってもよい。いくつかの実施形態において、脆弱性ルータ148から送信された脆弱性127にプログラミングルール150が適用されてもよい。プログラミングルール150は、脅威として識別された共通のパターンを検出するために脆弱性127をスキャンしてもよい。ある実施形態において、AST143はシステム100によって処理されてもよいが、変換されたときに除去されてもよい。分類エンジン106は機械学習も使用してもよい。脆弱性127はシステム100によって処理(例、トークン化およびベクトル化)されてもよく、特徴ベクトル173は事前トレーニング済モデル141に送信または入力されてもよく、事前トレーニング済モデル141は以前分析されたこうした特徴ベクトル173を有してもよい。より多くの脆弱性127が特徴ベクトル173に変換され得るにつれて、システム100はより頻繁にMLモデル141を使用してもよい。なぜなら、特定の脆弱性127がエクスプロイト可能であるかどうかを事前トレーニング済モデル141がすでに決定している可能性が高くなり得るからである。
図5に示される例示的な分類エンジン106は、脆弱性127が脅威であるか否かを決定してもよい。分類エンジン106は決定論的分類器175を含んでもよく、それは分類アルゴリズムを実装してもよく、その結果もたらされる挙動はその最初の状態および入力によって決定されてもよい。ある実施形態において、決定論的分類器175はランダムでも確率論的でもなくてもよい。分類エンジン106は確率的分類器179も含んでもよく、これはクラスのセットにわたる確率分布を予測するように構成された分類器を含んでもよい。ある実施形態において、確率的分類器179は、入力の観察が属し得る可能性が最も高いクラスを単に出力するのではなく、その観察に基づくものであってもよい。加えて、分類エンジン106は、特徴ベクトル173に基づいてトレーニングされるように構成され得るトレーニング分類器184を含んでもよい。いくつかの実施形態において、トレーニング分類器184は、決定論的分類器175および/または確率的分類器179をトレーニングするように構成されてもよい。特定の実施形態において、トレーニング分類器184は、トレーニング済モデル141をトレーニングするように構成されてもよい。したがってトレーニング分類器184は、出力エンジン107に含まれ得るトレーニング済モデル141と通信するように適合されてもよい。ルール(例、ブランケットルール174)は、ルールのセットとして決定論的分類器175に伝達されてもよい。たとえば、脆弱性127がエクスプロイト可能であることを一貫して示す履歴データに基づいて、ソースコード125が脅威であると識別できるとき、ブランケットルール174が実装されてもよい。
【0023】
図4および
図5に示されるとおり、脆弱性ルータ148はベクトルエンジン105を介して、脆弱性127をルールベースの決定論的分類器175またはMLベースの確率的分類器179に直接転送してもよい。脆弱性タイプのセットは、ルール150および174に関連付けられてもよい。脆弱性ルータ148は、入力脆弱性スキャンにおける脆弱性タイプを決定してもよい。決定された脆弱性タイプに関連するルール150または174が識別されるとき、次いで脆弱性ルータ148はその入力脆弱性スキャンを、識別および予め確立されたルールの下で処理するために決定論的分類器175に転送してもよい。そうでないときは、脆弱性ルータ148は入力脆弱性スキャンを確率的ML分類器179に転送してもよい。さまざまなタイプの脆弱性に対するさまざまなルール150および174を確立するためのトリアージ方法の実施形態例は、
図11に関連して以下にさらに考察される。
【0024】
いくつかの他の実施形態において、脆弱性127はルールベースの決定論的分類器175およびMLベースの確率的分類器179の両方に転送されてもよく、脆弱性175がエクスプロイト可能であるかどうかの決定が決定論的分類器175とMLベースの確率的分類器179との間で一致しないときは、どちらの分類器の方が信頼できるかを決定するために追加のアービトレーションが行われてもよい。
【0025】
図5には出力エンジン107の実施形態もある。出力エンジン107からの出力は、ラベル付き脆弱性187が脅威であるか否かの予測のためにトレーニング済モデル141から受信された最初の知見を含んでもよい。トレーニング済モデル141は、トレーニング済モデルデータベース119に記憶されてもよい。いくつかの実施形態において、トレーニング済モデル141は、確率的分類器179に送信されてもよい。分類エンジン106は、ラベル付き脆弱性187のリスト、および/またはその予測を生成してもよく、それは記憶されて、後にシステム100によってレビューされてもよい。
【0026】
図6は、レビューエンジン108の実施形態、レビューエンジン108と他のエンジン104~107および109のコンポーネントとの相互作用、ならびにレビューエンジン108によって実装される例示的プロセスを示す。たとえば、レビューエンジン108は、出力レビュー(ブロック600)のためのプロセスと、脆弱性レビューおよびモデル更新(ブロック601)のためのプロセスとを含むように実装されてもよい。これらのプロセスを通じて、レビューエンジン108は、システム101がエクスプロイト可能と決定した脆弱性127をレビューしてもよく、将来の使用のためにモデル141を再トレーニングするためにこうした脆弱性127を用いてもよい。このレビューは、モデル141をさらにトレーニングするためにモデル141に送り返されてもよい。
【0027】
脆弱性レビューおよびモデル更新プロセス601は、脆弱性を更新するステップ(ブロック602)と、モデルを保持するステップ(ブロック603)と、ルールを更新するステップ(ブロック604)とを含んでもよい。このプロセスは、ブランケットルール174に対してエクスプロイト可能であると決定された脆弱性127によって脆弱性データベース117を更新するように構成されてもよい。更新された脆弱性127は脆弱性データベース117に送り返されてもよく、脆弱性データベース117はシステム100に適合するフォーマットでクリーンにされた脆弱性127を記憶してもよい。モデル141を再トレーニングするために、セキュリティアナリスト(SA:security analyst)レビュー606、データサイエンティスト(DS:data scientist)レビュー607、および/または品質保証(QA:quality assurance)レビュー608から知見が受信されてもよく、データ分析609が行われてもよい。データ分析609から受信されたこうした知見は、ベクトルエンジン105のオーケストレータ147に送信されてもよい。この知見は、ブランケットルール174、モデル141、および脆弱性127のリストを更新するために使用されてもよい。
【0028】
更新されたブランケットルール174は、レビュー606~608およびデータ分析609から受信した知見によって更新されたルールを含んでもよい。これらのレビュー606~608は、データサイエンティストおよび/またはセキュリティアナリストによって行われてもよい。ブランケットルール174の更新およびモデル141の再トレーニングのための最適な方法を決定するために、新たなデータに対してデータ分析609が行われてもよい。自動トリアージ方法インスタンス610は、脆弱性127のトリアージを自動化するように構成されてもよい。脆弱性レビューおよびモデル更新プロセス601は、セキュリティアナリストレビュー606、データサイエンティストレビュー607、および/または品質保証レビュー608から受信したレビュー結果611の組み合わせに基づいてもよい。レビュー結果611は報告エンジン109に送信されてもよい。
【0029】
報告エンジン109は、レビューエンジン108からレビュー結果611を受信するように構成されてもよい。品質保証レビュー608によって分析された実際の脅威であるすべての脆弱性127を含み得る、完全な報告が生成されてもよい。品質保証ラベル付き脆弱性187は、システム100を通過して品質保証レビュー608によって評価された脆弱性127を含むように生成されてもよい。このレビュー608は、品質保証の専門家によって行われてもよい。クライアント132に対する最終報告147が生成されてもよく、かつHTMLフォーマットでのすべての知見を報告するためのHTML報告188が生成されてもよい。
【0030】
最終報告147およびHTML報告188は、デバイス110を介して表示されてもよい。UI113は、ディスプレイ回路を用いてローカルに表示されるか、またはリモート可視化のために、たとえばローカルもしくはリモートマシンにおいて実行され得るウェブブラウザに対するHTML、JavaScript、音声、およびビデオ出力などとして表示されてもよい。UI113およびI/Oインターフェース回路は、タッチセンサー式ディスプレイ、音声または顔認識入力、ボタン、スイッチ、スピーカ、およびその他のユーザインターフェースエレメントを含んでもよい。I/Oインターフェース回路の付加的な例は、マイクロホン、ビデオおよび静止画像カメラ、ヘッドセットおよびマイクロホン入力/出力ジャック、ユニバーサルシリアルバス(USB:Universal Serial Bus)コネクタ、メモリカードスロット、ならびにその他のタイプの入力を含む。I/Oインターフェース回路は、磁気または光媒体インターフェース(例、CDROMまたはDVDドライブ)、シリアルおよびパラレルバスインターフェース、ならびにキーボードおよびマウスインターフェースをさらに含んでもよい。
【0031】
ある実施形態において、例示的システムに対するコンポーネントおよびモジュールは、次の9つのセクションに区切られてもよい。スキャン;報告の記憶;特徴の抽出;すべての脆弱性を標準フォーマットで記憶;特徴ベクトルおよび/または抽象構文木の作成;分類;最初の出力;脆弱性のレビュー;ならびに、最終出力および報告の生成。この区切られたセクションのリストは、時系列の順序である必要はない。
【0032】
ある実施形態において、システム100は、異なるスキャン報告を収集および使用するステップを含んでもよい。これらのスキャン報告は、複数のベンダーから収集されてもよい。スキャン報告は、コードアナライザ133から受信した脆弱性報告130と、さまざまなタイプのスキャンに対する他のベンダーからの報告との組み合わせを含んでもよい。自動トリアージはハイブリッドの方法を含んでもよい。たとえば、システム100はルール、フィルタ、機械学習を、さまざまな特徴ベクトルと共に組み合わせて用いてもよい。
図7は、自動トリアージ方法の例を示す。こうした方法は、評価の目的のためにさまざまなデータセットに対してトレーニングおよび検証されてもよい。
図8(a)~(b)は、識別された問題タイプ、ならびにそれらの対応する合計トリアージ時間のパーセンテージ、最高改善優先順位、および実施される自動トリアージ方法の例を示す。
【0033】
ある実施形態において、システム100は既存のツールチェーンとカスタム注釈付きタグ/変数との統合を含むことによって、自動化FPAファイルを既存のツールチェーンに戻して統合できるようにしてもよい。たとえば、問題を自動的にトリアージしてその結果をアプリケーション-スキャンツールにプッシュして戻すために、システム100は、メモリ111に実装され得るアプリケーション-スキャンツールからの抽出スキャン結果と統合されてもよい。
図9は、特定の実施形態によるこうしたシステム100を示す。ある実施形態において、システム100はメモリ111内に脆弱性識別優先順位付けおよび改善(ViPR:vulnerability identification prioritization and remediation)ツールを実装してもよく、これは統合されたデータのリポジトリおよび分析ツールを含んでもよい。システム100は、フロントエンド191およびAPI114を含んでもよい。フロントエンド191はユーザと通信してもよく、API114はソフトウェア-セキュリティサーバ120と通信してもよい。さらに、システム100は、静的アプリケーションセキュリティテスト(SAST:Static application security testing)および動的アプリケーションセキュリティテスト(DAST:Dynamic application security testing)の両方のスキャン報告からの情報を組み合わせて使用してもよい。システム100はSASTおよびDASTのトリアージ判定を組み合わせて、統一したやり方で改善動作を自動的に提案することによって、たとえば1つの解決策がSASTおよびDASTの問題の両方を解決するようにしてもよい。
【0034】
決定論的分類器175に用いられる
図5の150および174に示される自動トリアージルールは、脆弱性のタイプの予め定められたセットの各々に対して作成されてもよい。脆弱性のタイプの予め定められたセットに対して、自動トリアージルールライブラリが確立されてもよい。こうした自動ルールライブラリは、たとえば各タイプの脆弱性に対する自動トリアージポリシー(ATP)を含んでもよく、よってATPルールライブラリと呼ばれることがある。各ATPはさらに、入力脆弱性を評価するために
図5の決定論的分類器175によって呼び出され得るさまざまなトリアージアルゴリズムの形の1つ以上の自動の方法(ATM)を含んでもよい。決定論的分類器175の評価出力は、入力脆弱性がエクスプロイト不可能であるか、エクスプロイト可能であるか、またはそのエクスプロイト可能性が不明確であるかどうかを示してもよい。
【0035】
よって、
図4のオーケストレータ147は最初に、
図5の脆弱性ルータ148を用いて、入力脆弱性(例、
図4の脆弱性データベース117からのデータフレーム)を決定論的分類器175またはML確率的分類器179のいずれかにマッピングしてもよい。入力脆弱性がML分類器179にマッピングされるときは、特徴ベクトル作成プロセスが引き起こされ、その後その入力脆弱性に対する特徴ベクトルが作成され、入力脆弱性を分類するために特徴ベクトルを処理するためにMLモデルがロードされて呼び出されるだろう。入力脆弱性が決定論的分類器175にマッピングされるときは、分類エンジン106がこの入力脆弱性を、脆弱性のタイプの予め定められたセットのうちの1つおよび対応するATPにさらにマッピングするだろう。ATPおよびその中のATMは、ATPルールライブラリから呼び出されて、入力脆弱性の分類のために入力脆弱性のデータフレームと共に決定論的分類器175に送られるだろう。
【0036】
ATPルールライブラリの例は、
図11の1102として示される。ATPルールライブラリ1102は複数のATP1104を含んでもよく、その各々は脆弱性のタイプの予め定められたセットのうちのあるタイプに対するものである。各ATP1104は、ATMのセット1106を含んでもよい。各ATMは、たとえば決定論的脆弱性分類のための1つ以上の特定のアルゴリズムを含んでもよい。
図11の1102にさらに示されるとおり、特定のATPに対する入力脆弱性のマッピングは、脆弱性マッパー1108によって形成されてもよい。いくつかの実装において、脆弱性マッパー1108はATPルールライブラリの一部であってもよい。入力脆弱性(例、
図4の脆弱性データベース117からの脆弱性データフレーム)は、ATPルールライブラリ1102に送られてもよい。ATPルールライブラリ1102はATPを出力し、
図11の矢印1110によって示されるとおり、その出力ATPを決定論的分類器175に送ってもよい。
【0037】
脆弱性のタイプの予め定められたセットの各々に対するATP1104およびATM1106は、さまざまな方式で作成されて、ATPルールライブラリ1102にロードされてもよい。脆弱性のタイプの予め定められたセットは、任意の方法に基づいて確立されてもよい。たとえば、脆弱性のタイプの予め定められたセットは、履歴Fortify脆弱性スキャンおよび分析を介して決定および定義されたFortify脆弱性のカテゴリおよびタイプに基づいてもよい。脆弱性の各タイプは、脆弱性識別子(ID:identifier)に関連付けられてもよい。脆弱性のタイプの予め定められたセットの各々に対するATPおよびATMの作成の例は、
図11の1120に示される。
【0038】
ATPおよびATM作成プロセス1120は、
図11の1122および1124によってそれぞれ示されるとおり、脆弱性のこれらのタイプの各々に対する手動トリアージポリシー(MTP:manual triage policy)生成プロセスと、ATP/ATM生成プロセスとを含んでもよい。1122に示されるとおり、MTPは、セキュリティアナリスト(SA)が脆弱性をたとえば「問題なし」、「エクスプロイト可能」、および「不審」などとトリアージ(分類)するために取る必要がある品質改善(IQ)ガイドラインの一部としてのステップの定義として指定されてもよい。脆弱性の特定のタイプに対するMTPは、たとえば、SAがチェックする必要がある質問のリストによって表されてもよい。質問のリストは、決定木として組織化されてもよい。言い換えると、質問を問う順序は決定木に基づいて決定される。具体的には、リストにおけるどの質問を次に問うべきかは、リストにおける前の質問の回答および出力に依存する。質問のリストおよび決定木は、脆弱性の各タイプに対して作成されてもよい。脆弱性の「リソース投入」タイプ(例示的脆弱性ID0043)に対するMTP質問のリストの例が、以下の表1に示される。
【0039】
【0040】
上記の表Iは、質問のリストと、質問のリストに対する決定木に関する情報との両方を含む。たとえば、リストの第1の質問に対する回答が「範囲外」であって、この特定の脆弱性に伴う問題がないことが示され得るとき、決定木はそれ以上進まずに終了する。しかし、質問に対する回答が「いいえ」または「不明」のときは、表Iに示されるとおり、次いで決定木は次の質問に進み、質問「0043-2」に対する回答が必要である。質問「0043-2」に対する回答が「問題なし」のとき、決定木は再び終了する。そうでないとき、決定木は次の質問に進み、表Iに指定されるとおり、次に質問「0043-3」に対する回答が必要である。このプロセスは、決定木が終了するまで表Iの例に示されるとおりに進行する。よって表Iは、トリアージステップの条件付きの順序を規定する。各ステップは、SAが回答すべき質問をもたらす。質問に対する回答が、次のステップ(決定木の終了または次の質問)を決定する。表Iは、最終トリアージ決定に到達するための経路を提供する。
【0041】
図13は、ATPおよびATMを形成するための自動化され得るIQガイドラインを生成するための
図11の1122のプロセスの例を示す。プロセス1122は、コンテキストデータ1302、実験データ1304、および計算データ1306を含むデータソースを、反復的な検証(1310)、強化(1312)、コード化(1314)、およびアグリゲーション(1316)手順を介して処理し、その出力を反応モジュール1320によって処理してデータベース1330に記憶されるIQガイドラインを生成するために使用されてもよい。IQガイドラインは、ATPおよびATMの生成のために用いられる。
【0042】
図11に戻ると、1124にさらに示されるとおり、脆弱性の各タイプに対してMTPが作成されると、次いでMTPに対する自動トリアージ方法(ATM)を生成するためにMTPにおいて何が体系化され得るかがさらに決定されてもよい。特に、MTPにおける各々の質問は手動トリアージ方法(MTM:manual triage method)に対応してもよく、それは自動アルゴリズムを含むATMに変換および体系化されてもよい(
図11の1126に示される)。各ATMは、分類エンジン106によって呼び出され得る関数において体系化されてもよい。MTPに対応する自動トリアージポリシー(ATP)は、体系化されたATMを識別してもよい。一例が以下の表IIに示される。
【0043】
【0044】
いくつかの実施形態において、
図12の脆弱性-ATPマッピングによって示されるとおり、ATPライブラリは複数のATP1202を含む。各ATPは独自の識別子に関連付けられてもよく、上述のとおりのポリシーを表す。脆弱性の各タイプはATPのうちの1つに関連付けられてもよく(
図12の1204から1202へのマッピングに示される)、一方で各ATPは脆弱性の1つ以上のタイプにマッピングされてもよい(
図12の1202から1204へのマッピングに示されるとおり、脆弱性の複数の異なるタイプが同じ決定木1206によって同じATPを用いてもよいことが示される)。
図12の1206に示されるとおり、各ATPは上述の決定木をさらに包含し、1つ以上のATMにリンクする。よって、
図11の1128および1106に示されるとおり、各ATPはATMの順序付きコンテナとして具現化されてもよい。各ATMは、決定木のステップに対応する。ATMは体系化され、かつさまざまなアルゴリズムを含んでもよい。呼び出し可能な関数としてのATMは、異なるATPによって共有されてもよい(
図12の1206における異なるATP間の共通の「ATM_Third_Party」および「ATM_Is-Trust」関数によって示される)。よってATMは、統一された関数ライブラリまたはコードリポジトリにおいて収集されてもよい。各ATPは、自身の決定木における特定のステップでATMを示すときに、
図12の1206に示されるとおり、関数ライブラリまたはコードリポジトリにおけるその独自の関数識別子によってATMを識別してもよい。さまざまなATMを呼び出す決定木を統合するATPのコードの例が以下に示される。
【0045】
【0046】
いくつかの実施形態において、上記の
図5の分類エンジン106の出力は、入力データフレームと共にいくつかの追加の列を含んでもよい。たとえば、追加の列の1つは、分類エンジン106からの予測を含んでもよい。別の追加の列は、予測に用いられる分類器(決定論的分類器175またはML確率的分類器179)の表示を含んでもよい。別の追加の列は、決定論的分類器において決定木が用いた情報の表示を含んでもよい。使用される決定木は、ATP識別子によって識別されてもよい。
【0047】
脆弱性のタイプの予め定められたセットの各々に対する手動トリアージポリシー(MTP)または決定木の生成(
図11の1122)は、別の機械学習モデルを用いて自動化されてもよい。たとえば、履歴脆弱性予測精度に基づく特定の順序で質問ライブラリからの質問のリストを選択するために、機械学習モデルがトレーニングされてもよい。
【0048】
図9に示されるとおり、システム100によって実装される方法は、ユーザインターフェース113を介してプロジェクトを選択するステップを含んでもよい。ブロック900を参照されたい。フロントエンド191はプロジェクトを要求してもよく(ブロック901を参照されたい)、API114はこうしたプロジェクト要求をソフトウェア-セキュリティサーバ120に送信してもよい。ブロック902を参照されたい。結果として、APO114はプロジェクトを受信してもよい。ブロック903を参照されたい。フロントエンド191は、受信したプロジェクトをユーザインターフェース113を介して表示するように適合されてもよい。ブロック904を参照されたい。いくつかの実施形態において、表示されたプロジェクトのうちの1つがユーザインターフェース113を介して選択されてもよい。ブロック905を参照されたい。特定の実施形態において、フロントエンド191は、選択されたプロジェクトを識別または決定してもよい。ブロック906を参照されたい。API114は、選択されたプロジェクトに対する特徴をソフトウェア-セキュリティサーバ120から抽出するように適合されてもよい。ブロック907を参照されたい。ある実施形態において、API114はさらに、ルールを適用すること(ブロック908)、フィルタを適用すること(ブロック909)、プログラムされたフィルタを適用すること(ブロック910)、および/または機械学習モデルを適用すること(ブロック911)を行うように適合されてもよい。加えて、特定の実施形態によると、API114はソフトウェア-セキュリティサーバ120に結果をエクスポートするように適合されてもよい。ブロック912を参照されたい。
【0049】
いくつかの実施形態において、通信インターフェースは、ワイヤレス送信機および受信機(本明細書においては「トランシーバ」)と、トランシーバの送信および受信回路によって使用される任意のアンテナとを含んでもよい。トランシーバおよびアンテナは、たとえば任意のバージョンのIEEE802.11、たとえば802.11nまたは802.11acなど、またはその他のワイヤレスプロトコル、たとえばブルートゥース、Wi-Fi、WLAN、セルラ(4G、LTE/A)などによるWiFiネットワーク通信をサポートしてもよい。加えて通信インターフェースは、たとえばユニバーサルシリアルバス(USB)、シリアルATA、IEEE1394、ライティングポート、I2C、slimBus、またはその他のシリアルインターフェースなどのシリアルインターフェースを含んでもよい。加えて通信インターフェースは、ワイヤード通信プロトコルをサポートするための有線トランシーバを含んでもよい。有線トランシーバは、広範囲の通信プロトコルのいずれかに対する物理レイヤインターフェースを提供してもよく、通信プロトコルはたとえば、任意のタイプのイーサネット(Ethernet)、ギガビットイーサネット(Gigabit Ethernet)、光ネットワークプロトコル、データオーバーケーブルサービスインターフェース仕様(DOCSIS:data over cable service interface specification)、デジタル加入者線(DSL:digital subscriber line)、同期光ネットワーク(SONET:Synchronous Optical Network)、またはその他のプロトコルなどである。
【0050】
システム回路は、ハードウェア、ソフトウェア、ファームウェア、API、および/またはその他の回路の任意の組み合わせを含んでもよい。システム回路は、たとえば1つ以上のシステムオンチップ(SoC:system on a chip)、特定用途向け集積回路(ASIC:application specific integrated circuits)、フィールドプログラマブルゲートアレイ(FPGA:field programmable gate arrays)、マイクロプロセッサ、個別のアナログおよびデジタル回路、ならびにその他の回路などによって実現されてもよい。システム回路は、システム100の任意の所望の機能を実装してもよい。単なる一例として、システム回路は、1つ以上の命令プロセッサ112およびメモリ111を含んでもよい。メモリ111は、たとえばシステム100の特徴を実行するための制御命令などを記憶してもよい。1つの実装において、プロセッサ112は、システム100に対する任意の所望の機能を実行するために制御命令を実行してもよい。制御パラメータは、制御命令およびシステム100のその他の機能に対する構成および動作オプションを提供および指定してもよい。システム100はさまざまなデータベースまたはデータソースをさらに含んでもよく、それらの各々は、本明細書に記載されるプロセスの任意の1つ以上の間に考慮されるデータを得るために、システム100によってアクセスされてもよい。
【0051】
ある実施形態において、ソフトウェアを管理するための方法またはシステム100は、ソフトウェア製品またはアプリケーション135のソースコードをスキャンして潜在的脆弱性問題を検出するステップと、検出された潜在的脆弱性問題をリストする電子文書報告を生成するステップとを含んでもよい。この方法/システムはさらに、各潜在的脆弱性問題について電子文書報告から特徴を抽出するステップと;ポリシーデータおよびビジネスルールを受信するステップと;抽出された特徴をポリシーデータおよびビジネスルールに対して比較するステップと;潜在的脆弱性問題のソースコードに基づいてトークンを決定するステップとを含んでもよい。さらに、この方法/システムは、潜在的脆弱性問題の抽出された特徴に基づき、かつトークンに基づいてベクトルを決定するステップと、ベクトルに基づいて複数の脆弱性スコア付け方法のうちの1つを選択するステップとを含んでもよい。ある実施形態において、脆弱性スコア付け方法は、機械学習モデル化141方法、ブランケットルール174自動トリアージ方法、および/またはプログラミングルール150自動トリアージ方法であってもよい。特定の実施形態によると、複数の脆弱性スコア付け方法は、こうした方法の任意の組み合わせを含んでもよい。加えてこの方法/システムは、選択された脆弱性スコア付け方法を用いてベクトルに基づく脆弱性精度スコアを決定するステップと、脆弱性精度スコアをユーザに対して表示するステップとを含んでもよい。ある実施形態において、複数の機械学習モデルは、ランダムフォレスト機械学習モデルを含んでもよい。
【0052】
特定の実施形態において、
図10に示されるとおり、ソフトウェアを管理するための方法またはシステム100は、ソフトウェア製品の潜在的脆弱性問題をリストする電子文書を得るステップ(ブロック1000)と;各潜在的脆弱性問題について電子文書から特徴を抽出するステップ(ブロック1001)と;抽出された特徴に基づいてベクトルを決定するステップ(ブロック1002)と;ベクトルに基づいて複数の機械学習モデル化方法および自動トリアージ方法のうちの1つを選択するステップ(ブロック1003)と;選択された方法を用いてベクトルに基づく脆弱性精度スコアを決定するステップ(ブロック1004)とを含んでもよい。この方法/システムはさらに、ソフトウェア製品のソースコードをスキャンして潜在的脆弱性問題を検出するステップと、検出された潜在的脆弱性問題に基づいて電子文書を生成するステップとを含んでもよい。さらに、この方法/システムは、ポリシーデータまたはビジネスルールを受信するステップと;抽出された特徴をポリシーデータまたはビジネスルールに対して比較するステップと;検出された潜在的脆弱性問題の少なくとも1つに対応するスキャンされたソースコードに基づいてトークンを決定するステップとを含んでもよい。いくつかの実施形態において、ベクトルはトークンに基づくものであってもよい。加えてこの方法/システムは、脆弱性精度スコアをユーザに対して表示するステップを含んでもよい。ある実施形態において、機械学習モデル化方法は、ランダムフォレスト機械学習モデルを含んでもよい。いくつかの実施形態において、自動トリアージ方法は、ブランケットルール自動トリアージ方法および/またはプログラミングルール自動トリアージ方法を含んでもよい。特定の実施形態において、ソフトウェア脆弱性にアクセスするための方法またはシステムは、複数の予め定められた脆弱性タイプに対応する複数の所定の自動トリアージポリシーを含む自動トリアージルールライブラリにアクセスするステップであって、各自動トリアージポリシーが、予め定められた複数の脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかを決定するための決定木を含む、アクセスするステップと;予め定められた複数の予め定められた脆弱性タイプのうちの1つがエクスプロイト可能であるかどうかの確率的決定のために機械学習モデルライブラリにアクセスするステップと;ソフトウェア製品のソースコードに基づくソフトウェア製品の潜在的脆弱性問題をリストする電子文書を得るステップと;潜在的脆弱性問題が複数の予め定められた脆弱性タイプのうちの1つに関連するかどうかを決定するステップと;潜在的脆弱性問題が複数の予め定められた脆弱性タイプのうちの1つに関連すると決定されたときに、複数の予め定められた脆弱性タイプのうちの1つおよび対応する決定木に関連する自動トリアージルールライブラリから読み出された自動トリアージポリシーを用いて電子文書を処理することに基づいて、ソフトウェア製品がエクスプロイト可能であるかどうかを決定し、そうでないときは、機械学習モデルライブラリからの機械学習モデルを用いて電子文書を処理することに基づいて、ソフトウェア製品がエクスプロイト可能であるかどうかを確率的に決定するステップとを含んでもよい。
【0053】
すべての考察は、記載される特定の実装にかかわらず、限定的ではなく例示的な性質である。たとえば、実装の選択された態様、特徴、またはコンポーネントはメモリに記憶されるものとして示されるが、単数または複数のシステムのすべてまたは一部が、たとえばハードディスク、フラッシュメモリドライブ、フロッピーディスク、およびCD-ROMなどの二次ストレージデバイスなどの他のコンピュータ可読記憶媒体に記憶されるか、それらの間に分散されるか、またはそこから読み取られてもよい。さらに、さまざまなモジュールおよびスクリーンディスプレイ機能は、こうした機能の単なる一例であり、類似の機能を包含する任意のその他の構成が可能である。
【0054】
上記において考察されたプロセス、方法、および/または技術を実装するためのそれぞれの論理、ソフトウェア、または命令は、コンピュータ可読記憶媒体において提供されてもよい。図面に示されるか、または本明細書に記載される機能、動作、またはタスクは、コンピュータ可読媒体の中または上に記憶される論理または命令の1つ以上のセットに応答して実行されてもよい。その機能、動作、またはタスクは、特定のタイプの命令セット、記憶媒体、プロセッサ、または処理戦略に依存せず、単独または組み合わされて動作するソフトウェア、ハードウェア、集積回路、ファームウェア、およびマイクロコードなどによって実行されてもよい。同様に、処理戦略は多重処理、多重タスキング、および並列処理などを含んでもよい。一実施形態において、命令は、ローカルまたはリモートシステムによる読み取りのための取り外し可能媒体デバイスに記憶される。他の実施形態において、論理または命令は、コンピュータネットワークまたは電話線を通じた伝達のためにリモートの位置に記憶される。さらに他の実施形態において、論理または命令は、所与のコンピュータ、中央処理ユニット(central processing unit)(「CPU」)、グラフィックス処理ユニット(graphics processing unit)(「GPU」)、またはシステム内に記憶される。
【0055】
本開示は、その実施形態を参照して特定的に示されて説明されたが、本開示の趣旨および範囲から逸脱することなく、その形態および詳細にさまざまな変更がなされてもよいことを当業者は理解するだろう。いくつかの図面はいくつかの動作を特定の順序で示しているが、順序に依存しない動作は並べ替えられてもよく、他の動作は組み合わされるか、または分割されてもよい。何らかの並べ替えまたはその他のグループ化が特定的に言及されているが、当業者には他のものも明らかとなるため、代替形の網羅的なリストは提示されない。
【国際調査報告】