(57)【要約】【課題】  ソフトウェアの脆弱性を判断するためのコンピューティング・デバイス、非一時的コンピュータ可読ストレージ媒体、及び方法を提供する。【解決手段】  ソフトウェアの脆弱性を判断する方法及びシステムである。ライブラリをダウンロードし、データベース内に格納する。各ライブラリについて、フィーチャのセットを抽出し、データベースのライブラリ・インデックス・テーブル内に格納する。各ライブラリについて、該ライブラリがセキュリティ問題をもたらすかどうかを判断し、それに従って、ライブラリ・インデックス・テーブルにおいてにフラグを立てる。アプリケーションをダウンロードし、データベース内に格納する。各アプリケーションについて、フィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。各アプリケーションについて、アプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、ライブラリ・インデックス・テーブル内のどのライブラリがアプリケーションと関連付けられるかを識別する。各アプリケーションについて、アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。【選択図】      図８
2019525287.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・デバイスであって、
プロセッサと、
ネットワーク上での通信を可能にするように前記プロセッサに結合されたネットワーク・インターフェースと、
前記プロセッサに結合された、コンテンツ及びプログラミングのためのストレージ・デバイスと、
前記ストレージ・デバイス内に格納された脆弱性エンジン・ソフトウェアであって、前記プロセッサによる前記ソフトウェアの実行は、
前記ネットワーク上で第１の１つ又は複数の記憶場所からライブラリをダウンロードすることと、
前記ライブラリをデータベース内に格納することと、
各ライブラリについて、前記ライブラリのフィーチャのセットを抽出し、前記ライブラリの前記フィーチャのセットを前記データベースのライブラリ・インデックス・テーブル内に格納することと、
各ライブラリについて、前記ライブラリがセキュリティ問題をもたらすかどうかを判断し、前記ライブラリ・インデックス・テーブル内のセキュリティ問題をもたらす各ライブラリにフラグを立てることと、
前記ネットワーク上で第２の１つ又は複数の記憶場所からアプリケーションをダウンロードすることと、
前記アプリケーションを前記データベース内に格納することと、
各アプリケーションについて、前記アプリケーションのフィーチャのセットを抽出し、前記アプリケーションの前記フィーチャのセットを前記データベースのアプリケーション・インデックス・テーブル内に格納することと、
各アプリケーションについて、前記アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記アプリケーションと関連付けられるかを識別することと、
各アプリケーションについて、前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
を含む動作を実行するように、前記コンピューティング・デバイスを構成する、脆弱性エンジン・ソフトウェアと、
を含む、コンピューティング・デバイス。
【請求項２】
前記脆弱性エンジン・ソフトウェアの実行は、
各アプリケーションについて、
アプリケーションと関連付けられた前記１つ又は複数のライブラリの少なくとも１つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を、（ｉ）セキュリティ問題があるようにフラグが立てられた前記１つ又は複数のライブラリの前記少なくとも１つを用いる前記アプリケーションを有するユーザ・デバイス（ＵＤ）、及び（ｉｉ）前記アプリケーションの権限のある代表者の少なくとも一方に送ることと、
を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項１に記載のコンピューティング・デバイス。
【請求項３】
前記通知は、前記ＵＤ上の前記アプリケーションをディスエーブルにするように構成される、請求項２に記載のコンピューティング・デバイス。
【請求項４】
前記脆弱性エンジン・ソフトウェアの実行は、
前記ネットワーク上でユーザ・デバイス（ＵＤ）から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証することであって、前記要求は前記ターゲット・アプリケーションの識別子を含む、受け取ることと、
前記ターゲット・アプリケーションが前記脆弱性参照テーブル内に含まれないと判断すると、
（ｉ）前記ＵＤ及び（ｉｉ）アプリケーション・ストアの少なくとも一方から前記ターゲット・アプリケーションを要求することと、
前記ターゲット・アプリケーションを受け取ると、
前記ターゲット・アプリケーションを前記データベース内に格納することと、
前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
前記ターゲット・アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記ターゲット・アプリケーションと関連付けられるかを識別することと、
前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項１に記載のコンピューティング・デバイス。
【請求項５】
前記脆弱性エンジン・ソフトウェアの実行は、
前記ターゲット・アプリケーションと関連付けられたライブラリに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を前記ＵＤに送ること、
を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項４に記載のコンピューティング・デバイス。
【請求項６】
前記ターゲット・アプリケーションの前記セキュリティを検証するための前記要求は、アプリケーション開発者の前記ＵＤから受け取られ、前記ターゲット・アプリケーションは、新しいアプリケーションである、請求項４に記載のコンピューティング・デバイス。
【請求項７】
前記要求は、前記ターゲット・アプリケーションのファクシミリを含む、請求項４に記載のコンピューティング・デバイス。
【請求項８】
前記ターゲット・アプリケーションの前記識別子は、前記ターゲット・アプリケーションの名前及びそのバージョンを含む、請求項４に記載のコンピューティング・デバイス。
【請求項９】
前記脆弱性エンジン・ソフトウェアの実行は、
前記１つ又は複数のライブラリの少なくとも１つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を前記ライブラリの権限のある代表者に送ること、
を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項１に記載のコンピューティング・デバイス。
【請求項１０】
各アプリケーションから抽出された前記フィーチャのセットは、
前記アプリケーションにおいて使用されるとき、難読化を残存するライブラリのフィーチャと、
前記アプリケーションのバージョンと、
のうちの少なくとも１つを含む、請求項１に記載のコンピューティング・デバイス。
【請求項１１】
各ライブラリから抽出される前記フィーチャのセットは、アプリケーションにおいて使用されるとき、難読化を残存する固有のフィーチャを含む、請求項１に記載のコンピューティング・デバイス。
【請求項１２】
実行されるとき、コンピュータ・デバイスに、ソフトウェアの脆弱性を判断する方法を実行させるコンピュータ可読命令を有するコンピュータ可読プログラム・コードを有形に具体化する非一時的コンピュータ可読ストレージ媒体であって、前記方法は、
ネットワーク上で第１の１つ又は複数の記憶場所からライブラリをダウンロードすることと、
前記ライブラリをデータベース内に格納することと、
各ライブラリについて、前記ライブラリのフィーチャのセットを抽出し、前記ライブラリの前記フィーチャのセットを前記データベースのライブラリ・インデックス・テーブル内に格納することと、
各ライブラリについて、前記ライブラリがセキュリティ問題をもたらすかどうかを判断し、前記ライブラリ・インデックス・テーブル内のセキュリティ問題をもたらす各ライブラリにフラグを立てることと、
前記ネットワーク上で第２の１つ又は複数の記憶場所からアプリケーションをダウンロードすることと、
前記アプリケーションをデータベース内に格納することと、
各アプリケーションについて、前記アプリケーションのフィーチャのセットを抽出し、前記アプリケーションの前記フィーチャのセットを前記データベースのアプリケーション・インデックス・テーブル内に格納することと、
各アプリケーションについて、前記アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、前記ライブラリ・インデックス・テーブル内のどのライブラリが前記アプリケーションと関連付けられるかを識別することと、
各アプリケーションについて、前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
を含む、非一時的コンピュータ可読ストレージ媒体。
【請求項１３】
前記方法は、
各アプリケーションについて、アプリケーションと関連付けられた前記１つ又は複数のライブラリの少なくとも１つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を、セキュリティ問題があるようにフラグが立てられた前記少なくとも１又は複数のライブラリを用いる前記アプリケーションを有するユーザ・デバイス（ＵＤ）に送ることをさらに含む、請求項１２に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１４】
前記通知は、前記ＵＤ上の前記アプリケーションをディスエーブルにするように構成される、請求項１３に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１５】
前記方法は、
前記ネットワーク上でユーザ・デバイス（ＵＤ）から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証することであって、前記要求は前記ターゲット・アプリケーションの識別子を含む、受け取ることと、
前記ターゲット・アプリケーションが前記脆弱性参照テーブル内に含まれないと判断すると、
（ｉ）前記ＵＤ及び（ｉｉ）アプリケーション・ストアの少なくとも一方から前記ターゲット・アプリケーションを要求することと、
前記ターゲット・アプリケーションを受け取ると、
前記ターゲット・アプリケーションを前記データベース内に格納することと、
前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
前記ターゲット・アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記ターゲット・アプリケーションと関連付けられるかを識別することと、
前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
をさらに含む、請求項１２に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１６】
前記方法は、
前記ターゲット・アプリケーションと関連付けられたライブラリに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を前記ＵＤに送ることをさらに含む、請求項１５に記載の非一時的コンピュータ可読ストレージ媒体。
【請求項１７】
ソフトウェアの脆弱性を判断する方法であって、前記方法は、
ネットワーク上で第１の１つ又は複数の記憶場所からライブラリをダウンロードすることと、
前記ライブラリをデータベースに格納することと、
各ライブラリについて、前記ライブラリのフィーチャのセットを抽出し、前記ライブラリの前記フィーチャのセットを前記データベースのライブラリ・インデックス・テーブル内に格納することと、
各ライブラリについて、前記ライブラリがセキュリティ問題をもたらすかどうかを判断し、セキュリティ問題をもたらす各ライブラリにフラグを立てることと、
前記ネットワーク上で第２の１つ又は複数の記憶場所からアプリケーションをダウンロードすることと、
各アプリケーションについて、前記アプリケーションのフィーチャのセットを抽出し、前記アプリケーションの前記フィーチャのセットを前記データベースのアプリケーション・インデックス・テーブル内に格納することと、
各アプリケーションについて、前記アプリケーションの前記フィーチャのセットをライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、前記ライブラリ・インテックス・テーブル内のどのライブラリが前記アプリケーションと関連付けられるかを識別することと、
各アプリケーションについて、前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
を含む、方法。
【請求項１８】
各アプリケーションについて、アプリケーションと関連付けられた前記１つ又は複数のライブラリの少なくとも１つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を、セキュリティ問題があるようにフラグが立てられた前記少なくとも１又は複数のライブラリを用いる前記アプリケーションを有するユーザ・デバイス（ＵＤ）に送ることをさらに含む、請求項１７に記載の方法。
【請求項１９】
前記通知は、前記ＵＤ上の前記アプリケーションをディスエーブルにするように構成される、請求項１８に記載の方法。
【請求項２０】
前記ネットワーク上でユーザ・デバイス（ＵＤ）から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証することであって、前記要求は前記ターゲット・アプリケーションの識別子を含む、受け取ることと、
前記ターゲット・アプリケーションが前記脆弱性参照テーブル内に含まれないと判断すると、
（ｉ）前記ＵＤ及び（ｉｉ）アプリケーション・ストアの少なくとも一方から前記ターゲット・アプリケーションを要求することと、
前記ターゲット・アプリケーションを受け取ると、
前記ターゲット・アプリケーションを前記データベース内に格納することと、
前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
前記ターゲット・アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記ターゲット・アプリケーションと関連付けられるかを識別することと、
前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
をさらに含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、セキュリティ・ツールに関し、より具体的には、ソフトウェア・ライブラリを用いるアプリケーションの脆弱性の検出に関する。
【背景技術】
【０００２】
一般的に「アプリ（ａｐｐ）」と呼ばれるコンパクトな機能特化型の（feature specific）アプリケーションが、本明細書ではまとめてユーザ・デバイス（ＵＤ）と呼ぶ、スマートフォン、タブレット、テレビジョン及び他のデバイスを含む幅広いコンピューティング・デバイスでは、当たり前のものになっている。異なるプラットフォーム上の利用可能なアプリケーションの数が増え続けるに伴って、コンピューティング・デバイス上に格納されるときに、それらのアプリケーションが重大なセキュリティ・リスクを示すことがある。幾つかのアプリケーション・プラットフォームのオープンな性質を考慮すると、アプリケーションは、多種多様なソースによってもたらされる場合があり、脆弱性に関して厳密に試験することができない。
【０００３】
１つの潜在的な脆弱性のソースは、ソフトウェア・ライブラリ、オープン・ソース、又は他のものによる。Ｊａｖａのような任意の所定のプログラミング・プラットフォームによりサポートされる標準的なライブラリに加えて、プログラム開発者に利用可能な他の多くのプロプライエタリ（proprietary）及びオープン・ソース・ライブラリがある。開発時間を縮め、フィーチャ及び共通インターフェースの可用性を高めるために、これらのライブラリの使用は魅力的である。しかしながら、全てのライブラリが安全であるというわけではない。実際、ライブラリは広く配布され得るので、ハッカー及び／又はマルウェア（malware）による、容易にアクセス可能な攻撃源になり得る。悪意のあるプログラマが、悪用方法を知っているライブラリを意図的に配布させることができる。幾つかのシナリオにおいて、プログラマが、不注意に、既知の脆弱性を有するライブラリを使用することがある。アプリケーション・プログラムにおいてそうしたライブラリが使用されるとき、ライブラリは、アプリケーション・プログラムに静的にリンクされることが多い。従って、ライブラリが、ユーザ・デバイスに配布される実行可能なパッケージにコンパイルされ、潜在的な脆弱性を他のＵＤに永存させることがある。ひとたびこれらのライブラリが実行可能なソフトウェア・アプリケーションにコンパイルされると、ライブラリの実際のコードを難読化することができる。その際、アプリケーション開発者は、一般的に、自分達がどのライブラリを使用したかを識別する必要はない。プログラミング言語が人間可読コードでの配布をサポートする場合でさえ、アプリケーションは、記憶空間を節約する及び／又はリバース・エンジニアリングを防止するために、難読化されることが多く、それにより、あらゆる統合されたライブラリの検出が困難になる。従って、アプリケーションをダウンロードし、使用するエンドユーザは、そのＵＤ上で使用しているアプリケーション内にセキュリティ問題（security concern）を有するライブラリが含まれていることを認識できない。本開示が記述しているのは、これらの考慮事項及び他のものに関する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソフトウェアの脆弱性を判断するためのコンピューティング・デバイス、非一時的コンピュータ可読ストレージ媒体、及び方法を提供する。
【課題を解決するための手段】
【０００５】
種々の例示的な実施形態によると、ソフトウェアの脆弱性を判断するためのコンピューティング・デバイス、非一時的コンピュータ可読ストレージ媒体、及び方法が提供される。ライブラリをダウンロードし、データベース内に格納する。各ライブラリについて、フィーチャのセットを抽出し、データベースのライブラリ・インデックス・テーブル内に格納する。各ライブラリについて、該ライブラリがセキュリティ問題をもたらすかどうかを判断し、それに従って、ライブラリ・インデックス・テーブル内にフラグが立てられる。アプリケーションをダウンロードし、データベース内に格納する。各アプリケーションについて、フィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。各アプリケーションについて、アプリケーション・インデックス・テーブルのアプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較して、ライブラリ・インデックス・テーブル内のどのライブラリがアプリケーションと関連付けられるかを識別する。各アプリケーションについて、アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。
【０００６】
１つの例示的な実施形態によると、ネットワーク上で、ユーザ・デバイス（ＵＤ）から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証する。ターゲット・アプリケーションが脆弱性参照テーブル内に含まれないと判断すると、ＵＤ及び／又はアプリケーション・ストアから、ターゲット・アプリケーションを要求する。ターゲット・アプリケーションを受け取ると、ターゲット・アプリケーションは、データベース内に格納される。ターゲット・アプリケーションのフィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。ターゲット・アプリケーションのフィーチャのセットをライブラリ・インデックス・テーブル内の各々のフィーチャのセットと比較し、どのライブラリがターゲット・アプリケーションと関連付けられるかを識別する。ターゲット・アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。
【０００７】
１つの例示的な実施形態によると、ターゲット・アプリケーションと関連付けられたライブラリに、セキュリティ問題があるようにフラグが立てられたと判断すると、セキュリティ問題の通知をＵＤに送る。
【０００８】
図は、例示的な実施形態のものである。これらの図面は、全ての実施形態を示すものではない。これらに加えて又は代わりに、他の実施形態を用いることもできる。スペースを節約するため、又はより効率的な説明のために、明らか又は不必要であり得る詳細は省略されていることがある。付加的なコンポーネント又はステップを有して、及び／又は示されるコンポーネント又はステップの全てを用いずに、幾つかの実施形態を実施することができる。異なる図面において同じ参照符号が現れる場合、それは同じ又は同様のコンポーネント又はステップを指す。
【図面の簡単な説明】
【０００９】
【図１】ソフトウェア・アプリケーション脆弱性判断システムを実装するための例示的なアーキテクチャを示す。
【図２】例示的な実施形態に従った、ライブラリのダウンロードに用いることができるシステムのブロック図を示す。
【図３】例示的な実施形態に従った、ライブラリのダウンロードの抽出段階を示すブロック図である。
【図４】例示的な実施形態に従った、アプリケーション・ダウンロード段階を示すブロック図である。
【図５】例示的な実施形態に従った、ダウンロードされたアプリケーションの抽出段階を示すブロック図である。
【図６】例示的な実施形態に従った、照合段階を説明するブロック図である。
【図７】例示的なユーザ・デバイス（ＵＤ）の種々のコンポーネントを高レベルで示すブロック図を示す。
【図８】例示的な実施形態に従った、遠隔サーバを介するアプリケーション及び／又はライブラリの脆弱性を判断するための例示的なプロセスを提示する。
【図９】例示的な実施形態に従った、遠隔サーバを介するアプリケーション及び／又はライブラリの脆弱性を判断するための例示的なプロセスを提示する。
【図１０】コンピュータ・ハードウェア・プラットフォームの機能ブロック図の例証を提供する。
【発明を実施するための形態】
【００１０】
以下の詳細な説明において、関連する教示の完全な理解を与えるために、例として多数の特定の詳細が述べられる。しかしながら、本教示が、こうした詳細なしで実施できることが明らかである。他の例においては、本教示の態様を必要以上に不明瞭にしないように、周知の方法、手順、コンポーネント及び／又は回路は、詳細ではなく、比較的高水準で説明されている。
【００１１】
本開示は、ソフトウェア・ライブラリを用いるアプリケーションの脆弱性の検出に関する。ライブラリをダウンロードし、データベース内に格納する。各ライブラリについて、フィーチャのセットを抽出し、データベースのライブラリ・インデックス・テーブル内に格納する。各ライブラリについて、該ライブラリがセキュリティ問題をもたらすかどうかを判断し、それに従って、ライブラリ・インデックス・テーブル内にフラグが立てられる。アプリケーションをダウンロードし、データベース内に格納する。各アプリケーションについて、フィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。各アプリケーションについて、アプリケーション・インデックス・テーブルのアプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、ライブラリ・インデックス・テーブル内のどのライブラリがアプリケーションと関連付けられるかを識別する。各アプリケーションについて、アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。
【００１２】
ここで添付図面に示される例について詳細に参照し、以下に説明する。
【００１３】
例示的なアーキテクチャ
図１は、ソフトウェア脆弱性検出システムを実装するための例示的なアーキテクチャ１００を示す。アーキテクチャ１００は、ネットワーク１０６を含み、このネットワーク１０６は、種々のユーザ・デバイス１０２（１）乃至１０２（ｎ）が、互いに通信すること、並びに、１つ又は複数のソフトウェア・アプリケーション・ストア１１０、ライブラリ１１２、アプリケーション・データベース１１４、脆弱性発見サーバ（ＶＦＳ）１１６及び顧客関係管理（ＣＲＭ）サーバ１１８のような、ネットワーク１０６に接続された他のいずれかのコンポーネントと通信することを可能にする。
【００１４】
ネットワーク１０６は、制限なく、ローカル・エリア・ネットワーク（「ＬＡＮ」）、仮想プライベート・ネットワーク（「ＶＰＮ」）、セルラー・ネットワーク、インターネット、又はそれらの組み合わせとすることができる。例えば、ネットワーク１０６は、種々のアプリケーション・ストア、ライブラリ及びインターネットとの通信のような種々の付帯的サービスを提供する、イントラネットと呼ばれることもあるプライベート・ネットワークに通信可能に結合されたモバイル・ネットワークを含むことができる。本説明を容易にするために、ネットワーク１０６は、限定としてではなく単なる例として、幅広いモバイル通信サービス及び補足的なサービス又はフィーチャをその加入者顧客及び関連したモバイル・デバイス・ユーザに提供するために、キャリア又はサービス提供者により動作させることができるような、モバイル・ネットワークとして説明される。ネットワーク１０６は、ＶＦＳ１１６の脆弱性エンジン・ソフトウェア１０３に導かれるソフトウェア脆弱性サービスのユーザが、本明細書ではまとめてセキュリティ問題と呼ばれる、Ｂｏｔｎｅｔ、分散型サービス攻撃（distributed denial of service、ＤＤｏＳ）、マルウェア、ライセンスを受けていないライブラリのアプリケーションの使用等といった悪意のある活動（例えば、トラフィック）に対して、ＵＤのメモリ内に格納されるアプリケーションのいずれかが脆弱であるかどうかを判断することを可能にする。
【００１５】
後の説明のために、図には、ネットワーク１０６を介して種々のサービスを受け取ることができるデバイスの幾つかの例を表すように、幾つかのＵＤが見られる。今日、ＵＤは、一般的に、携帯型ハンドセット、スマートフォン、タブレット・コンピュータ、携帯情報端末（ＰＤＡ）及びスマート・ウォッチの形態をとるが、それらは、顧客及びビジネス用電子デバイスを含む他の形状因子で実装することもできる。
【００１６】
ＵＤ（例えば、１０２（１））は、そのメモリ内に格納された種々のアプリケーションを有することができ、本明細書ではアプリケーション・ストア１１０で表される種々のアプリケーション・ストアからの付加的なアプリケーションによりこれらのアプリケーションを補完することができる。アプリケーション・ストア１１０は、ネットワーク１０６上でアプリケーションを提供し、ＵＤへのその更新を行う。アプリケーション・ストア１１０はまた、ＶＦＳ１１６からの要求時に、所定の間隔で、及び／又は開発者により新しいアプリケーションがアプリケーション・ストア１１０に導入されたときに、そのアプリケーションのファクシミリをアプリ（ａｐｐ）／ライブラリ・データベース１１４に提供することもできる。幾つかのシナリオにおいて、アプリケーションは、セキュリティ問題をＵＤ（例えば、１０２（１））に提示することができ、本明細書で説明されるシステムにより、セキュリティ問題を識別する及び／又は非アクティブ化することができる。
【００１７】
ＵＤ（例えば、１０２（１））内に格納されたアプリケーションは、呼び出すことができ、及び／又はアーキテクチャ１００のライブラリ１１２に類似した１つ又は複数のライブラリを用いて作成されている可能性がある。本明細書で使用される場合、ライブラリは、アプリケーションにより呼び出された、又はＵＤ（例えば、１０２（１））内に格納することができるアプリケーションを開発するために使用された可能性がある不揮発性リソースの集まりである。例えば、こうしたライブラリは、構成データ、メッセージ・テンプレート、サブルーチン、ドキュメンテーション、ヘルプ・データ等を含むことができる。互いに接続を有することができない複数のアプリケーションにより使用できるように、ライブラリ・コードを編成することができるが、その特定のアプリケーション（ａｐｐ）内で使用されるように、アプリケーションの一部であるコードを編成することもできる。ライブラリ１１２の既知の場所（known location）は、中でも、Ｂｉｎｔｒａｙ、ＧｉｔＨｕｂ、Ａｐａｃｈｅ、Ｍａｖｅｎ等を含むことができる。
【００１８】
こうしたライブラリ１１２は、一般に、種々のアプリケーション（例えば、プログラム又はサブプログラム）により再利用されるように構成され、ユーザ及び／又は開発者は、内部詳細を、従って、ライブラリ１１２の脆弱性を知ることができない。プログラムがライブラリ１１２を呼び出すと、プログラムは、その挙動を生成する必要なく、そのライブラリ１１２内で実施される挙動を獲得する。これらのライブラリ１１２は、アプリケーション開発者が挙動を再現しなければならない負担を軽減するのを助けになるが、ライブラリ１１２がセキュリティ問題をＵＤにもたらすことがあり、このセキュリティ問題は、ＶＦＳ１１６より（例えば、脆弱性エンジン１０３を介して）識別され、ブロックされ得る。
【００１９】
ＵＤ上に格納されるソフトウェア・アプリケーション（例えば、アプリケーション・ストア１１０からの）は、１つ又は複数のライブラリ１１２と関連付けることができる。従って、アプリケーションは、特定のライブラリ内で用いられる固有の名前に対応する、統計学的にありそうもない文字列のようなフィーチャを含む。これらのフィーチャは、難読化を残存し（survive obfuscation）、コンパイル又は難読化したコードにおいても検出することができる。難読化を残存する付加的なコード・フィーチャも可能である。
【００２０】
アプリ／ライブラリ・データベース１１４は、本明細書ではアプリケーション・ストア１１０及びライブラリ１１２によって表される、既知のソースからのアプリケーション及びライブラリを格納するように構成される。既知のアプリケーション・ストアは、Ｇｏｏｇｌｅ  ａｐｐｓ、ｉＴｕｎｅｓ、Ａｍａｚｏｎアプリストア等を含むことができる。ライブラリの既知の場所の非網羅的なリストは、既述されている。アプリ／ライブラリ・データベース１１４は、ＶＦＳ１１６の脆弱性エンジン１０３のためのリソース・センタとして使用される。例えば、アプリ／ライブラリ・データベース１１４は、アプリケーションにおいて使用されるとき、各ライブラリについて、難読化を残存する固有のフィーチャ・セットを抽出するように、脆弱性エンジン１０３により使用することができる。各ライブラリについての固有のフィーチャ・セットは、ライブラリ・フィーチャのインデックス・テーブルを作成するために使用される。
【００２１】
同様に、データベース１１４内に格納された各アプリケーションについて、脆弱性エンジン１０３は、アプリケーションを開発するために使用された可能性があるライブラリに関連する、難読化を残存する第２のフィーチャ・セットを抽出することができる。これらの第２のフィーチャ・セットを用いて、アプリケーションのフィーチャのインデックス・テーブルを作成し、次に、そのインデックス・テーブルをライブラリ・フィーチャのインデックス・テーブルと相関させ、本アプリケーションを開発するために使用された可能性があるライブラリ（及びその変形）を判断する。従って、ライブラリ・フィーチャのインデックス・テーブル及びアプリケーション・フィーチャのインデックス・テーブルを用いて、制限なく、各アプリケーションについて、アプリケーションの名前、バージョン識別子、使用されるライブラリ及びそのバージョン、脆弱性フラグ（及びそのレベル）、アプリケーションのメタデータ等を含み得る脆弱性参照テーブルを作成することができる。
【００２２】
アプリ／ライブラリ・データベース１１４は、共通のプラットフォームの部分であるように例示として示されるが、１つの実施形態においては、アプリケーション・データベース及びライブラリ・データベースは、別個のデータベースとすることができる。他の実施形態において、アプリ／ライブラリ・データベースは、クラウドにおいてホストされる仮想マシン又はソフトウェア・コンテナの形態の仮想コンピューティング・デバイスを含むことができ、それにより、処理及び格納のための弾力性のあるアーキテクチャが提供される。アプリ／ライブラリ・データベース１１４は、セキュリティ・ソフトウェア会社、又は組織のコンソーシアム、及び／又はソフトウェア・セキュリティに関心のある個人により保持し、潜在的なセキュリティ・リスクを表す識別可能なソフトウェア・ライブラリのための最新のリソースを提供することができる。
【００２３】
ＶＦＳ１１６は、アプリケーション・セキュリティ・サービスを、ＵＤ（１０２（１）乃至１０２（ｎ））並びにアプリケーション開発者に提供するように構成される。そのために、ＶＦＳ１１６上で実行される脆弱性エンジン１０３は、ソフトウェア・ライブラリ１１２をダウンロードし、それらをアプリ／ライブラリ・データベース１１４内に格納するように動作可能である。各ライブラリについて、難読化を残存する固有のフィーチャのようなライブラリのフィーチャを識別する。難読化を残存するフィーチャのサブセットは、固有のパターン、指紋、又は識別可能なソフトウェア・ライブラリがターゲット・ソフトウェア・アプリケーション内に含まれていることを示すシグネチャを表すことができる。アプリ／ライブラリ・データベース内の各ライブラリを走査し、ＵＤ上で実行されるとき、各ライブラリがセキュリティ問題をもたらすかどうかを判断する。従って、各ライブラリについて、脆弱性エンジン１０３は、ライブラリのフィーチャを抽出し、ライブラリがセキュリティ問題をもたらすかどうかを判断する。種々の実施形態において、これらの結果は、アプリ／ライブラリ・データベース１１４のライブラリ・インデックス・テーブル及び／又はＶＦＳ１１６内に格納することができる。
【００２４】
さらに、脆弱性エンジン１０３は、既知のアプリケーション・ストア１１０からアプリケーションをダウンロードし、それらをアプリ／ライブラリ・データベース１１４内に格納するようにも動作可能である。アプリ／ライブラリ・データベース１１４内に格納される各アプリケーションについて、アプリケーションのフィーチャが識別され、アプリ／ライブラリ・データベース１１４のアプリケーション・インデックス・テーブル及び／又はＶＦＳ１１６内に格納される。次に、アプリケーション・インデックス・テーブルとライブラリ・インデックス・テーブルとの間で相関が行われ、ライブラリ及びアプリケーションの抽出されたフィーチャ間の共通性に基づいて、ライブラリのどれが（ある場合）、対応するアプリケーション内に使用されるかを判断する。ＶＦＳ１１６の脆弱性エンジン１０３の付加的な機能、並びにアーキテクチャ１００のＵＤ及びリソースとのその相互作用は、以下のセクションでより詳細に説明される。
【００２５】
１つの実施形態において、顧客関係マネージャ（ＣＲＭ）サーバ１１８は、そのアカウント・ホルダ（例えば、ソフトウェア脆弱性サービスの加入者）に、オンライン支払情報、加入変更、脆弱プログラム及びその代案の名前等といった、アカウント・ホルダのアカウントに関連した種々の情報へのオンライン・アクセスを提供する。１つの実施形態において、ＣＲＭサーバ１１８は、アカウントと関連したＵＤ上に格納される全てのプログラムの名前及びバージョンを含む。
【００２６】
図２は、ライブラリをダウンロードするのに使用することができるシステム２００の例示的なブロック図を示す。ＶＦＳ１１６の脆弱性エンジン１０３は、利用可能なライブラリをダウンロードするためにライブラリの既知の場所２０２と相互作用するように構成されたライブラリ・ダウンローダ２２０を含む。幾つかのライブラリは、制限なく、Ｂｉｎｔｒａｙ２０４、Ａｐａｃｈｅ  Ｍａｖｅｎ２０６、及びＪａｖａ  Ａｒｃｈｉｖｅ（ＪＡＲ）及び／又はソース・コードの形態の、他のオープン・ライブラリ・リポジトリを含むことができる。ライブラリはまた、会社１（２０８）及び会社２（２１０）により表される種々の開発者により提供することもできる。幾つかの実施形態において、開発者は、ライブラリ・ダウンローダ２２０を通じて、プロプライエタリ・ライブラリを、本明細書で説明されるソフトウェア・アプリケーション脆弱性判断システムに送り、ライブラリがセキュリティ問題をもたらさないことを確認することができる。
【００２７】
１つの実施形態において、利用可能なライブラリに関する脆弱性情報は、標準ベースの脆弱性管理データのリポジトリを提供する政府機関である、脆弱性情報データベース（National Vulnerability Database、ＮＶＤ）及び／又は国立標準技術研究所（National Institute of Standards and Technology、ＮＩＳＴ）２１４のようなコンソーシアム又はリポジトリにより提供される。例えば、ＮＶＤからのデータは、ライブラリ・ダウンロータブレーダ２２０によりダウンロードすることができる、セキュリティ・チェックリスト、セキュリティ関連ソフトウェアの弱点等を提供することができる。
【００２８】
各々のダウンロードされたライブリは、異なるバージョンを有し得る。例えば、ライブラリＡは、バージョン１（２３０（１））乃至３（２３０（３））を有し、ライブラリＢは、バージョン１（２３０（４））乃至Ｎ（２３０（Ｎ））を有し得る。これらのダウンロードされたライブラリ２３０（１）乃至２３０（Ｎ）は、最終的に、さらなる処理のために、アプリ／ライブラリ・データベース１１４内に格納することができる。
【００２９】
図３は、ダウンロードされたライブラリ１１２の抽出段階を示す例示的なブロック図である。そのために、ＶＦＳ１１６の脆弱性エンジン１０３は、ライブラリ２３０（１）乃至２３０（３）によって例として表されるような、アプリ／ライブラリ・データベース１１４にダウンロードされているライブラリ１１２のフィーチャを抽出するように構成されたフィーチャ抽出器モジュール３０２を含む。
【００３０】
脆弱性エンジン１０３（ＶＦＳ１１６における）のフィーチャ抽出器３０２は、一般に、オープン・ソース及び多くの他のライブラリのために利用可能なソース・コード又は非難読化コードを評価することによって、ターゲット・ライブラリ（例えば、Ｌｉｂａｖ１（２３０（１））を分析する。使用されるプログラミング言語と、共通のライブラリ１１２又は他のシステム・リソースと相互作用するために、そのソフトウェアがどのようにコンパイルされ、使用されるかという既知の特性とに基づいて、難読化を残存するフィーチャのセットを定めることができる。
【００３１】
例えば、Ｊａｖａプログラミング言語において、スーパークラスの名前、標準クラスのインスタンス、及び標準関数の呼び出しを、残存する難読化として識別することができる。さらに、ほぼ全ての言語において、プログラマは、関数、クラス、変数及び定数名及び／又は値のような文字列を含み、その一部は、実行可能コード内に固有の（又は少なくともあまり一般的でない）一貫した対応する文字列を作成する。この特性又はフィーチャ３０６のリストを、ライブラリ脆弱性エンジン１０３のフィーチャ抽出器３０２により使用して、対応する言語で書かれたライブラリのコードを分析し、かつ、そのライブラリに一意であるフィーチャのセット（例えば、ライブラリ・シグネチャ）を識別することができる。例えば、ライブラリＬｉｂａｖ１  ２３０（１）に関連した抽出されたフィーチャ３０６は、Ｌｉｂａｖ３  ２３０（３）の抽出されたフィーチャ３０８とは異なる。
【００３２】
１つの実施形態において、他の既知のライブラリ及びそのシグネチャのリポジトリに対する既知の統計分析を用いた個々のフィーチャ及びそれらの組み合わせの確率に基づき、ライブラリ・シグネチャを統計的に検証することができる。次に、ＶＦＳ１１６のライブラリ脆弱性エンジン１０３は、ライブラリ・インデックス・テーブル３２０の形のアプリ／ライブラリ・データベース１１４におけるさらなる処理のために、そのライブラリ・シグネチャを格納することができる。幾つかの実施形態において、アプリケーション内での使用を識別する際に付加的な有用性をもたらし得る階層型のフィーチャのサブセットを有するように、ライブラリ・シグネチャを作成することができる。例えば、オブジェクト指向型プログラミング言語において、ソフトウェア・アプリケーション内に含ませることができる、クラス又は関数のような各オブジェクトについての特定のシグネチャを生成することが望ましい場合がある。別の例において、幾つかのライブラリは、バージョン間に僅かなシグネチャの変化を有した、複数のバージョンの形で存在する。バージョンに関係なくライブラリを表すフィーチャ・セット、並びに、ライブラリの特定のバージョンに対応するシグネチャの変化を識別できるようにすることは有用であり得る。脆弱性が、ライブラリの１つのバージョンにおいて存在し、他のバージョンにおいて存在しない場合が多い。従って、ライブラリのバージョンは、ライブラリが含まれるアプリケーションのリスクにアクセスすることに関連し得る。各ライブラリ及びそのバージョンは、脆弱性リスク・スコアを含む。このスコアは、英文字数字（例えば、０乃至１０、Ａ乃至Ｆ）、記述（例えば、なし、低、中、及び高）、色ベース（例えば、赤色、緑色及び黄色）、又は他のいずれかの適切な評価尺度とすることができる。
【００３３】
図４は、アプリケーション段階のダウンロードを示す例示的なブロック図である。ＶＦＳ１１６の脆弱性エンジン１０３は、利用可能なアプリケーションをダウンロードするために、アプリケーションの既知の場所４０２と相互作用するように構成されたアプリケーション・ダウンローダ４２０を含む。１つの実施形態において、アプリケーション・ダウンローダ４２０は、図２のライブラリ・ダウンローダ２２０と同じモジュールである。種々の実施形態において、これらのアプリケーションは、モバイル機器又は非モバイル機器用とすることができる。一部のアプリケーションは、制限なく、Ｇｏｏｇｌｅ  Ａｎｄｒｏｉｄストア４０４、Ａｍａｚｏｎアプリケーション・ストア４０６及びアプリケーション用の他の既知の場所４０２を含むことができる。アプリケーションは、会社１（４０８）及び会社２（４１０）により表される種々の開発者により提供することもできる。幾つかの実施形態において、開発者は、アプリケーション・ダウンローダ４２０を通じて、プロプライエタリ・ライブラリを、本明細書で説明されるソフトウェア・アプリケーション脆弱性判断システムに送り、ライブラリがセキュリティ問題をもたらさないことを確認することができる。これらの提出は、脆弱性エンジン１０３により個人的に識別可能な情報（ＰＩＩ）を必要としないという点で、匿名であり得る。
【００３４】
各々のダウンロードされたアプリケーションは、異なるバージョンを有し得る。例えば、アプリケーションＡは、バージョン１（４３０（１））乃至３（４３０（３））を有し、アプリケーションＢは、バージョン１（４３０（４））乃至Ｎ（４３０（Ｎ））を有し得る。これらのダウンロードされたアプリケーション４３０（１）乃至４３０（Ｎ）は、最終的に、さらなる処理のためにアプリ／ライブラリ・データベース１１４内に格納することができる。
【００３５】
図５は、アプリケーション・ストア１１０からのダウンロードされたアプリケーション４３０（１）乃至４３０（３）の抽出段階を示す例示的なブロック図である。そのために、ＶＦＳ１１６の脆弱性エンジン１０３は、例としてアプリケーション４３０（１）乃至４３０（３）により表されるような、アプリ／ライブラリ・データベース１１４にダウンロードされているアプリケーションのフィーチャを抽出するように構成されたフィーチャ抽出器モジュール５０２を含む。１つの実施形態において、アプリケーションのために使用されるフィーチャ抽出器５０２は、ライブラリのために使用されるのと同じフィーチャ抽出器３０２である。
【００３６】
１つの実施形態において、ＶＦＳ１１６上で実行される脆弱性エンジン１０３のフィーチャ抽出器５０２は、ライブラリ・インデックス・テーブル３２０からのライブラリ・シグネチャを使用して、アプリ／ライブラリ・データベース１１４上のターゲット・ソフトウェア・アプリケーション（例えば、４３０（１））の難読化されたコードを検索する。フィーチャ抽出器５０２は、以前使用された所定のプログラミング言語についての同じフィーチャのセットを使用して、ライブラリ・インデックス・テーブル３２０についてのライブラリ・シグネチャを作成することができる。例えば、フィーチャ抽出器５０２は、関心ある各フィーチャに対応する文字列又はベクトルについてＪａｖａプログラミング言語で書かれたソフトウェア・アプリケーション（例えば、４３０（１））のバイトコードを走査することができる。一例において、フィーチャ抽出器５０２は、ライブラリ・インデックス・テーブル３２０内に見出される関心あるライブラリ・シグネチャ内に存在する各フィーチャについてのターゲット・ソフトウェア・アプリケーション（例えば、４３０（１））のコードを検索して、分析のために合致するフィーチャのプロファイルを生成することができる。
【００３７】
別の例において、難読化を残存する全てのフィーチャを求めて、ターゲット・ソフトウェア・アプリケーション（例えば、４３０（１））のコードを検索し、ターゲット・ソフトウェア・アプリケーション（例えば、４３０（１））についてのシグネチャを作成し、脆弱性エンジン１０３により、複数のライブラリ・シグネチャを、ターゲット・ソフトウェア・アプリケーション（例えば、４３０（１））のシグネチャと比較することができる。ブロック５０６及び５０８により示されるように、コード内のフィーチャの機能的グループ化に従って、コード検索を行い、結果を編成することができる。例えば、オブジェクト指向型ライブラリ内の各クラスに対応するフィーチャのセットを用いて、検索及び結果を編成することができ、クラス毎に脆弱性エンジン１０３により結果を分析することを可能にする。
【００３８】
図６は、ライブラリ・インデックス・テーブル３２０のフィーチャをアプリケーション・インデックス・テーブル５２０のフィーチャと相関させる照合段階を説明する例示的なブロック図である。そのために、ＶＦＳ１１６の脆弱性エンジン１０３は、各アプリケーションについてどのライブラリが存在するかを判断するように構成されたフィーチャ照合（match features）モジュール６０２を含む。結果は、脆弱性参照テーブル６０４内に格納することができる。種々の実施形態において、相関インデックス・テーブル６０４は、アプリ／ライブラリ・データベース１１４及び／又はＶＦＳ１１６内に格納することができる。
【００３９】
脆弱性エンジン１０３は、関心ある少なくとも１つのライブラリ・シグネチャ（例えば、ライブラリ・インデックス・テーブル３２０内のＬｉｂａ＿ｖ１、Ｌｉｂａｖ２等）と比較した、ターゲット・ソフトウェア・アプリケーション（例えば、アプリケーション・インデックス・テーブル５２０内のＡｐｐＡｖ１）内に見出されるフィーチャの統計的関連性の分析を提供する。任意の所定のライブラリは、ライブラリ全体を含むことなく、ターゲット・ソフトウェア・アプリケーション内に選択的に含められる、例えば特定のクラス又は関数についてのコードのサブセットを含むことができる。同様に、任意の所定のライブラリは、複数のバージョン、及び特定のバージョン数の識別を可能にし得るシグネチャの変化を有し得る。例えば、脆弱性エンジン１０３は、フィーチャ・カウント（すなわち、フィーチャ・セットにおけるフィーチャの発生数）及びフィーチャの一意性（すなわち、他の既知のライブラリにおいて、及び／又はライブラリの使用に関係なくその言語で書かれたアプリケーション・プログラムのサンプルにおいて、ランダムに現れるフィーチャの可能性の統計的定量化）の組み合わせを用いて、ライブラリ・シグネチャ内のフィーチャのセットと比較した、ターゲット・ソフトウェア・アプリケーションのコード内に見出されるフィーチャのセットと関連した信頼スコアを計算することができる。次に、ＶＦＳ１１６のライブラリ脆弱性エンジン１０３は、さらなる処理のために、そのアプリケーション・シグネチャを、アプリケーション・インデックス・テーブル５２０の形態のアプリ／ライブラリ・データベース１１４内に格納することができる。
【００４０】
種々の実施形態において、異なる検索及び比較アルゴリズムを用いて、ターゲット・アプリケーションのソフトウェア・コード（例えば、４３０（１））内に見出されるフィーチャのセットの関連性を判断することができる。１つの実施形態において、フィーチャのセットの統計的関連性は、信頼スコアで定量化される。例えば、ｔｅｒｍ  ｆｒｅｑｕｅｎｃｙ−ｉｎｖｅｒｓｅ  ｄｏｃｕｍｅｎｔ  ｆｒｅｑｕｅｎｃｙ（ｔｆ−ｉｄｆ）を用いて、信頼スコアを提供することができ、それにより、より大きいライブラリのセット、又は一般的なソフトウェア・コードにおけるその共通性と比較したアプリケーション・ソフトウェア・コード内のフィーチャの共通性に基づいて、見出されたフィーチャを信頼値に割り当てる。
【００４１】
例示的なユーザ・デバイス
図１の文脈で述べられるように、アーキテクチャ１００内のソフトウェア脆弱性判断システムは、幾つかのＵＤを含む。そのために、図７は、例示的なＵＤ７００の種々のコンポーネントを高レベルで示すブロック図を示す。説明のために、図は、無線コンピューティング・デバイスの形態のＵＤ７００を示す。
【００４２】
ＵＤ７００は、１つ又は複数のアンテナ７０２、セルラー、Ｗｉ−Ｆｉ通信、及び／又は有線通信用の送受信機７０４、ユーザ・インターフェース７０６、１つ又は複数のプロセッサ７０８、ハードウェア７１０、及びメモリ７１６を含むことができる。幾つかの実施形態において、アンテナ７０２は、無線信号を基地局に送るアップリンク・アンテナと、基地局から無線信号を受け取るダウンリンク・アンテナとを含むことができる。幾つかの他の実施形態においては、単一のアンテナが無線信号の送信及び受信の両方を行うことができる。Ｗｉ−Ｆｉ通信のために、同じ又は他のアンテナを使用することができる。これらの信号は、デジタル・データを送受信するように構成された、まとめてネットワーク・インターフェースと呼ばれることもある送受信機７０４により処理することができる。１つの実施形態において、ＵＤ７００は、アンテナ７０２を含まず、外部コンポーネントとの通信は、無線通信を介する。
【００４３】
１つの実施形態において、ＵＤ７００は、ユーザが、ＵＤ７００からの入力を提供し、出力を受け取ることを可能にするユーザ・インターフェース７０６を含む。例えば、ユーザ・インターフェース７０６は、ＶＦＳ１１６の脆弱性エンジン１０３からの通知を表示するために使用することができるデータ出力デバイス（例えば、視覚的表示装置、音声スピーカ、触覚デバイス等）を含むことができる。ユーザ・インターフェース７０６はまた、１つ又は複数のデータ入力デバイスを含むこともできる。データ入力デバイスは、これらに限定されるものではないが、キーパッド、キーボード、マウス・デバイス、タッチスクリーン、マイクロホン、音声認識パッケージ、及びいずれかの他の適切なデバイス又は他の電子／ソフトウェア選択インターフェースの１つ又は複数の組み合わせを含むことができる。例えば、データ入力デバイスを用いて、アプリケーション・ストア１１０からのアプリケーションの要求（又はその更新）を入力すること、又はＵＤ７００内に格納される１つ又は複数のアプリケーション７２０がセキュリティ問題をもたらすかどうかを判断するよう、脆弱性エンジン１０３に要求することができる。
【００４４】
ＵＤ７００は、１つ又は複数のプロセッサ７０８を含むことができ、このプロセッサ７０８は、シングルコア・プロセッサ、マルチコア・プロセッサ、複合命令セット・コンピューティング（ＣＩＳＣ）プロセッサ、又は別のタイプのプロセッサとすることができる。
【００４５】
ハードウェア７１０は、シングルコア又はマルチコア・プロセッサを含み得る電源及びデジタル信号プロセッサ（ＤＳＰ）を含むことができる。ハードウェア７１０はまた、周辺コンポーネントと相互作用する通信インターフェースを含む、高速通信インターフェースを管理するネットワーク・プロセッサを含むこともできる。ネットワーク・プロセッサ及び周辺コンポーネントは、スイッチング・ファブリックによりリンクされ得る。ハードウェア７１０は、ハードウェア復号器及び符号器、ネットワーク・インターフェース・コントローラ、及び／又はユニバーサル・シリアル・バス（ＵＳＢ）コントローラをさらに含むことができる。
【００４６】
メモリ７１６は、コンピュータ・ストレージ媒体のようなコンピュータ可読媒体を用いて実装することができる。ストレージ媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、又は他のデータのような情報のストレージのためのいずれかの方法又は技術で実装される、揮発性及び不揮発性、取り外し可能及び取り外し不能の媒体を含むことができる。コンピュータ・ストレージ媒体は、これらに限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）、高精細度ビデオ・ストレージ・ディスク若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・ディスク、又はコンピューティング・デバイスによりアクセスされる情報を格納するために使用することができる他のいずれかの伝送媒体を含む。
【００４７】
メモリ７１６は、ＵＤ７００のプロセッサ７０８及びコントローラにより実行可能又はアクセス可能な種々のソフトウェア・コンポーネント又はモジュールを格納することができる。メモリ７１６の種々のコンポーネントは、ソフトウェア７１８及びオペレーティング・システム７５０を含むことができる。ソフトウェア７１８は、アプリケーション・ストア１１０からダウンロードされた可能性がある及び／又はアプリケーション開発者により直接提供された種々のアプリケーション７２０を含むことができる。ソフトウェア７１８はまた、幾つかのモジュールを有する脆弱性アプリケーション７４０を含むこともできる。各モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム命令、オブジェクト、及び／又はデータ構造を含むことができる。
【００４８】
例えば、ＵＤ７００の脆弱性アプリケーション７４０は、どのアプリケーション及びそのバージョンがＵＤ７００上で利用可能かを判断し、それを脆弱性エンジン１０３に報告するように構成された報告モジュール７４２を含むことができる。種々の実施形態において、このような報告は、新しいアプリケーションがＵＤ７００に導入されたとき、ＵＤの操作者からの要求時、又はＶＦＳ１１６の脆弱性エンジン１０３からの要求時に、所定の間隔で定期的に行うことができる。
【００４９】
脆弱性アプリケーション７４０は、ＵＤ７００のメモリ７１６内に格納されたアプリケーションの１つ又は複数のがセキュリティ問題をもたらすかどうかに関する通知を脆弱性エンジン１０３から受け取るように構成された通知モジュール７４４を含むことができる。幾つかの実施形態において、非アクティブ化モジュール７４６が、脆弱性エンジン１０３により、セキュリティ問題をもたらすと考えられたアプリケーションの実行を防止することができる。
【００５０】
オペレーティング・システム７５０は、ＵＤ７００が種々のインターフェース（例えば、ユーザ制御、通信インターフェース、及び／又はメモリ入力／出力デバイス）を介してデータを受送信し、かつ、プロセッサ７０８を用いてデータを処理して、出力を生成するのを可能にするコンポーネントを含むことができる。オペレーティング・システム７５０は、出力を提示する（例えば、ＵＤ７００の電子ディスプレイ上にデータを表示する、データをメモリ７１６内に格納する、データを別の電子デバイスに伝送する等）提示コンポーネントを含むことができる。さらに、オペレーティング・システム７５０は、一般に、オペレーティング・システム７５０と関連した種々の付加的な機能を実行する他のコンポーネントを含むこともできる。
【００５１】
例示的なプロセス
アーキテクチャ１００、動作の異なる段階、及びＵＤ７００のコンポーネントの前述の概要において、ここで例示的なプロセスの高レベルの説明を検討することが有用であり得る。そのために、図８及び図９は、ＶＦＳ１１６のような遠隔サーバを介して、アプリケーション及び／又はライブラリの脆弱性を判断するための例示的なプロセス８００及び９００を提示する。プロセス８００は、一般的な動作段階を説明し、一方、プロセス９００は、プロセス８００のいずれかのブロックの後及び／又は間に実行することができる割り込み駆動（interrupt driven）態様を説明する。
【００５２】
プロセス８００及び９００は、ハードウェア、ソフトウェア、又はそれらの組み合わせで実施できる動作のシーケンスを表す論理フローチャートにおけるブロックの集まりとして示される。ソフトウェアの文脈において、ブロックは、１つ又は複数のプロセッサにより実行されるとき、列挙される動作を実行するコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むことができる。動作を説明する順序は、限定と見なすことを意図しておらず、任意の数の説明されるブロックを任意の順序で組み合わせること、及び／又はプロセスを実施するために並行して実行することができる。説明のため、プロセス８００及び９００は、図１のアーキテクチャ１００を参照して説明される。
【００５３】
ブロック８０２において、ＶＦＳ１１６の脆弱性エンジン１０３は、種々の既知の場所からライブラリ１１２をダウンロードする。こうしたライブラリのダウンロードは、所定の間隔で（例えば、１日に１回）、トリガ・イベント（例えば、既知の場所において新しいライブラリが利用可能である）時に、又は脆弱性エンジン１０３からの要求時に実行することができる。１つの実施形態において、ダウンロードされたライブラリは、例証として図１のアプリ／ライブラリ・データベース１１４と表されるデータベース内に格納される。
【００５４】
ブロック８０４において、ダウンロードされた各ライブラリについて、脆弱性エンジン１０３は、対応するライブラリのフィーチャのセットを抽出し、ライブラリのフィーチャのセットをライブラリ・データベース１１４のライブラリ・インデックス・テーブル内に格納する。１つの実施形態において、ライブラリのバージョンも抽出する。
【００５５】
ブロック８０６において、ダウンロードされた各ライブラリについて、ライブラリがセキュリティ問題をもたらすかどうかを判断する。例えば、ライブラリを使用し得るアプリケーションが、Ｂｏｔｎｅｔ、ＤＤｏＳ、マルウェア等のような悪意のある活動に対して脆弱である場合、セキュリティ問題が存在し得る。
【００５６】
ライブラリについてセキュリティ問題がある（すなわち、決定ブロック８０６における「はい（ＹＥＳ）」）と判断すると、プロセスは、ブロック８１０を続行し、そこで、セキュリティ脅威をもたらすライブラリにフラグを立てる。１つの実施形態において、ライブラリ警告通知が１つ又は複数の権限のある（authorized）管理者及び／又はセキュリティ問題と関連付けられたライブラリの提供者に送られる。ライブラリ警告通知は、ショート・メッセージ・サービス（ＳＭＳ）を用いた共通ショート・コード（ＣＳＣ）、マルチメディア・メッセージ・サービス（ＭＭＳ）、ｅメール、電話、ソーシャルメディア等のような、種々の方法で送ることができる。プロセスはブロック８１２を続行する。
【００５７】
ブロック８０６に戻ると、（それぞれ、各ライブラリについて）セキュリティ問題がないと判断すると（すなわち、決定ブロック８０６における「いいえ（ＮＯ）」）、プロセスはブロック８１２を続行する。
【００５８】
ブロック８１２において、ＶＦＳ１１６の脆弱性エンジン１０３は、ネットワーク１０６上で種々の既知の場所からアプリケーションをダウンロードする。ライブラリのダウンロードと同様に、アプリケーションのダウンロードは、所定の間隔で、トリガ・イベント（例えば、既知の場所において新しいライブラリが利用可能である）時に、脆弱性エンジン１０３からの要求時に、ＵＤからの要求時に（エンドユーザからのものであっても又はアプリケーションの開発者からのものであってもよい）など、実行することができる。
【００５９】
ブロック８１４において、各アプリケーションについて、アプリケーションのフィーチャのセットを抽出し、アプリケーション・データベースのアプリケーション・インデックス・テーブル内に格納する。１つの実施形態において、アプリケーションのバージョンを同様に抽出し、格納する。アプリケーション・データベースは、ライブラリ・データベース（例えば、図１にアプリ／ライブラリ・データベース１１４で表される）と同じであっても、又は別個のデータベースであってもよい。
【００６０】
ブロック８１６において、各アプリケーションについて、アプリケーション・インデックス・テーブル内のアプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、アプリケーションと関連付けられた１つ又は複数のライブラリを識別する。別の言い方をすると、どのライブラリをアプリケーションが使用した可能性があるかを判断する。その際、脆弱性参照テーブルが、各アプリケーションについて、それと関連したライブラリの名前を格納するデータベース（アプリ／ライブラリ・データベース１１４又は独立型データベースとすることができる）内にポピュレートされる。
【００６１】
ブロック８１８において、各アプリケーションについて、脆弱性エンジン１０３は、アプリケーションと関連した１つ又は複数のライブラリの少なくとも１つに、セキュリティ問題があるようにフラグが立てられているかどうかを判断する。例えば、アプリケーションは、Ｂｏｔｎｅｔ、ＤＤｏＳ、マルウェア等のような悪意のある活動に対して脆弱である１つ又は複数のライブラリを用いていることがある。１つの実施形態において、アプリケーションがライセンスを受けていないと判断される場合、アプリケーションは、セキュリティ問題を有すると考えられる。
【００６２】
アプリケーションがセキュリティ問題を有する（すなわち、ブロック８１８における「はい（ＹＥＳ）」）と判断すると、プロセスはブロック８２０を続行し、そこで、脆弱性エンジン１０３により、アプリケーション警告通知が生成される。種々の実施形態において、アプリケーション警告通知は、セキュリティ問題があるようにフラグが立てられたライブラリを含むように、識別されたアプリケーションを格納しているＵＤに送られる。代替的に又は付加的に、アプリケーション警告通知は、ここではまとめて権限のある代表者と呼ばれる、１又は複数の権限のある管理者、開発者、及び／又は本アプリケーションの提供者に送られる。例えば、脆弱なアプリケーションを保持する企業のアプリケーション・ストアに通知することができる。１つの実施形態において、通知は、問題の(offending)アプリケーションをディスエーブルにするための、ＵＤへの命令を含み、その結果、問題のアプリケーションをＵＤ上で起動することはできない。
【００６３】
種々の実施形態において、プロセス８００は、トリガ・イベント（例えば、ＶＦＳ１１６の脆弱性エンジン・ソフトウェア１０３からの要求）時に開始すること若しくは繰り返すことができ、又は所定の間隔で実行することができる。そのため、アプリケーションがセキュリティ問題を有していないとの判断時（すなわち、決定ブロック８１８における「いいえ」のとき）、又はブロック８２０における通知の送信の完了時、プロセスはブロック８０２に戻り、そこで、プロセスを繰り返すために、既知の場所から利用可能な新しいライブラリがダウンロードされる。
【００６４】
ここで本出願の例示的な割り込み駆動態様を説明する、図９のプロセス９００を参照する。ブロック９０２において、ターゲット・アプリケーションのセキュリティを検証するために、ＶＦＳ１１６の脆弱性エンジン・ソフトウェア１０３により、要求をネットワーク１０６上でＵＤから受け取る。種々のシナリオにおいて、ＵＤは、ターゲット・アプリケーションがセキュリティ問題をもたらし得るいかなるライブラリも含まないことを確認したいと望むアプリケーションのエンドユーザ又はアプリケーション開発者に関連し得る。
【００６５】
ブロック９０４において、ターゲット・アプリケーションのフィーチャのセットを抽出し、アプリ／ライブラリ・データベース１１４とすることができるアプリケーション・データベースのアプリケーション・インデックス・テーブル内に格納する。１つの実施形態においては、アプリケーションのバージョンを抽出し、同じく格納する。
【００６６】
ブロック９０６において、ターゲット・アプリケーションのフィーチャのセット（すなわち、アプリケーション・インデックス・テーブル内に格納された）を、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、ターゲット・アプリケーションと関連付けられた１つ又は複数のライブラリを識別する。別の言い方をすると、ターゲット・アプリケーション内で、どのライブラリが使用された可能性があるかを判断する。相関関係の結果は、アプリ／ライブラリ・データベース１１４の脆弱性参照テーブル内に格納される。
【００６７】
ブロック９０８において、脆弱性エンジン１０３は、ターゲット・アプリケーションと関連付けられた１つ又は複数のライブラリの少なくとも１つに、セキュリティ問題があるようにフラグが立てられているかどうかを判断する。１つの実施形態において、アプリケーションがライセンスを受けていないと判断される場合、アプリケーションは、セキュリティ問題を有すると考えられる。
【００６８】
ターゲット・アプリケーションがセキュリティ問題を有する（すなわち、決定ブロック９０８における「はい」）と判断すると、プロセスは、ブロック９１０を続行し、そこで、脆弱性エンジン１０３により、アプリケーション警告通知が生成される。種々の実施形態において、このアプリケーション警告通知は、ターゲット・アプリケーション（セキュリティ問題があるようにフラグが立てられたライブラリを含むように識別された）を格納している要求側ＵＤに送られる。代替的に又は付加的に、アプリケーション警告通知は、権限のある代表者に送られる。１つの実施形態において、通知は、ターゲット・アプリケーションをディスエーブルにするための命令をＵＤに送り、その結果、ターゲット・アプリケーションをＵＤ上で起動することはできない。
【００６９】
本明細書で説明される概念によって、ＵＤがよりセキュア保護される一方で、ＵＤは。消費電力がより少なく、より高速に動作する。それは、ＵＤ上で実行されるアンチ・ウィルス・ソフトウェアとは異なり、アンチ・ウィルス・ソフトウェアのためのメモリ・ストレージ空間のような貴重なリソース、疑わしいプログラムを評価するための処理電力、及びアンチ・ウィルス・ソフトウェアを実行するための電力を必要としないためである。むしろ、脆弱性アプリケーションの判断は、脆弱性エンジン１０３を有するＶＦＳ１１６の遠隔システムにより与えられ、それにより、ＵＤ上に格納されるアプリケーションの脆弱性を識別するＵＤの負担が実質的に軽減される。さらに、幾つかのシナリオにおいて、セキュリティ問題をもたらすライブラリと関連付けられるように識別されたアプリケーションが起動されることが防止される。
【００７０】
例示的なコンピュータ・プラットフォーム
上述のように、図１に示されるように、図８及び図９のプロセスに従って、無線又は有線通信を介してデータベース通信のために接続されている１つ又は複数のコンピューティング・デバイスを用いて、アプリケーションの脆弱性の検出に関連する機能を実行することができる。ユーザ・デバイス７００の形態の例示的なコンピューティング・デバイスが、図７に関して上述されている。図１０は、コンピュータ・ハードウェア・プラットフォームの機能ブロック図の例証を提供する。特に、図１０は、ＶＦＳ１１６、アプリ／ライブラリ・データベース１１４、又は図１のＣＲＭサーバ１１８のような、サーバを実装するために一般的に用い得るような、ネットワーク又はホスト・コンピュータ・プラットフォーム５００を示す。
【００７１】
コンピュータ・プラットフォーム１０００は、システム・バス１００２に接続される、中央処理ユニット（ＣＰＵ）１００４、ランダム・アクセス・メモリ（ＲＡＭ）及び／又は読み出し専用メモリ（ＲＯＭ）１００６、ハード・ディスク・ドライブ（ＨＤＤ）１００８、キーボード１０１０、マウス１０１２及びディスプレイ１０１４を含むことができる。
【００７２】
１つの実施形態において、ＨＤＤ１００８は、本明細書で説明される方法で、脆弱性エンジン１０４０のような、種々のプロセスを実行できるプログラムを格納することを含む機能を有する。脆弱性エンジン１０４０は、異なる機能を実行するように構成された種々のモジュールを有することができる。
【００７３】
例えば、ライブラリ及び／又はアプリケーションを、既知の場所から、ＵＤから、及び／又はアプリケーション開発者（ＵＤからのものとすることができる）ダウンロードするように構成されたダウンロード・モジュール１０４２が存在し得る。ライブラリ及び／又はアプリケーションのフィーチャ及びバージョンを抽出するように構成された抽出モジュール１０４４が存在し得る。潜在的な脆弱性についてライブラリを走査するように構成された走査モジュール１０４６が存在し得る。アプリケーションをその対応するライブラリと照合するように構成された照合モジュール１０４８が存在し得る。セキュリティ問題をもたらすように識別されたライブラリ、及び／又はそうしたライブラリと関連付けられたアプリケーションに関するセキュリティ問題を１又は複数の受信者に警告するように動作可能な警告モジュール１０５０も存在し得る。
【００７４】
一例において、Ｗｅｂサーバのようなシステムを動作させるために、Ａｐａｃｈｅ（商標）のようなプログラムを格納することができる。１つの実施形態において、ＨＤＤ１００８は、ＪＶＭを実現するためのＪａｖａ（商標）Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔプログラム用のものなど、１つ又は複数のライブラリ・ソフトウェア・モジュールを含む実行アプリケーションを格納することができる。
【００７５】
結論
本教示の種々の実施形態の説明は、説明を目的として提示されているが、網羅的であること、又は開示された実施形態に限定することを意図したものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、若しくは市場で見出される技術に優る技術的改善を最も良く説明するために、又は当業者が本明細書に開示される実施形態を理解するのを可能にするために、選択された。
【００７６】
上記は、最良の状態及び／又はその他の例であると考えれるものを説明しているが、種々の変更をそこになし得ること、本明細書で開示される主題を種々の形態及び例において実装できること、及び本明細書にその一部のみが説明される多数の用途に教示を適用できることが理解される。以下の特許請求の範囲により、本教示の真の範囲内に入るありとあらゆる用途、修正及び変形を特許請求することが意図される。
【００７７】
本明細書で述べられているコンポーネント、ステップ、特徴、オブジェクト、利益及び利点は、単に例証的なものに過ぎない。そのいずれも、又はそれに関連するいずれの説明も、保護の範囲を制限することを意図しない。種々の利点が本明細書で説明されるが、必ずしも全ての実施形態が全ての利点を含むものではないことが理解されるであろう。特に断りのない限り、以下の特許請求の範囲内に含む、全ての測定値、値、格付け、位置、大きさ、サイズ及び本明細書で述べられる他の仕様は、近似値であり、正確なものではないことが理解される。それらは、それが関連する及びそれらが関係する当技術分野において通例である機能と一貫した妥当な範囲を有するように意図される。
【００７８】
他の多数の実施形態も考えられる。これらは、より少ない、付加的な、及び／又は異なるコンポーネント、ステップ、特徴、オブジェクト、利益及び利点を有する実施形態を含む。これらはまた、コンポーネント及び／又はステップが、異なるように配置及び／又は順序付けられる実施形態も含む。
【００７９】
本開示の態様は、本開示の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００８０】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そこに命令が格納されたコンピュータ可読ストレージ媒体が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含むようにすることもできる。
【００８１】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するようにすることもできる。
【００８２】
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、及びブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【００８３】
上記は、例示的な実施形態と併せて説明されているが、「例示的な」という用語は、最良であること又は最適であることではなく、単に１つの例として意味することが理解される。直前に述べられたものを除き、述べられたもの又は示されたものは、それが特許請求の範囲内に記載されるか又は記載されないかに関係なく、任意のコンポーネント、ステップ、特徴、オブジェクト、利益、利点、又は同等物の、公衆への専用化を引き起こすように意図するものではなく又は解釈すべきではない。
【００８４】
本明細書で使用される用語及び表現は、本明細書で他に特定の意味が述べられる場合を除いて、その対応するそれぞれの調査及び研究領域に関して、こうした用語及び表現に従うような通常の意味を有することが理解されるであろう。第１及び第２等のような関係用語は、必ずしも、いずれかの実際のこうした関係又はこうしたエンティティ若しくはアクション間の順序を必要とする又は意味することなく、単に、１つのエンティティ若しくはアクションを互いに区別するために使用することができる。「含む（comprise）」、「含んでいる（comprising）」という用語又はそのいずれかの他の変形は、非網羅的な含有をカバーすることを意図しており、要素のリストを含むプロセス、方法、物品又は装置は、それらの要素のみを含むのではなく、こうしたプロセス、方法、物品又は装置に明白に列挙されていない又はこれらに固有の他の要素を含むことができる。「１つ（a）」又は「１つ（an）」で始まる要素は、さらなる制約なしに、要素を含むプロセス、方法、物品又は装置内の付加的な同一の要素の存在を排除する。
【００８５】
開示の要約は、読み手が技術的開示の性質を迅速に確認するのを可能にするために与えられる。要約は、請求項の範囲又は意味を解釈又は制限するために用いられるのではないことを理解して提出される。さらに、上記の詳細な説明において、開示を合理化するために、種々の実施形態において、種々の特徴が互いにグループ化されることが分かる。この開示の方法は、特許請求される実施形態が、各請求項中で明白に述べられるよりも多くの特徴を有する意図を示すように解釈されるものではない。むしろ、以下の請求項が示すように、本主題は、決して単一の開示される実施形態の全ての特徴内にあるのではない。従って、以下の特許請求の範囲は、これにより詳細な説明の中に組み入れられ、各請求項は、それ自体で別個に請求される主題を表す。
【符号の説明】
【００８６】
１００：アーキテクチャ
１０２（１）〜１０２（ｎ）、７００：ユーザ・デバイス（ＵＤ）
１０３、１０４０：脆弱性エンジン
１０６：ネットワーク
１１０：アプリケーション・ストア
１１２：ライブラリ
１１４：アプリケーション（ａｐｐ）／ライブラリ・データベース
１１６：脆弱性発見サーバ（ＶＦＳ）
１１８：顧客関係管理（ＣＲＭ）サーバ
２００：システム
２０２、４０２：既知の場所
２２０：ライブラリ・ダウンローダ
２３０（１）〜２３０（Ｎ）：ライブラリ・バージョン
３０２、５０２：フィーチャ抽出器モジュール
３２０：ライブラリ・インデックス・テーブル
４２０：アプリケーション・ダウンローダ
４３０（１）〜４３０（Ｎ）、７２０：アプリケーション
５２０：アプリケーション・インデックス・テーブル
６０２：フィーチャ照合モジュール
６０４：相関インデックス・テーブル
７０６：ユーザ・インターフェース
７０８：プロセッサ
７１０：ハードウェア
７１６：メモリ
７１８：ソフトウェア
７４０：脆弱性アプリケーション
７４２：報告モジュール
７４４：通知モジュール
７４６：非アクティブ化モジュール
７５０：オペレーティング・システム
８００、９００：プロセス
１０００：コンピュータ・プラットフォーム
１００２：システム・バス
１００４：中央処理ユニット（ＣＰＵ）
１００８：ハード・ディスク・ドライブ（ＨＤＤ）
１０４２：ダウンロード・モジュール
１０４４：抽出モジュール
１０４６：走査モジュール
１０４８：照合モジュール
１０５０：警告モジュール
【図１】
2019525287.tif 000003
【図２】
2019525287.tif 000004
【図３】
2019525287.tif 000005
【図４】
2019525287.tif 000006
【図５】
2019525287.tif 000007
【図６】
2019525287.tif 000008
【図７】
2019525287.tif 000009
【図８】
2019525287.tif 000010
【図９】
2019525287.tif 000011
【図１０】
2019525287.tif 000012
【国際調査報告】
2019525287.tif 000013
2019525287.tif 000014