(57)【特許請求の範囲】
【請求項１】
ソフトウェアのアタックサーフェイスを決定する方法であって、
１つ以上のプロセッサを用いて、ソフトウェアコードの少なくとも１つの配備をテストするためのプラットフォームを生成し、
前記１つ以上のプロセッサを用いて、前記少なくとも１つの配備によって使用されるプロトコルを特定し、
前記１つ以上のプロセッサを用いて、前記プロトコルを、前記少なくとも１つの配備における少なくとも１つのポートにマッピングし、且つ
前記１つ以上のプロセッサを用いて、前記少なくとも１つの配備に関するパラメータを有するメトリックを計算する
ことを有する方法。
【請求項２】
前記メトリックは、不使用ポートの数、オープンポートの数、使用される少なくとも１つのプロトコルについての情報、外部インターネットプロトコル（ＩＰ）アドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、及びノードへのプロトコルのマッピングを含む、請求項１に記載の方法。
【請求項３】
前記使用される少なくとも１つのプロトコルについての前記情報は、前記プロトコルのうちの何れかがセキュリティホールを有するか、及びそのプロトコルがどれだけ長く存在していたか、を反映する第１のプロトコルに関する第１の危険スコアと、第２のプロトコルに関する第２の危険スコアと、前記第１の危険スコア及び前記第２の危険スコアの和であるトータル危険スコアとを含む、請求項２に記載の方法。
【請求項４】
前記少なくとも１つの配備は、第１の配備及び第２の配備であり、前記メトリックを計算することは、前記第１の配備に関する第１のメトリックと前記第２の配備に関する第２のメトリックとを計算することを有する、請求項１に記載の方法。
【請求項５】
基準配備を受け取り、第１の配備を受け取り、且つ前記第１の配備を前記基準配備に基づいて正規化することを更に有する請求項１に記載の方法。
【請求項６】
アプリケーションプログラミングインタフェース（ＡＰＩ）を用いて前記少なくとも１つの配備の静的解析を実行することを更に有する請求項１に記載の方法。
【請求項７】
前記少なくとも１つの配備における前記少なくとも１つのポートにおけるネットワークトラフィックを収集することを更に有する請求項１に記載の方法。
【請求項８】
当該方法は更に、トラフィックがどれだけ長く特定のリンクで通信されているかを決定することを有し、前記メトリックは、リンクトラフィックの総量、各リンクの平均及び最大、全てのリンクトラフィックボリュームの第１の和、並びに全てのボリュームの比の第２の和のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項９】
マッピングされたポートについてのデータを構文解析し、前記メトリックの計算に関係しないデータをフィルタリングすることを更に有する請求項１に記載の方法。
【請求項１０】
利用可能なメトリックの数に基づいて少なくとも１つのメトリックを可視化したものを生成することを更に有する請求項１に記載の方法。
【請求項１１】
パラメータを有する前記メトリックを計算することは更に、前記パラメータのうちの少なくとも１つのパラメータに少なくとも１つの重みを適用することと、前記少なくとも１つの重み及び前記少なくとも１つのパラメータに関する少なくとも１つの内積を計算することと、前記少なくとも１つの内積と前記少なくとも１つの重みに関連付けられない前記パラメータとの和を生成することとを有する、請求項１に記載の方法。
【請求項１２】
ソフトウェアのアタックサーフェイスを決定するための処理を実行するように処理装置によって実行可能なコンピュータ命令を格納した非一時的なコンピュータ読み取り可能媒体であって、前記処理は、
ソフトウェアコードの少なくとも１つの配備をテストするためのプラットフォームを生成することと、
前記少なくとも１つの配備によって使用されるプロトコルを特定することと、
前記プロトコルを、前記少なくとも１つの配備における少なくとも１つのポートにマッピングすることと、
前記少なくとも１つの配備に関するパラメータを有するメトリックを計算することと
を有する、非一時的なコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに説明される実施形態は、ソフトウェアのアタックサーフェイスを決定することに関する。
【背景技術】
【０００２】
ソフトウェアアプリケーションは、何百又は何千ものファイルと、何十万ライン又は何百万ラインものコードを含み得る。ソフトウェアアプリケーションのコードは、データベースからの機密データ又は関連する電子装置に格納されたデータにアクセスすることがある部分を含み得る。さらに、ソフトウェアアプリケーションは、例えばインターネットなどの通信ネットワークにアクセスしてそれらのネットワーク上でデータの送信及び受信を行うコードを含み得る。一般に、ソフトウェアアプリケーションの安全性は、それがどのようにして、そのユーザ、通信ネットワーク及びストレージの環境とインタラクトするかに依存する。
【０００３】
一部のソフトウェアアプリケーションは、異なるパラメータ及びカスタマイズがその中で利用可能であり得る数多くの異なる手法で配備され得る。ソフトウェアアプリケーションのどの配備（deployment）が、他の配備と比較して、より安全で攻撃されにくいかを決定することは困難であり得る。
【０００４】
ここに特許請求される事項は、上述のような欠点を解決したり上述のような環境においてのみ動作したりする実施形態に限定されるものではない。むしろ、この背景技術は、ここに記載される一部の実施形態が実施され得る一例に係る技術分野を例示するために提示されるに過ぎない。
【発明の概要】
【０００５】
一実施形態の一態様によれば、ソフトウェアのアタックサーフェイスを決定する方法は、ソフトウェアコードの少なくとも１つの配備をテストするためのプラットフォームを生成することを含み得る。前記少なくとも１つの配備によって使用されるプロトコルが特定され得る。前記プロトコルが、前記少なくとも１つの配備における少なくとも１つのポートにマッピングされ得る。前記少なくとも１つの配備に関するパラメータを有するメトリックが計算され得る。
【０００６】
実施形態の目的及び利点は、少なくとも請求項にて特定的に列挙される要素、機構及び組み合わせによって、実現され達成されることになる。
【０００７】
理解されるように、以上の概要説明及び以下の詳細説明はどちらも、例示的且つ説明的なものであり、特許請求に係る発明を限定するものではない。
【図面の簡単な説明】
【０００８】
以下の図を含む添付図面を使用して、更なる具体性及び詳細性をもって、実施形態例の記述及び説明を行う。
【図１Ａ】テストされているソフトウェアコードのフローグラフの一例を示す図である。
【図１Ｂ】コンピュータシステムの一例を示すブロック図である。
【図２】ソフトウェアコードのメトリックを決定するシステムの一例を示すブロック図である。
【図３Ａ】ネットワーク図を含むソフトウェアコードの可視化の一例を示す図である。
【図３Ｂ】プロセス図を含むソフトウェアコードの可視化の一例を示す図である。
【図３Ｃ】全体図を含むソフトウェアコードの可視化の一例を示す図である。
【図４】ソフトウェアコードの第１の配備をソフトウェアコードの第２の配備と比較する可視化の一例を示す図である。
【図５】ソフトウェアのアタックサーフェイスを決定する方法の一例を示す図である。
【図６】ソフトウェアのアタックサーフェイスを決定する方法の他の一例を示す図である。
【発明を実施するための形態】
【０００９】
ここに記載される一部の実施形態は、ソフトウェアコードの少なくとも１つの配備（deployment）に関して、ソフトウェアのアタックサーフェイス（攻撃対象領域）を決定することに関する。この少なくとも１つの配備をテストするためのプラットフォームが生成され得る。例えば、プラットフォームはテストベッドとし得る。この少なくとも１つの配備によって使用されるプロトコルが特定され得る。ソフトウェアは、通信エンドポイントとして作用するポートを含む。プロトコルが、この少なくとも１つの配備の少なくとも１つのポートにマッピングされ得る。一部の実施形態において、この少なくとも１つの配備上で静的解析が実行され得る。静的解析は、機密情報にアクセスする経路を特定することを含み得る。
【００１０】
この少なくとも１つの配備に関するパラメータを有するメトリックが計算され得る。パラメータは、不使用ポートの数、オープンポートの数、使用される少なくとも１つのプロトコルについての情報、外部インターネットプロトコル（ＩＰ）アドレスに送信されるトラフィックのボリューム（量）、チョークポイントの数、リンクトラフィックボリューム、ノードへのプロトコルのマッピング、及びセンシティブ経路の割合を含み得る。一部の実施形態において、少なくとも１つのプロトコルについての情報は、それらのプロトコルのうちの何れかがセキュリティホールを有しているか及びそのプロトコルがどれだけ長く存在していたかを反映する各プロトコルの危険スコアと、第１の配備及び第２の配備の各々によって使用される全てのプロトコルに関する危険スコアの和とし得るトータル危険スコアとを計算するために使用され得る。外部ＩＰアドレスに送信されるトラフィックのボリュームは、例えばソフトウェアを嗅ぎ回る（スヌープする）ことによって誰かが不正行為をはたらいているかを決定するために使用され得る。チョークポイントは、例えばそのノードの除去がソフトウェアを機能させなくするか性能のかなりの低下を生じさせるかし得るノードなど、単一障害点とし得る。リンクトラフィックボリュームは、特定のリンクでどれだけのトラフィックが通信されているかを決定するために使用され得る。例えば、高いボリュームは、スヌーパーを指し示すインジケータであり得る。リンクトラフィックボリュームは、リンクトラフィックの総量、各リンクの平均及び最大、全てのリンクトラフィックボリュームの和、並びに全てのボリュームの比の和のうちの少なくとも１つとして計算され得る。一部の実施形態において、複数の配備が比較され得る。例えば、基準（ベースライン）配備が第１の配備と比較され、あるいは第１の配備が第２の配備と比較され得る。これらの配備を可視化したものが、利用可能な複数のメトリックに基づいて生成され得る。
【００１１】
本発明の実施形態を、添付図面を参照して説明する。
【００１２】
図１Ａは、ここに記載される少なくとも一部の実施形態に従って構成された、脆弱性に関連する１つ以上のメトリックを決定するためにテストされ得るソフトウェアコードの一例に係るフローグラフ１００Ａを示している。フローグラフ１００Ａは、ソフトウェアコードの異なる配備を表現するようい構成され得る。概して、一部の実施形態において、フローグラフ１００Ａのようなフローグラフは、ここに記載されるようにソフトウェアコードのメトリックを決定することにおけるプロセスの一部であり得る。フローグラフ１００Ａは、説明及び例示の目的で提示される単純化したフローグラフの一例である。フローグラフ１００Ａには、本開示の範囲を逸脱することなく、変更、付加又は省略が為され得る。
【００１３】
一部の実施形態において、ソフトウェアコードは、プログラミング言語、とりわけ、Ｐｅｒｌ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｙｔｈｏｎ、Ｒｕｂｙ、アセンブリ言語、Ｆｏｒｔｒａｎ、ＣＯＢＯＬ（common  business-oriented  language）、ＳＱＬ（structured  query  language）、ＰＨＰ（hypertext  preprocessor）、ＸＭＬ（extensible  markup  language；拡張マークアップ言語）、ＨＴＭＬ（hypertext  markup  language；ハイパーテキストマークアップ言語）のうちの１つを用いて生成され得る。
【００１４】
フローグラフ１００Ａは、図１Ａでは矢印を有する線として描かれているエッジによって共に接続されるポート１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄ、１０２Ｅ、１０２Ｆ、及び１０２Ｇ（ここでは“ポート１０２”として総称）を含み得る。フローグラフ１００Ａ内のノード１０２は各々、ソフトウェアコード内での異なる１つの処理に対応し、例えば、関数若しくはメソッドや、数あるコード文の種類の中でとりわけｗｈｉｌｅ文、ｉｆ文、ｌｅｔ文、ｃａｓｅ文などのその他の処理や、数あるその他の演算の中でとりわけ＝、＋、＊、−、＆、％などの演算などの異なる１つの処理に対応し得る。一部の実施形態において、ノード１０２は、ソフトウェアにおけるポートを含み得る。ポートは、コンピュータのホストオペレーティングシステムにおいて通信エンドポイントとして作用し得る。例えば、ソフトウェアがクラウドコンピューティングソフトウェアであるとき、ポートは、クラウドコンピューティングに使用されるネットワークと通信するためのエンドポイントであり得る。ポートはオープン（開）又はクローズド（閉）であり得る。オープンポートは、ソフトウェア外のエンティティとの通信にアクセス可能であり、クローズドポートはアクセス可能でない。ポートはプロトコルと関連付けられ得る。
【００１５】
一部の実施形態において、ソフトウェアコードが解析されて、ネットワーク内のチョークポイントが決定される。例えば、図１Ａにおいて、ノード１０２はチョークポイントである。何故なら、ノード１０２Ｃを除去することが、ソフトウェアコードの第１の組のノード１０７とソフトウェアコードの第２の組のノード１０９との間の通信を切断し得るからである。より詳細に後述するメトリックアプリケーションが、ソフトウェアコードに関連するメトリックを決定するように構成され得る。例えば、メトリックアプリケーションは、ソフトウェアコードの或る配備と、不使用ポートの数、オープンポートの数、使用プロトコルの数、外部ＩＰアドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、ノードへのプロトコルのマッピング、及びセンシティブ経路の割合を含んだメトリックとを決定し得る。
【００１６】
図１Ｂは、ここに記載される少なくとも一部の実施形態に従って構成されたコンピュータシステム１００Ｂ（“システム１００Ｂ”）のブロック図を例示している。システム１００Ｂは、ネットワーク１３５に結合されたクライアント１３０を含んでいる。クライアント１３０はプロセッサ１３１及びメモリ１３２を含み得る。メモリ１３２は、メトリックアプリケーション１３３及びソフトウェアコード１３４を含み得る。メトリックアプリケーション１３３は、ソフトウェアコード１３４の少なくとも１つの配備を解析するように構成され得る。ネットワーク１３５は、有線又は無線とすることができ、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、及び／又はそれにわたって複数の装置が通信し得るその他のデータパスを含み得る。
【００１７】
プロセッサ１３１は、様々なコンピュータハードウェア若しくはソフトウェアモジュールを含んだ、如何なる好適な専用又は汎用のコンピュータ、コンピューティングエンティティ又は処理装置を含んでいてもよく、何らかの適用可能なコンピュータ読み取り可能媒体に格納された命令を実行するように構成され得る。例えば、プロセッサ１３１は、汎用コントローラ、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又はプログラム命令を解釈及び／又は実行し且つ／或いはデータを処理するように構成されたその他のデジタル回路若しくはアナログ回路を含み得る。図１Ｂでは単一のプロセッサとして示されているが、理解されるように、プロセッサ１３１は、如何なる数の処理を実行するように構成された如何なる数のプロセッサを含んでいてもよい。
【００１８】
メモリ１３２は、プロセッサ１３１によって十こされ得る命令及び／又はデータを格納し得る。それらの命令及び／又はデータは、ここに記載される技術を実行するコードを含み得る。一部の実施形態において、それらの命令は、プロセッサ１３１に特定の機能又は機能群を実行させる命令及びデータを含み得る。一部の実施形態において、メモリ１３２は、コンピュータ実行可能命令又はデータ構造を担持する、あるいは格納した、コンピュータ読み取り可能媒体を含み得る。そのようなコンピュータ読み取り可能媒体は、コンピュータ読み取り可能媒体に格納されたコンピュータ実行可能命令を実行するようにプログラムされたプロセッサ１３１によってアクセスされ得る如何なる入手可能な媒体ともし得る。限定ではなく例として、そのようなコンピュータ読み取り可能媒体は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的消去プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）若しくはその他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気記憶装置、フラッシュメモリデバイス（例えば、ソリッドステートメモリデバイス）、又は、コンピュータ実行可能命令の形態の所望のプログラムコード若しくはデータ構造を担持あるいは格納するために使用されることができ且つ汎用若しくは専用のコンピュータによってアクセスされることが可能なその他の記憶媒体を含む、有形又は非一時的なコンピュータ読み取り可能記憶媒体を含み得る。以上のものの組合せもコンピュータ読み取り可能媒体の範囲に含まれ得る。
【００１９】
メモリは、メトリックアプリケーション１３３を実行するための命令及びソフトウェアコード１３４を格納し得る。一部の実施形態において、ソフトウェアコード１３４は、メトリックアプリケーション１３３とは異なるクライアント１３０に格納されてもよい。例えば、ソフトウェアコード１３４がクラウドコンピューティングアプリケーションであるとき、ソフトウェアコード１３４は、ネットワーク１３５を介して互いに通信する異なるクライアント１３０上のコンポーネントを有する分散システムとして格納され得る。また、一部の実施形態において、ソフトウェアコード１３４に関する設定のライブラリが、メトリックアプリケーション１３３及びソフトウェアコード１３４と同じクライアント１３０上又は別個のクライアント１３０上に格納され得る。メトリックアプリケーション１３３は、ソフトウェアコード１３４の２つ以上の異なる配備を解析して、各配備に関連するメトリックを決定し得る。
【００２０】
ここで使用されるとき、用語“モジュール”又は“コンポーネント”は、モジュール若しくはコンポーネントの処理を実行するように構成された特定のハードウェア実装、及び／又は、コンピュータシステムの汎用ハードウェア（例えば、コンピュータ読み取り可能媒体、処理装置など）に格納され且つ／或いはそれによって実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを意味し得る。一部の実施形態において、ここに記載された様々なコンポーネント、モジュール、エンジン及びサービスは、コンピュータシステム上で（例えば、別々のスレッドとして）実行される複数のオブジェクト又はプロセスとして実装され得る。ここに記載されるシステム及び方法の一部は概して、（汎用ハードウェアに格納され且つ／或いはそれによって実行される）ソフトウェアにて実装されるものとして説明されるが、特定のハードウェア実装又はソフトウェアと特定のハードウェア実装との組合せも可能であり、且つ意図されるものである。本明細書において、“コンピューティングエンティティ”は、上述のような何らかのコンピューティングシステム、又はシステム１００Ｂ上で走る何らかのモジュール又はモジュール群の組合せとし得る。
【００２１】
図２は、ここに記載される少なくとも一部の実施形態に従って構成された、メトリックに基づいてソフトウェアのアタックサーフェイスを決定するシステム２００の一例のブロック図である。特に、システム２００は、図１Ｂのソフトウェアコード１３４の少なくとも１つの配備をテストするためのプラットフォームを生成し、その配備のメトリックを計算するように構成され得る。一部の実施形態において、メトリックアプリケーション１３３は、第２の組のメトリックを有する第２の配備と比較される第１の組のメトリックを有する第１の配備を生成するように構成され得る。メトリックアプリケーション１３３は、配備生成部２０６、ポートマッピング部２０８、静的コード解析部２１０、ネットワークスキャン部２１２、フィルタ２１４、メトリック解析部２１６、及びユーザインタフェースエンジン２２０を含み得る。
【００２２】
配備生成部２０６は、ソフトウェアコード１３４を受け取るように構成され得る。ソフトウェアコード１３４は、プログラミング言語、とりわけ、Ｐｅｒｌ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、アセンブリ言語、Ｆｏｒｔｒａｎ、ＣＯＢＯＬ、ＳＱＬ、ＰＨＰ、ＸＭＬ、ＨＴＭＬのうちの１つを用いて生成され得る。ソフトウェアコード１３４は、データベースから、例えば図１Ｂのネットワーク１３５などのネットワークから、有形コンピュータ読み取り可能記憶媒体から、又はその他のロケーションから受信され得る。
【００２３】
配備生成部２０６は、ソフトウェアコード１３４の少なくとも１つの配備を生成するように構成され得る。配備生成部２０６は、そのソフトウェアコード１３４に関して利用可能な、異なるスクリプト、設定ファイル及びカスタマイズから、配備を生成するように構成され得る。例えば、ソフトウェアコード１３４はクラウドコンピューティングソフトウェアとすることができ、クラウドコンピューティングソフトウェアのクラウド編成が、多様な手法でクラウドコンピューティングネットワーク上に配備され得る。一部の実施形態において、配備生成部２０６は、設定のライブラリにアクセスして配備を生成する。配備生成部２０６は、ソフトウェアコード１３４の配備をテストするためのプラットフォームを生成し得る。例えば、配備生成部２０６は、ソフトウェアコード１３４の少なくとも１つの配備を生成する技術を測定して配備するテストベッドを作成し得る。
【００２４】
一部の実施形態において、配備生成部２０６は、ソフトウェアコード１３４の複数の配備を生成するように構成され得る。例えば、配備生成部２０６は、ソフトウェアコード１３４の第１の配備をテストするためのプラットフォームを生成するように構成され、いったん第１の配備に関してメトリックが生成されると、配備生成部２０６は、ソフトウェアコード１３４の第２の配備をテストするためのプラットフォームを生成するように構成され得る。他の一例において、配備生成部２０６は、比較のために基準配備と第１の配備とを生成するように構成され得る。
【００２５】
ポートマッピング部２０８は、配備生成部２０６から少なくとも１つの配備を受け取るように構成され得る。ポートマッピング部２０８は、この少なくとも１つの配備に関連するプロトコルをデータベースから検索し、プロトコルに従ってこの少なくとも１つの配備によって使用されるプロトコルを特定し、それらのプロトコルをこの少なくとも１つの配備における少なくとも１つのポートにマッピングするように構成され得る。ポートマッピング部２０８は、マッピングに基づき、各ノード上でどのプロセスが実行されるかを知るように構成され得る。ポートマッピング部２０８は、オープンポートのリストを生成するとともに、プロトコルとノードとの間に唯一のマッピングが存在するインスタンスを特定するように構成され得る。一部の実施形態において、ポートマッピング部２０８は、既知のプロトコル及びそれらのバージョンをデータベースから検索して、それらの脆弱性レベルを決定するように構成され得る。例えば、プロトコルの一部のバージョンが危険な脆弱性を有すると見なされ得る。
【００２６】
静的コード解析部２１０は、上記少なくとも１つの配備を受け取るように構成され得る。静的コード解析部２１０は、アプリケーションプログラミングインタフェース（ＡＰＩ）を用いて、上記少なくとも１つの配備について静的解析を実行するように構成され得る。例えば、静的コード解析部２１０は、ソースコードが利用可能である場合に、ポートを開いてプロトコルを配備するソフトウェアコード１３４内の特定のモジュールを決定し得る。それらモジュールに対し、静的コード解析部２１０は、より詳細な測定結果を与えるために、機密情報にアクセスする経路を測定する。一部の実施形態において、静的コード解析部２１０は、ソフトウェアコード１３４のこれら配備における、機密情報にアクセスする経路を測定する。
【００２７】
一部の実施形態において、静的コード解析部２１０は、ＡＰＩリストを用いてアクションを作成するように構成され得る。例えば、いったんテストベンチが動作すると、静的コード解析部２１０は、ＡＰＩを用いて、複数のユーザを作成するため、実行されるべきタスク及びジョブを計算するため、データベースをセットアップして該データベースに１０００のエントリを入力する管理のため、身元を管理するため、アクセス特権を管理するため、データベースの初期入力のため、アカウントを作成するため、コンピュータジョブをセットアップするため、等々のアクションを作成するように構成され得る。このプロセスについての更なる情報は、２０１４年４月１２日に出願された“DETERMINING  SOFTWARE  METRICS”なるタイトルの米国特許出願第１３／８６２２３４号に見出すことができ、その内容全体をここに援用する。
【００２８】
ネットワークスキャン部２１２は、配備生成部２０６から上記少なくとも１つの配備を受け取るように構成され得る。ネットワークスキャン部２１２は、不使用ポートのリスト、外部ＩＰ接続、外部ＩＰ接続へのトラフィック、チョークポイント、及びリンクトラフィックボリュームを生成し得る。
【００２９】
ネットワークスキャン部２１２は、外部ＩＰアドレスへのトラフィックのボリュームを決定するように構成され得る。例えば、ソフトウェアコード１３４がクラウドコンピューティングソフトウェアであるとき、ノード群は異なる仮想マシンを表し得る。それら仮想マシンは、同じ物理コンピュータ又はサーバ１３０上にあって、ネットワーク１３５上の別々のコンピュータとして振る舞ってもよいし、あるいは、それらは別々のコンピュータ又はサーバ１３０上にあってもよい。ネットワークスキャン部２１２は、ノードがプライベートクラウドの外部であるＩＰアドレスと通信しているかを決定することによって、どのような種類のトラフィックがプライベートクラウドの外に出て行っているかを測定するように構成され得る。例えば、同じローカルネットワーク内の装置群は、最上位の２バイトに関する同じ数字と最下位の２バイトに関する異なる数字とを有し得る３２ビット（４バイト）ＩＰアドレスを使用し得る。そのノードのＩＰアドレスの最上位の２バイトが、そのノードが通信しているエンティティと異なる場合、そのノードは外部のＩＰアドレスと通信している。
【００３０】
ネットワークスキャン部２１２は、ソフトウェアコード１３４の配備における大部分の経路上にある幾つかのノードの中心性に基づいてチョークポイントを決定するように構成され得る。一部の実施形態において、ネットワークスキャン部２１２は、標準グラフアルゴリズムを用いてチョークポイントを決定し得る。
【００３１】
ネットワークスキャン部２１２は、特定のリンクでどれだけのトラフィックが通信されているかを決定することによって、リンクトラフィックボリュームを決定するように構成され得る。一部の実施形態において、ネットワークスキャン部２１２は、１つ以上のＡＰＩを用いてリンクトラフィックボリュームを決定するように構成され得る。リンクトラフィックボリュームは、リンクトラフィックの量、各リンクに関する平均及び最大、全てのボリュームの和、及び／又は全てのボリュームの比の和を含み得る。
【００３２】
フィルタ２１４は、ネットワークスキャン部２１２からネットワークトラフィックを受け取るように構成され得る。フィルタ２１４はまた、ポートマッピング部２０８及び／又は静的コード解析部２１０からのデータを受け取るように構成され得る。フィルタ２１４は、データの構文解析及びフィルタリングを行うとともに、残ったデータをメトリック解析部２１６に送信するように構成され得る。例えば、フィルタ２１４は、ダンプ及びログファイルを受信し、それらのファイルを構文解析し、そして、メトリック解析部２１６にとって関係のないデータをフィルタリング除去し得る。
【００３３】
メトリック解析部２１６は、フィルタ２１４からの上記残ったデータを組み合わせて、上記少なくとも１つの配備に関するメトリック２１８を計算するように構成され得る。メトリック２１８は、異なる配備のアタックサーフェイス脆弱性を映すものであり得る。例えば、メトリック解析部２１６は、その配備がチョークポイントと高トラフィックボリュームを受ける幾つかのノードとを有することを決定することがあるが、これは、その配備が不具合を経験し得ること、及びエンティティがソフトウェアを嗅ぎ回っているかもしれないことを示唆するものである。メトリック解析部２１６は、ソフトウェアコード１３４の相異なる配備間の相違についてのレポートを生成するように構成され得る。
【００３４】
一部の実施形態において、メトリック解析部２１６は、上記少なくとも１つの配備に関するパラメータを有するメトリック２１８を計算し、それらパラメータは、不使用ポートの数、オープンポートの数、使用プロトコルの数、外部ＩＰアドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、ノードへのプロトコルのマッピング、及びセンシティブ経路の割合を含む。
【００３５】
不使用ポートは、ソフトウェアコード１３４のその配備の実行においては通信に使用されないポートとし得る。不使用ポート数が多いほど、より高い度合いの脆弱性を指し示し得る。何故なら、不使用ポートは、無権限エンティティがネットワークへのアクセスを得てネットワークトラフィックを傍受し得る潜在的なセキュリティホールを表すからである。
【００３６】
オープンポートは、通信に利用可能なポートである。オープンポートは、通信をリッスンしているポートであり、それらのポートを無権限エンティティとの通信に晒し出すものである。結果として、オープンポート数の増加も、高められた脆弱性を指し示し得る。
【００３７】
プロトコル数に関し、メトリック解析部２１６は、各ノードで使用されるプロトコル数を決定し得る。メトリック解析部２１６は、各ノードで使用されている各プロトコルのバージョンと、どれほど長くそのプロトコルが使用されてきたか（より長い期間は、そのプロトコルをテストするためのいっそう多くの機会が存在したのであるから、より安全なプロトコルに関連付けられる）と、そのプロトコルが既知のセキュリティホールに関連しているかとに基づいて、各プロトコルに危険スコアを割り当てるように構成され得る。一部の実施形態において、メトリック解析部２１６は、各配備に関するトータル危険スコア（これは、ソフトウェアコード１３４の第１の配備、第２の配備とともに使用される各プロトコルの危険スコアの和である）を決定するように構成され得る。
【００３８】
外部ＩＰアドレスに送信されるトラフィックのボリュームは、無権限エンティティがソフトウェアコード１３４を嗅ぎ回っているかを決定するために使用され得る。例えば、或るノードが大量のトラフィックを外部ＩＰアドレスに送信している場合、そのノードはプライベートデータを無権限エンティティに送信しているかもしれない。結果として、外部ＩＰアドレスへのトラフィックボリュームが少ないほど、より安全なソフトウェアコード１３４の配備を指し示す。
【００３９】
配備におけるチョークポイントは、潜在的な脆弱箇所である。何故なら、チョークポイントであるノードの不具合は、ソフトウェアコード１３４に、低下した機能性を持たせるか、動作を停止させるかし得るからである。結果として、チョークポイント数が少ないほど、より安全なソフトウェアコード１３４の配備と関連付けられる。
【００４０】
外部ＩＰアドレスに通信されているトラフィックのボリュームと同様に、大量のリンクトラフィックは、無権限エンティティがソフトウェアコード１３４を嗅ぎ回っていることを指し示すものであり得る。結果として、リンクトラフィックボリュームが少ないほど、脆弱性の低いソフトウェアコード１３４の配備と関連付けられる。
【００４１】
メトリック解析部２１６は、ポートマッピング部２０８によって決定されたノードへのプロトコルのマッピングを用いて、唯一のマッピングが存在する固有ケースの数を特定するように構成され得る。或るプロトコルが唯一のノード上でのみ実行されている場合、そのノードを削除することは、そのプロトコルが実行されることを停止させることになり、それは、ソフトウェアコードを不具合に対していっそう脆弱にする。例えば、ダッシュボードへのユーザアクセスを与えるウェブサーバを唯一のノードが起動している場合、ノード不具合は、ソフトウェアコードのクライアントサイドを機能しなくさせて、ユーザをイライラさせることになる。結果として、冗長なプロトコルはより低い脆弱性を指し示し、ノードへのプロトコルのマッピングが唯一存在するケースの数が少ないほど、より安全なソフトウェアコード１３４の配備と関連付けられ得る。
【００４２】
また、一部の実施形態において、メトリック解析部２１６は、静的コード解析部２１０によって決定された機密情報にアクセスする経路に基づいて、センシティブな経路の割合を生成するように構成され得る。
【００４３】
一部の実施形態において、メトリック解析部２１６は、上記少なくとも１つの配備に関するパラメータのリストとしてメトリック２１８（アタックサーフェイスメトリックとしても知られる）を提示するように構成され得る。一部の実施形態において、メトリック解析部２１６は、複数のパラメータに代えて、単一の値としてメトリック２１８を提示するように構成され得る。例えば、メトリック２１８は、全てのパラメータの正規化した和とし得る。
【００４４】
一部の実施形態において、メトリック解析部２１６は、複数の配備に関するメトリック２１８の比較を提示するように構成され得る。それら複数の配備は、基準配備と別の配備、第１の配備と第２の配備、等々を含み得る。この提示は、それら２つ（又はそれより多く）の配備の要素ごとの比較を含み得る。一部の実施形態において、メトリック解析部２１６は、複数の配備に関するトータルメトリック２１８を比較として生成するように構成され得る。例えば、メトリック解析部２１６は、第１の配備が第２の配備より２５％低い脆弱さであることを決定し得る。
【００４５】
これら又は他の実施形態において、メトリック解析部２１６は、メトリック２１８とベースラインとの間の差を与えるよう、ベースラインに従ってメトリック２１８を正規化するように構成され得る。例えば、メトリック解析部２１６は、第１の配備がベースラインより１０％低いアタックサーフェイスメトリックを有すること、及び第２の配備がベースラインより１５％高いアタックサーフェイスメトリックを有することを決定し得る。
【００４６】
更なる他の一実施形態において、メトリック解析部２１６は、パラメータのうちのサブセット（部分集合）に関するメトリック２１８を生成するように構成されることができ、残りのパラメータに関する個々の詳細を含めてもよい。例えば、一部の実施形態において、不使用ポート数及びオープンポート数を、一部の例で重要であるため、別々に表示することができ、これら以外のパラメータがメトリック２１８へと結合される。更なる他の一実施形態において、メトリック解析部２１６は、パラメータの一部に、それらの重要性に基づいて重みを適用するように構成され得る。例えば、メトリック解析部２１６は、重みベクトルの内積（ドット積）を用いることによって、不使用ポート数及びオープンポート数に重みを適用し得る。そして、メトリック解析部２１６は、個々のパラメータの和としてメトリック２１８を生成し得る。
【００４７】
ユーザインタフェースエンジン２２０は、メトリック解析部２１６からメトリック２１８を受け取り、パラメータを可視化したもの２２０を生成するように構成され得る。例えば、ユーザインタフェースエンジン２２０は、図３Ａに例示するようなネットワーク図、図３Ｂに例示するようなプロセス図、図３Ｃに例示するような全体図、又は、図４に例示するような、レーダーを用いてパラメータの差を図示する異なるレポートを生成するように構成され得る。これらの図については更に詳細に後述する。
【００４８】
システム２００には、本開示の範囲を逸脱することなく、変更、付加又は省略が為され得る。例えば、ユーザインタフェースエンジン２２０はオプションとし得る。一部の実施形態において、システムの特定の態様は、ソフトウェアコード１３４のプログラミング言語に応じて異なり得る。例えば、Ｊａｖａ（登録商標）を構文解析するのに使用されるフィルタ２１４は、Ｃを構文解析するのに使用されるフィルタ２１４とは異なり得る。しかしながら、ソフトウェアコード１３４に使用されるプログラミング言語にかかわらず、システム２００に関して説明した基本原理は同じであるままである。一部の実施形態において、システム２００は、システム２００を実現するコンピュータ実行可能命令を担持する、あるいは格納した、コンピュータ読み取り可能媒体を用いて実装され得る。
【００４９】
図３Ａは、ユーザインタフェースエンジン２２０によって生成される、メトリックに含まれる１つ以上のパラメータを指し示すネットワーク図の一例を示している。このネットワーク図は、ソフトウェアコード１３４に関して生成された、ＩＰアドレスを用いて例示されるノードと、ノード間のインタラクションを表すポートとを含んでいる。ネットワーク図は、どのノードがクリティカルであるかを示し得る。何故なら、それらのノードには多数のリンク（エッジ）が付随するからである。ネットワーク図はまた、不使用ノードを含んでいてもよく、不使用ノードは、それらを他のノードに接続するリンクを有しないことに基づいて識別され得る。このネットワーク図は、多用されるリンクを、より太いエッジを用いて表現している。
【００５０】
図３Ｂは、メトリックに含まれる１つ以上のパラメータを指し示すプロセス図の一例を示している。このプロセス図は、プロセス情報を用いてネットワーク図を増強している。具体的には、このプロセス図は、様々なノードによって使用されるＡＰＩをグラフに追加するとともに、ノード及びＡＰＩの周りに円を含めて、どのノード及びＡＰＩがネットワーク内のポートに非常に多く接続されるかを指し示している。
【００５１】
図３Ｃは、メトリックに含まれる１つ以上のパラメータを指し示す全体図の一例を示している。この全体図は、ノードと様々なＡＰＩとの間の接続を示すアタックサーフェイスのパラメータに関する包括的な図とし得る。ノード間のリンクの太さが、ノード間のリンクトラフィックの量を指し示し得る。
【００５２】
図４は、レーダーマップにて第１の配備を第２の配備と比較する可視化の一例を示している。このレーダーマップは、ベースラインによって正規化された２つの配備間の差を示すことによって、アタックサーフェイスメトリックを図示している。例えば、図４においては、これらの配備のうちの一方が、他方の配備より、２倍の多さの外部ＩＰトラフィックと、１．５倍の大きさのプロトコル脅威と、１．２倍の多さのオープンポートと、０．３倍の多さの不使用ポートと、０．３倍の多さの、ノードに対して唯一のプロトコルと、１．３倍の多さのリンクトラフィックボリュームと、０．８倍の多さのチョークポイントとを有している。これらの配備のうちの一方が他方より一貫して大きくはなかった場合、これら２つの異なる配備に関連付けられたメトリックの重ね合わせや、折れ線グラフなどが、より良い可視化となり得る。
【００５３】
図５は、ここに記載される少なくとも一部の実施形態に従って構成された、ソフトウェアのアタックサーフェイスを決定する一例に係る方法５００のフローチャートである。方法５００は、一部の実施形態において、例えば図２のシステム２００などのシステムによって実行され得る。特に、方法５００は、図２のメトリックアプリケーション１３３によって実行され得る。例えば、方法５００は、図２の配備生成部２０６、ポートマッピング部２０８、静的コード解析部２１０、ネットワークスキャン部２１２、フィルタ２１４、及びメトリック解析部２１６によって実行され得る。個別のブロックとして図示しているが、様々なブロックが、所望の実装に応じて、更なるブロックへと分割され、より少ないブロックへと結合され、あるいは排除されてもよい。
【００５４】
方法５００は、ブロック５０２で開始することができ、該ブロックにて、ソフトウェアコード１３４の少なくとも１つの配備をテストするためのプラットフォームが生成され得る。例えば、プラットフォームはテストベッドとし得る。
【００５５】
ブロック５０４にて、この少なくとも１つの配備によって使用されるプロトコルが特定され得る。例えば、その配備によって使用されるプロトコルがデータベースから特定され、例えばバージョンなどのプロトコルに関連する情報、プロトコルにおける既知のセキュリティホール、及びそれらが使用されてきた時間の長さが検索される。
【００５６】
ブロック５０６にて、それらのプロトコルが、上記少なくとも１つの配備における少なくとも１つのポートにマッピングされ得る。このマッピングは、どのポートがオープンであるかを特定するために使用され得る。
【００５７】
ブロック５０８にて、上記少なくとも１つの配備に関するパラメータを有するメトリックが計算され得る。これらのパラメータは、不使用ポートの数、オープンポートの数、使用される少なくとも１つのプロトコルについての情報、外部ＩＰアドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、及びノードへのプロトコルのマッピングを含み得る。
【００５８】
図６は、ここに記載される少なくとも一部の実施形態に従って構成された、ソフトウェアのアタックサーフェイスを決定する他の一例に係る方法６００のフローチャートである。方法６００は、一部の実施形態において、例えば図２のシステム２００などのシステムによって実行され得る。特に、方法６００は、図２のメトリックアプリケーション１３３によって実行され得る。例えば、方法６００は、図２の配備生成部２０６、ポートマッピング部２０８、静的コード解析部２１０、ネットワークスキャン部２１２、フィルタ２１４、メトリック解析部２１６、及びユーザインタフェースエンジン２２０によって実行され得る。個別のブロックとして図示しているが、様々なブロックが、所望の実装に応じて、更なるブロックへと分割され、より少ないブロックへと結合され、あるいは排除されてもよい。
【００５９】
方法６００は、ブロック６０２で開始することができ、該ブロックにて、ソフトウェアコード１３４の配備をテストするためのプラットフォームが生成され得る。ブロック６０４にて、上記配備によって使用されるプロトコルが特定され得る。ブロック６０６にて、それらのプロトコルが、上記配備における少なくとも１つのポートにマッピングされ得る。このマッピングは、どのポートがオープンであるかを特定するために使用され得る。ブロック６０８にて、例えばアプリケーションプログラミングインタフェース（ＡＰＩ）を用いて、ソフトウェアコード１３４の静的解析が実行され得る。
【００６０】
ブロック６１０にて、上記配備に関連する上記少なくとも１つのポートにおけるネットワークトラフィックが収集され得る。例えば、異常に高いトラフィックを有するポートは、ソフトウェアコード１３４を嗅ぎ回っている無権限エンティティによってアクセスされていることがある。
【００６１】
ブロック６１２にて、関係ないデータが構文解析されてフィルタリングされ得る。例えば、ダンプ及びログファイルが構文解析されてフィルタに掛けられ、メトリックを計算するためのデータが準備される。ブロック６１４にて、残ったデータが組み合わされ得る。
【００６２】
ブロック６１６にて、上記配備に関するパラメータを有するメトリックが計算され得る。パラメータは、不使用ポートの数、オープンポートの数、使用される１つ以上のプロトコルについての情報、外部ＩＰアドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、ノードへのプロトコルのマッピング、及びセンシティブな経路の割合を含み得る。一部の実施形態において、これらのパラメータが組み合わされて、第１の配備に関する第１のアタックサーフェイスメトリック、及び第２の配備に関する第２のアタックサーフェイスメトリックが作成され得る。アタックサーフェイスメトリックは、個々のパラメータの和、又は各パラメータの値及び重みの内積の和とし得る。
【００６３】
ブロック６１８にて、解析すべき更なる配備が存在するかが決定され得る。例えば、上記配備は基準配備であり、第１の配備が比較に利用可能であり得る。他の一例において、上記配備は第１の配備であり、第２の配備が利用可能であり得る。解析すべき更なる配備が存在する場合、当該方法は、ブロック６０２で始まることを繰り返し得る。解析すべき更なる配備が存在しない場合、当該方法はブロック６２０に進み得る。ブロック６２０にて、メトリックを可視化したものが生成され得る。例えば、グラフは、第２の配備の上への第１の配備に関するパラメータの重ね合わせ、パラメータを比較する折れ線グラフ、アタックサーフェイスメトリックを有するグラフなどを含み得る。
【００６４】
当業者が認識するように、ここに開示されたこの手順及びその他の手順では、このプロセス及び方法で実行される様々な機能は異なる順序で実行されてもよい。また、概説されたステップ及び処理は単に例として提示されるものであり、これらのステップ及び処理の一部は、開示された実施形態の本質を逸脱することなく、省略され、より少ないステップ及び処理へと結合され、あるいは更なるステップ及び処理へと拡張され得る。また、方法３００は、縮められたフローチャートの中で経路カウントを決定するのに使用され得る方法の単なる一例である。経路カウントを決定するためのその他の方法も、本開示の範囲を逸脱することなく使用され得る。
【００６５】
以上の詳細な説明は、例えば図２のシステム２００を例示するブロック図、並びに図５及び６のそれぞれ方法５００、６００を例示するフローチャートなど、ブロック図、フローチャート及び／又は例の使用により、様々な実施形態を説明している。このようなブロック図、フローチャート及び／又は例が１つ以上の機能及び／又は処理を含む限りにおいて、当業者によって理解されるように、このようなブロック図、フローチャート及び／又は例の中の各機能及び／又は処理は、広範囲のハードウェア、ソフトウェア、ファームウェア、又はこれらの実質的に任意の組み合わせによって、個別及び／又は集合的に実装され得る。一部の実施形態において、ここに記載された事項の幾つかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、又はその他の集積形態によって実装され得る。しかしながら、当業者が認識するように、ここに開示された実施形態の一部の態様は、全体として、あるいは部分的に、集積回路にて、１つ以上のコンピュータ上で実行される１つ以上のコンピュータプログラムとして（例えば、１つ以上のコンピュータシステム上で実行される１つ以上のプログラムとして）、１つ以上のプロセッサ上で実行される１つ以上のプログラムとして（例えば、１つ以上のマイクロプロセッサ上で実行される１つ以上のプログラムとして）、ファームウェアとして、あるいはこれらの実質的に任意の組み合わせとしても等しく実装されることができ、また、回路を設計すること及び／又はソフトウェア及びファームウェアのコードを書くことは、十分に、本開示を受けた当業者の技能の範囲内である。また、当業者が認識するように、ここに記載された事項のメカニズムは、多様な形態のプログラム製品として配給されることができ、また、ここに記載された事項の例示的な実施形態は、その配給を行うために使用される信号担持媒体の具体的な種類にかかわらずに適用されるものである。
【００６６】
また、ここに記載される実施形態は、より詳細に後述するような様々なコンピュータハードウェア又はソフトウェアモジュールを含んだ専用あるいは汎用のコンピュータの使用を含み得る。
【００６７】
ここに記載される実施形態は、コンピュータ実行可能命令又はデータ構造を担持する、あるいは格納した、コンピュータ読み取り可能媒体を用いて実現され得る。そのようなコンピュータ読み取り可能媒体は、汎用あるいは専用のコンピュータによってアクセスされることが可能な如何なる入手可能な媒体であってもよい。限定ではなく例として、そのようなコンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ若しくはその他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気記憶装置、又は、所望のプログラムコードをコンピュータ実行可能命令又はデータ構造の形態で担持あるいは格納するように使用され且つ汎用あるいは専用のコンピュータによってアクセスされることが可能なその他の記憶媒体を含む有形のコンピュータ読み取り可能記憶媒体を有し得る。以上のものの組合せもコンピュータ読み取り可能媒体の範囲に含まれる。
【００６８】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、又は専用処理装置（例えば、プロセッサ）に特定の機能又は機能群を実行させる命令及びデータを有し得る。ここでは構成上の機構及び／又は方法のステップに特有の言葉にて説明してきたが、理解されるべきことには、添付の請求項に規定される事項は必ずしも、ここで説明された特有の機構又はステップに限定されるものではない。むしろ、ここで説明された特有の機構及びステップは、請求項に規定される事項を実現する形態の例として開示されたものである。
【００６９】
ここに記載された全ての例及び条件付きの言葉は、技術を前進させるために本願の発明者によって与えられる概念と本発明とを読者が理解することを支援するための教育的な目的を意図したものであり、そのように具体的に記載した例及び条件への限定ではないと解釈されるべきである。本発明の実施形態を詳細に説明したが、理解されるべきことには、これらの実施形態には、本発明の精神及び範囲を逸脱することなく、様々な変形、代用及び改変が為され得る。
【００７０】
以上の説明に関し、更に以下の付記を開示する。
（付記１）  ソフトウェアのアタックサーフェイスを決定する方法であって、
１つ以上のプロセッサを用いて、ソフトウェアコードの少なくとも１つの配備をテストするためのプラットフォームを生成し、
前記１つ以上のプロセッサを用いて、前記少なくとも１つの配備によって使用されるプロトコルを特定し、
前記１つ以上のプロセッサを用いて、前記プロトコルを、前記少なくとも１つの配備における少なくとも１つのポートにマッピングし、且つ
前記１つ以上のプロセッサを用いて、前記少なくとも１つの配備に関するパラメータを有するメトリックを計算する
ことを有する方法。
（付記２）  前記メトリックは、不使用ポートの数、オープンポートの数、使用される少なくとも１つのプロトコルについての情報、外部インターネットプロトコル（ＩＰ）アドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、及びノードへのプロトコルのマッピングを含む、付記１に記載の方法。
（付記３）  前記使用される少なくとも１つのプロトコルについての前記情報は、前記プロトコルのうちの何れかがセキュリティホールを有するか、及びそのプロトコルがどれだけ長く存在していたか、を反映する第１のプロトコルに関する第１の危険スコアと、第２のプロトコルに関する第２の危険スコアと、前記第１の危険スコア及び前記第２の危険スコアの和であるトータル危険スコアとを含む、付記２に記載の方法。
（付記４）  前記少なくとも１つの配備は、第１の配備及び第２の配備であり、前記メトリックを計算することは、前記第１の配備に関する第１のメトリックと前記第２の配備に関する第２のメトリックとを計算することを有する、付記１に記載の方法。
（付記５）  基準配備を受け取り、第１の配備を受け取り、且つ前記第１の配備を前記基準配備に基づいて正規化することを更に有する付記１に記載の方法。
（付記６）  アプリケーションプログラミングインタフェース（ＡＰＩ）を用いて前記少なくとも１つの配備の静的解析を実行することを更に有する付記１に記載の方法。
（付記７）  前記少なくとも１つの配備における前記少なくとも１つのポートにおけるネットワークトラフィックを収集することを更に有する付記１に記載の方法。
（付記８）  当該方法は更に、トラフィックがどれだけ長く特定のリンクで通信されているかを決定することを有し、前記メトリックは、リンクトラフィックの総量、各リンクの平均及び最大、全てのリンクトラフィックボリュームの第１の和、並びに全てのボリュームの比の第２の和のうちの少なくとも１つを含む、付記１に記載の方法。
（付記９）  関係ないデータを構文解析してフィルタリングすることを更に有する付記１に記載の方法。
（付記１０）  利用可能なメトリックの数に基づいて少なくとも１つのメトリックを可視化したものを生成することを更に有する付記１に記載の方法。
（付記１１）  パラメータを有する前記メトリックを計算することは更に、前記パラメータのうちの少なくとも１つのパラメータに少なくとも１つの重みを適用することと、前記少なくとも１つの重み及び前記少なくとも１つのパラメータに関する少なくとも１つの内積を計算することと、前記少なくとも１つの内積と前記少なくとも１つの重みに関連付けられない前記パラメータとの和を生成することとを有する、付記１に記載の方法。
（付記１２）  ソフトウェアのアタックサーフェイスを決定するための処理を実行するように処理装置によって実行可能なコンピュータ命令を格納した非一時的なコンピュータ読み取り可能媒体であって、前記処理は、
ソフトウェアコードの少なくとも１つの配備をテストするためのプラットフォームを生成することと、
前記少なくとも１つの配備によって使用されるプロトコルを特定することと、
前記プロトコルを、前記少なくとも１つの配備における少なくとも１つのポートにマッピングすることと、
前記少なくとも１つの配備に関するパラメータを有するメトリックを計算することと
を有する、非一時的なコンピュータ読み取り可能媒体。
（付記１３）  前記メトリックは、不使用ポートの数、オープンポートの数、使用される少なくとも１つのプロトコルについての情報、外部インターネットプロトコル（ＩＰ）アドレスに送信されるトラフィックのボリューム、チョークポイントの数、リンクトラフィックボリューム、及びノードへのプロトコルのマッピングを含む、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
（付記１４）  前記使用される少なくとも１つのプロトコルについての前記情報は、前記プロトコルのうちの何れかがセキュリティホールを有するか、及びそのプロトコルがどれだけ長く存在していたか、を反映する第１のプロトコルに関する第１の危険スコアと、第２のプロトコルに関する第２の危険スコアと、前記第１の危険スコア及び前記第２の危険スコアの和であるトータル危険スコアとを計算することを含む、付記１３に記載の非一時的なコンピュータ読み取り可能媒体。
（付記１５）  前記少なくとも１つの配備は、第１の配備及び第２の配備であり、前記メトリックを計算することは、前記第１の配備に関する第１のメトリックと前記第２の配備に関する第２のメトリックとを計算することを有する、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
（付記１６）  前記処理は更に、基準配備を受け取ることと、第１の配備を受け取ることと、前記第１の配備を前記基準配備に基づいて正規化することとを有する、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
（付記１７）  前記処理は更に、アプリケーションプログラミングインタフェース（ＡＰＩ）を用いて前記少なくとも１つの配備の静的解析を実行することを有する、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
（付記１８）  前記処理は更に、前記少なくとも１つの配備における前記少なくとも１つのポートにおけるネットワークトラフィックを収集することを有する、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
（付記１９）  前記処理は更に、トラフィックがどれだけ長く特定のリンクで通信されているかを決定することを有し、前記メトリックは、リンクトラフィックの総量、各リンクの平均及び最大、全てのリンクトラフィックボリュームの第１の和、並びに全てのボリュームの比の第２の和のうちの少なくとも１つを含む、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
（付記２０）  前記処理は更に、関係ないデータを構文解析してフィルタリングすることを有する、付記１２に記載の非一時的なコンピュータ読み取り可能媒体。
【図１Ａ】
0006536285.tif 000002
【図１Ｂ】
0006536285.tif 000003
【図２】
0006536285.tif 000004
【図３Ａ】
0006536285.tif 000005
【図３Ｂ】
0006536285.tif 000006
【図３Ｃ】
0006536285.tif 000007
【図４】
0006536285.tif 000008
【図５】
0006536285.tif 000009
【図６】
0006536285.tif 000010