JP6916818B2 - 脆弱なアプリケーションの検出 - Google Patents

脆弱なアプリケーションの検出 Download PDF

Info

Publication number
JP6916818B2
JP6916818B2 JP2018562213A JP2018562213A JP6916818B2 JP 6916818 B2 JP6916818 B2 JP 6916818B2 JP 2018562213 A JP2018562213 A JP 2018562213A JP 2018562213 A JP2018562213 A JP 2018562213A JP 6916818 B2 JP6916818 B2 JP 6916818B2
Authority
JP
Japan
Prior art keywords
application
library
features
database
target application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018562213A
Other languages
English (en)
Other versions
JP2019525287A (ja
Inventor
トリップ、オマー
バセット、サルマン、アブドゥル
スッター、フィリップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019525287A publication Critical patent/JP2019525287A/ja
Application granted granted Critical
Publication of JP6916818B2 publication Critical patent/JP6916818B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Description

本開示は、一般に、セキュリティ・ツールに関し、より具体的には、ソフトウェア・ライブラリを用いるアプリケーションの脆弱性の検出に関する。
一般的に「アプリ(app)」と呼ばれるコンパクトな機能特化型の(feature specific)アプリケーションが、本明細書ではまとめてユーザ・デバイス(UD)と呼ぶ、スマートフォン、タブレット、テレビジョン及び他のデバイスを含む幅広いコンピューティング・デバイスでは、当たり前のものになっている。異なるプラットフォーム上の利用可能なアプリケーションの数が増え続けるに伴って、コンピューティング・デバイス上に格納されるときに、それらのアプリケーションが重大なセキュリティ・リスクを示すことがある。幾つかのアプリケーション・プラットフォームのオープンな性質を考慮すると、アプリケーションは、多種多様なソースによってもたらされる場合があり、脆弱性に関して厳密に試験することができない。
1つの潜在的な脆弱性のソースは、ソフトウェア・ライブラリ、オープン・ソース、又は他のものによる。Javaのような任意の所定のプログラミング・プラットフォームによりサポートされる標準的なライブラリに加えて、プログラム開発者に利用可能な他の多くのプロプライエタリ(proprietary)及びオープン・ソース・ライブラリがある。開発時間を縮め、フィーチャ及び共通インターフェースの可用性を高めるために、これらのライブラリの使用は魅力的である。しかしながら、全てのライブラリが安全であるというわけではない。実際、ライブラリは広く配布され得るので、ハッカー及び/又はマルウェア(malware)による、容易にアクセス可能な攻撃源になり得る。悪意のあるプログラマが、悪用方法を知っているライブラリを意図的に配布させることができる。幾つかのシナリオにおいて、プログラマが、不注意に、既知の脆弱性を有するライブラリを使用することがある。アプリケーション・プログラムにおいてそうしたライブラリが使用されるとき、ライブラリは、アプリケーション・プログラムに静的にリンクされることが多い。従って、ライブラリが、ユーザ・デバイスに配布される実行可能なパッケージにコンパイルされ、潜在的な脆弱性を他のUDに永存させることがある。ひとたびこれらのライブラリが実行可能なソフトウェア・アプリケーションにコンパイルされると、ライブラリの実際のコードを難読化することができる。その際、アプリケーション開発者は、一般的に、自分達がどのライブラリを使用したかを識別する必要はない。プログラミング言語が人間可読コードでの配布をサポートする場合でさえ、アプリケーションは、記憶空間を節約する及び/又はリバース・エンジニアリングを防止するために、難読化されることが多く、それにより、あらゆる統合されたライブラリの検出が困難になる。従って、アプリケーションをダウンロードし、使用するエンドユーザは、そのUD上で使用しているアプリケーション内にセキュリティ問題(security concern)を有するライブラリが含まれていることを認識できない。本開示が記述しているのは、これらの考慮事項及び他のものに関する。
ソフトウェアの脆弱性を判断するためのコンピューティング・デバイス、非一時的コンピュータ可読ストレージ媒体、及び方法を提供する。
種々の例示的な実施形態によると、ソフトウェアの脆弱性を判断するためのコンピューティング・デバイス、非一時的コンピュータ可読ストレージ媒体、及び方法が提供される。ライブラリをダウンロードし、データベース内に格納する。各ライブラリについて、フィーチャのセットを抽出し、データベースのライブラリ・インデックス・テーブル内に格納する。各ライブラリについて、該ライブラリがセキュリティ問題をもたらすかどうかを判断し、それに従って、ライブラリ・インデックス・テーブル内にフラグが立てられる。アプリケーションをダウンロードし、データベース内に格納する。各アプリケーションについて、フィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。各アプリケーションについて、アプリケーション・インデックス・テーブルのアプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較して、ライブラリ・インデックス・テーブル内のどのライブラリがアプリケーションと関連付けられるかを識別する。各アプリケーションについて、アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。
1つの例示的な実施形態によると、ネットワーク上で、ユーザ・デバイス(UD)から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証する。ターゲット・アプリケーションが脆弱性参照テーブル内に含まれないと判断すると、UD及び/又はアプリケーション・ストアから、ターゲット・アプリケーションを要求する。ターゲット・アプリケーションを受け取ると、ターゲット・アプリケーションは、データベース内に格納される。ターゲット・アプリケーションのフィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。ターゲット・アプリケーションのフィーチャのセットをライブラリ・インデックス・テーブル内の各々のフィーチャのセットと比較し、どのライブラリがターゲット・アプリケーションと関連付けられるかを識別する。ターゲット・アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。
1つの例示的な実施形態によると、ターゲット・アプリケーションと関連付けられたライブラリに、セキュリティ問題があるようにフラグが立てられたと判断すると、セキュリティ問題の通知をUDに送る。
図は、例示的な実施形態のものである。これらの図面は、全ての実施形態を示すものではない。これらに加えて又は代わりに、他の実施形態を用いることもできる。スペースを節約するため、又はより効率的な説明のために、明らか又は不必要であり得る詳細は省略されていることがある。付加的なコンポーネント又はステップを有して、及び/又は示されるコンポーネント又はステップの全てを用いずに、幾つかの実施形態を実施することができる。異なる図面において同じ参照符号が現れる場合、それは同じ又は同様のコンポーネント又はステップを指す。
ソフトウェア・アプリケーション脆弱性判断システムを実装するための例示的なアーキテクチャを示す。 例示的な実施形態に従った、ライブラリのダウンロードに用いることができるシステムのブロック図を示す。 例示的な実施形態に従った、ライブラリのダウンロードの抽出段階を示すブロック図である。 例示的な実施形態に従った、アプリケーション・ダウンロード段階を示すブロック図である。 例示的な実施形態に従った、ダウンロードされたアプリケーションの抽出段階を示すブロック図である。 例示的な実施形態に従った、照合段階を説明するブロック図である。 例示的なユーザ・デバイス(UD)の種々のコンポーネントを高レベルで示すブロック図を示す。 例示的な実施形態に従った、遠隔サーバを介するアプリケーション及び/又はライブラリの脆弱性を判断するための例示的なプロセスを提示する。 例示的な実施形態に従った、遠隔サーバを介するアプリケーション及び/又はライブラリの脆弱性を判断するための例示的なプロセスを提示する。 コンピュータ・ハードウェア・プラットフォームの機能ブロック図の例証を提供する。
以下の詳細な説明において、関連する教示の完全な理解を与えるために、例として多数の特定の詳細が述べられる。しかしながら、本教示が、こうした詳細なしで実施できることが明らかである。他の例においては、本教示の態様を必要以上に不明瞭にしないように、周知の方法、手順、コンポーネント及び/又は回路は、詳細ではなく、比較的高水準で説明されている。
本開示は、ソフトウェア・ライブラリを用いるアプリケーションの脆弱性の検出に関する。ライブラリをダウンロードし、データベース内に格納する。各ライブラリについて、フィーチャのセットを抽出し、データベースのライブラリ・インデックス・テーブル内に格納する。各ライブラリについて、該ライブラリがセキュリティ問題をもたらすかどうかを判断し、それに従って、ライブラリ・インデックス・テーブル内にフラグが立てられる。アプリケーションをダウンロードし、データベース内に格納する。各アプリケーションについて、フィーチャのセットを抽出し、データベースのアプリケーション・インデックス・テーブル内に格納する。各アプリケーションについて、アプリケーション・インデックス・テーブルのアプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、ライブラリ・インデックス・テーブル内のどのライブラリがアプリケーションと関連付けられるかを識別する。各アプリケーションについて、アプリケーションの名前及び関連付けられたライブラリの名前をデータベースの脆弱性参照テーブル内に格納する。
ここで添付図面に示される例について詳細に参照し、以下に説明する。
例示的なアーキテクチャ
図1は、ソフトウェア脆弱性検出システムを実装するための例示的なアーキテクチャ100を示す。アーキテクチャ100は、ネットワーク106を含み、このネットワーク106は、種々のユーザ・デバイス102(1)乃至102(n)が、互いに通信すること、並びに、1つ又は複数のソフトウェア・アプリケーション・ストア110、ライブラリ112、アプリケーション・データベース114、脆弱性発見サーバ(VFS)116及び顧客関係管理(CRM)サーバ118のような、ネットワーク106に接続された他のいずれかのコンポーネントと通信することを可能にする。
ネットワーク106は、制限なく、ローカル・エリア・ネットワーク(「LAN」)、仮想プライベート・ネットワーク(「VPN」)、セルラー・ネットワーク、インターネット、又はそれらの組み合わせとすることができる。例えば、ネットワーク106は、種々のアプリケーション・ストア、ライブラリ及びインターネットとの通信のような種々の付帯的サービスを提供する、イントラネットと呼ばれることもあるプライベート・ネットワークに通信可能に結合されたモバイル・ネットワークを含むことができる。本説明を容易にするために、ネットワーク106は、限定としてではなく単なる例として、幅広いモバイル通信サービス及び補足的なサービス又はフィーチャをその加入者顧客及び関連したモバイル・デバイス・ユーザに提供するために、キャリア又はサービス提供者により動作させることができるような、モバイル・ネットワークとして説明される。ネットワーク106は、VFS116の脆弱性エンジン・ソフトウェア103に導かれるソフトウェア脆弱性サービスのユーザが、本明細書ではまとめてセキュリティ問題と呼ばれる、Botnet、分散型サービス攻撃(distributed denial of service、DDoS)、マルウェア、ライセンスを受けていないライブラリのアプリケーションの使用等といった悪意のある活動(例えば、トラフィック)に対して、UDのメモリ内に格納されるアプリケーションのいずれかが脆弱であるかどうかを判断することを可能にする。
後の説明のために、図には、ネットワーク106を介して種々のサービスを受け取ることができるデバイスの幾つかの例を表すように、幾つかのUDが見られる。今日、UDは、一般的に、携帯型ハンドセット、スマートフォン、タブレット・コンピュータ、携帯情報端末(PDA)及びスマート・ウォッチの形態をとるが、それらは、顧客及びビジネス用電子デバイスを含む他の形状因子で実装することもできる。
UD(例えば、102(1))は、そのメモリ内に格納された種々のアプリケーションを有することができ、本明細書ではアプリケーション・ストア110で表される種々のアプリケーション・ストアからの付加的なアプリケーションによりこれらのアプリケーションを補完することができる。アプリケーション・ストア110は、ネットワーク106上でアプリケーションを提供し、UDへのその更新を行う。アプリケーション・ストア110はまた、VFS116からの要求時に、所定の間隔で、及び/又は開発者により新しいアプリケーションがアプリケーション・ストア110に導入されたときに、ファクシミリの機能を有するアプリケーションをアプリ/ライブラリ・データベース114に提供することもできる。幾つかのシナリオにおいて、アプリケーションは、セキュリティ問題をUD(例えば、102(1))に提示することができ、本明細書で説明されるシステムにより、セキュリティ問題を識別する及び/又は非アクティブ化することができる。
UD(例えば、102(1))内に格納されたアプリケーションは、呼び出すことができ、及び/又はアーキテクチャ100のライブラリ112に類似した1つ又は複数のライブラリを用いて作成されている可能性がある。本明細書で使用される場合、ライブラリは、アプリケーションにより呼び出された、又はUD(例えば、102(1))内に格納することができるアプリケーションを開発するために使用された可能性がある不揮発性リソースの集まりである。例えば、こうしたライブラリは、構成データ、メッセージ・テンプレート、サブルーチン、ドキュメンテーション、ヘルプ・データ等を含むことができる。互いに接続を有することができない複数のアプリケーションにより使用できるように、ライブラリ・コードを編成することができるが、その特定のアプリケーション(app)内で使用されるように、アプリケーションの一部であるコードを編成することもできる。ライブラリ112の既知の場所(known location)は、中でも、Bintray、GitHub、Apache、Maven等を含むことができる。
こうしたライブラリ112は、一般に、種々のアプリケーション(例えば、プログラム又はサブプログラム)により再利用されるように構成され、ユーザ及び/又は開発者は、内部詳細を、従って、ライブラリ112の脆弱性を知ることができない。プログラムがライブラリ112を呼び出すと、プログラムは、その挙動を生成する必要なく、そのライブラリ112内で実施される挙動を獲得する。これらのライブラリ112は、アプリケーション開発者が挙動を再現しなければならない負担を軽減するのを助けになるが、ライブラリ112がセキュリティ問題をUDにもたらすことがあり、このセキュリティ問題は、VFS116より(例えば、脆弱性エンジン103を介して)識別され、ブロックされ得る。
UD上に格納されるソフトウェア・アプリケーション(例えば、アプリケーション・ストア110からの)は、1つ又は複数のライブラリ112と関連付けることができる。従って、アプリケーションは、特定のライブラリ内で用いられる固有の名前に対応する、統計学的にありそうもない文字列のようなフィーチャを含む。これらのフィーチャは、難読化しても生き残り(survive obfuscation)、コンパイル又は難読化したコードにおいても検出することができる。難読化しても生き残る付加的なコード・フィーチャも可能である。以下、難読化しても生き残るフィーチャを、難読化を残存するフィーチャとも記載する。
アプリ/ライブラリ・データベース114は、本明細書ではアプリケーション・ストア110及びライブラリ112によって表される、既知のソースからのアプリケーション及びライブラリを格納するように構成される。既知のアプリケーション・ストアは、Google apps、iTunes、Amazonアプリストア等を含むことができる。ライブラリの既知の場所の非網羅的なリストは、既述されている。アプリ/ライブラリ・データベース114は、VFS116の脆弱性エンジン103のためのリソース・センタとして使用される。例えば、アプリ/ライブラリ・データベース114は、アプリケーションにおいて使用されるとき、各ライブラリについて、難読化を残存する固有のフィーチャ・セットを抽出するように、脆弱性エンジン103により使用することができる。各ライブラリについての固有のフィーチャ・セットは、ライブラリ・フィーチャのインデックス・テーブルを作成するために使用される。
同様に、データベース114内に格納された各アプリケーションについて、脆弱性エンジン103は、アプリケーションを開発するために使用された可能性があるライブラリに関連する、難読化を残存する第2のフィーチャ・セットを抽出することができる。これらの第2のフィーチャ・セットを用いて、アプリケーションのフィーチャのインデックス・テーブルを作成し、次に、そのインデックス・テーブルをライブラリ・フィーチャのインデックス・テーブルと相関させ、本アプリケーションを開発するために使用された可能性があるライブラリ(及びその変形)を判断する。従って、ライブラリ・フィーチャのインデックス・テーブル及びアプリケーション・フィーチャのインデックス・テーブルを用いて、制限なく、各アプリケーションについて、アプリケーションの名前、バージョン識別子、使用されるライブラリ及びそのバージョン、脆弱性フラグ(及びそのレベル)、アプリケーションのメタデータ等を含み得る脆弱性参照テーブルを作成することができる。
アプリ/ライブラリ・データベース114は、共通のプラットフォームの部分であるように例示として示されるが、1つの実施形態においては、アプリケーション・データベース及びライブラリ・データベースは、別個のデータベースとすることができる。他の実施形態において、アプリ/ライブラリ・データベースは、クラウドにおいてホストされる仮想マシン又はソフトウェア・コンテナの形態の仮想コンピューティング・デバイスを含むことができ、それにより、処理及び格納のための弾力性のあるアーキテクチャが提供される。アプリ/ライブラリ・データベース114は、セキュリティ・ソフトウェア会社、又は組織のコンソーシアム、及び/又はソフトウェア・セキュリティに関心のある個人により保持し、潜在的なセキュリティ・リスクを表す識別可能なソフトウェア・ライブラリのための最新のリソースを提供することができる。
VFS116は、アプリケーション・セキュリティ・サービスを、UD(102(1)乃至102(n))並びにアプリケーション開発者に提供するように構成される。そのために、VFS116上で実行される脆弱性エンジン103は、ソフトウェア・ライブラリ112をダウンロードし、それらをアプリ/ライブラリ・データベース114内に格納するように動作可能である。各ライブラリについて、難読化を残存する固有のフィーチャのようなライブラリのフィーチャを識別する。難読化を残存するフィーチャのサブセットは、固有のパターン、指紋、又は識別可能なソフトウェア・ライブラリがターゲット・ソフトウェア・アプリケーション内に含まれていることを示すシグネチャを表すことができる。アプリ/ライブラリ・データベース内の各ライブラリを走査し、UD上で実行されるとき、各ライブラリがセキュリティ問題をもたらすかどうかを判断する。従って、各ライブラリについて、脆弱性エンジン103は、ライブラリのフィーチャを抽出し、ライブラリがセキュリティ問題をもたらすかどうかを判断する。種々の実施形態において、これらの結果は、アプリ/ライブラリ・データベース114のライブラリ・インデックス・テーブル及び/又はVFS116内に格納することができる。
さらに、脆弱性エンジン103は、既知のアプリケーション・ストア110からアプリケーションをダウンロードし、それらをアプリ/ライブラリ・データベース114内に格納するようにも動作可能である。アプリ/ライブラリ・データベース114内に格納される各アプリケーションについて、アプリケーションのフィーチャが識別され、アプリ/ライブラリ・データベース114のアプリケーション・インデックス・テーブル及び/又はVFS116内に格納される。次に、アプリケーション・インデックス・テーブルとライブラリ・インデックス・テーブルとの間で相関が行われ、ライブラリ及びアプリケーションの抽出されたフィーチャ間の共通性に基づいて、ライブラリのどれが(ある場合)、対応するアプリケーション内に使用されるかを判断する。VFS116の脆弱性エンジン103の付加的な機能、並びにアーキテクチャ100のUD及びリソースとのその相互作用は、以下のセクションでより詳細に説明される。
1つの実施形態において、顧客関係マネージャ(CRM)サーバ118は、そのアカウント・ホルダ(例えば、ソフトウェア脆弱性サービスの加入者)に、オンライン支払情報、加入変更、脆弱プログラム及びその代案の名前等といった、アカウント・ホルダのアカウントに関連した種々の情報へのオンライン・アクセスを提供する。1つの実施形態において、CRMサーバ118は、アカウントと関連したUD上に格納される全てのプログラムの名前及びバージョンを含む。
図2は、ライブラリをダウンロードするのに使用することができるシステム200の例示的なブロック図を示す。VFS116の脆弱性エンジン103は、利用可能なライブラリをダウンロードするためにライブラリの既知の場所202と相互作用するように構成されたライブラリ・ダウンローダ220を含む。幾つかのライブラリは、制限なく、Bintray204、Apache Maven206、及びJava Archive(JAR)及び/又はソース・コードの形態の、他のオープン・ライブラリ・リポジトリを含むことができる。ライブラリはまた、会社1(208)及び会社2(210)により表される種々の開発者により提供することもできる。幾つかの実施形態において、開発者は、ライブラリ・ダウンローダ220を通じて、プロプライエタリ・ライブラリを、本明細書で説明されるソフトウェア・アプリケーション脆弱性判断システムに送り、ライブラリがセキュリティ問題をもたらさないことを確認することができる。
1つの実施形態において、利用可能なライブラリに関する脆弱性情報は、標準ベースの脆弱性管理データのリポジトリを提供する政府機関である、脆弱性情報データベース(National Vulnerability Database、NVD)及び/又は国立標準技術研究所(National Institute of Standards and Technology、NIST)214のようなコンソーシアム又はリポジトリにより提供される。例えば、NVDからのデータは、ライブラリ・ダウンロータブレーダ220によりダウンロードすることができる、セキュリティ・チェックリスト、セキュリティ関連ソフトウェアの弱点等を提供することができる。
各々のダウンロードされたライブリは、異なるバージョンを有し得る。例えば、ライブラリAは、バージョン1(230(1))乃至3(230(3))を有し、ライブラリBは、バージョン1(230(4))乃至N(230(N))を有し得る。これらのダウンロードされたライブラリ230(1)乃至230(N)は、最終的に、さらなる処理のために、アプリ/ライブラリ・データベース114内に格納することができる。
図3は、ダウンロードされたライブラリ112の抽出段階を示す例示的なブロック図である。そのために、VFS116の脆弱性エンジン103は、ライブラリ230(1)乃至230(3)によって例として表されるような、アプリ/ライブラリ・データベース114にダウンロードされているライブラリ112のフィーチャを抽出するように構成されたフィーチャ抽出器モジュール302を含む。
脆弱性エンジン103(VFS116における)のフィーチャ抽出器302は、一般に、オープン・ソース及び多くの他のライブラリのために利用可能なソース・コード又は非難読化コードを評価することによって、ターゲット・ライブラリ(例えば、Libav1(230(1))を分析する。使用されるプログラミング言語と、共通のライブラリ112又は他のシステム・リソースと相互作用するために、そのソフトウェアがどのようにコンパイルされ、使用されるかという既知の特性とに基づいて、難読化を残存するフィーチャのセットを定めることができる。
例えば、Javaプログラミング言語において、スーパークラスの名前、標準クラスのインスタンス、及び標準関数の呼び出しを、残存する難読化として識別することができる。さらに、ほぼ全ての言語において、プログラマは、関数、クラス、変数及び定数名及び/又は値のような文字列を含み、その一部は、実行可能コード内に固有の(又は少なくともあまり一般的でない)一貫した対応する文字列を作成する。この特性又はフィーチャ306のリストを、ライブラリ脆弱性エンジン103のフィーチャ抽出器302により使用して、対応する言語で書かれたライブラリのコードを分析し、かつ、そのライブラリに一意であるフィーチャのセット(例えば、ライブラリ・シグネチャ)を識別することができる。例えば、ライブラリLibav1 230(1)に関連した抽出されたフィーチャ306は、Libav3 230(3)の抽出されたフィーチャ308とは異なる。
1つの実施形態において、他の既知のライブラリ及びそのシグネチャのリポジトリに対する既知の統計分析を用いた個々のフィーチャ及びそれらの組み合わせの確率に基づき、ライブラリ・シグネチャを統計的に検証することができる。次に、VFS116のライブラリ脆弱性エンジン103は、ライブラリ・インデックス・テーブル320の形のアプリ/ライブラリ・データベース114におけるさらなる処理のために、そのライブラリ・シグネチャを格納することができる。幾つかの実施形態において、アプリケーション内での使用を識別する際に付加的な有用性をもたらし得る階層型のフィーチャのサブセットを有するように、ライブラリ・シグネチャを作成することができる。例えば、オブジェクト指向型プログラミング言語において、ソフトウェア・アプリケーション内に含ませることができる、クラス又は関数のような各オブジェクトについての特定のシグネチャを生成することが望ましい場合がある。別の例において、幾つかのライブラリは、バージョン間に僅かなシグネチャの変化を有した、複数のバージョンの形で存在する。バージョンに関係なくライブラリを表すフィーチャ・セット、並びに、ライブラリの特定のバージョンに対応するシグネチャの変化を識別できるようにすることは有用であり得る。脆弱性が、ライブラリの1つのバージョンにおいて存在し、他のバージョンにおいて存在しない場合が多い。従って、ライブラリのバージョンは、ライブラリが含まれるアプリケーションのリスクにアクセスすることに関連し得る。各ライブラリ及びそのバージョンは、脆弱性リスク・スコアを含む。このスコアは、英文字数字(例えば、0乃至10、A乃至F)、記述(例えば、なし、低、中、及び高)、色ベース(例えば、赤色、緑色及び黄色)、又は他のいずれかの適切な評価尺度とすることができる。
図4は、アプリケーション段階のダウンロードを示す例示的なブロック図である。VFS116の脆弱性エンジン103は、利用可能なアプリケーションをダウンロードするために、アプリケーションの既知の場所402と相互作用するように構成されたアプリケーション・ダウンローダ420を含む。1つの実施形態において、アプリケーション・ダウンローダ420は、図2のライブラリ・ダウンローダ220と同じモジュールである。種々の実施形態において、これらのアプリケーションは、モバイル機器又は非モバイル機器用とすることができる。一部のアプリケーションは、制限なく、Google Androidストア404、Amazonアプリケーション・ストア406及びアプリケーション用の他の既知の場所402を含むことができる。アプリケーションは、会社1(408)及び会社2(410)により表される種々の開発者により提供することもできる。幾つかの実施形態において、開発者は、アプリケーション・ダウンローダ420を通じて、プロプライエタリ・ライブラリを、本明細書で説明されるソフトウェア・アプリケーション脆弱性判断システムに送り、ライブラリがセキュリティ問題をもたらさないことを確認することができる。これらの提出は、脆弱性エンジン103により個人的に識別可能な情報(PII)を必要としないという点で、匿名であり得る。
各々のダウンロードされたアプリケーションは、異なるバージョンを有し得る。例えば、アプリケーションAは、バージョン1(430(1))乃至3(430(3))を有し、アプリケーションBは、バージョン1(430(4))乃至N(430(N))を有し得る。これらのダウンロードされたアプリケーション430(1)乃至430(N)は、最終的に、さらなる処理のためにアプリ/ライブラリ・データベース114内に格納することができる。
図5は、アプリケーション・ストア110からのダウンロードされたアプリケーション430(1)乃至430(3)の抽出段階を示す例示的なブロック図である。そのために、VFS116の脆弱性エンジン103は、例としてアプリケーション430(1)乃至430(3)により表されるような、アプリ/ライブラリ・データベース114にダウンロードされているアプリケーションのフィーチャを抽出するように構成されたフィーチャ抽出器モジュール502を含む。1つの実施形態において、アプリケーションのために使用されるフィーチャ抽出器502は、ライブラリのために使用されるのと同じフィーチャ抽出器302である。
1つの実施形態において、VFS116上で実行される脆弱性エンジン103のフィーチャ抽出器502は、ライブラリ・インデックス・テーブル320からのライブラリ・シグネチャを使用して、アプリ/ライブラリ・データベース114上のターゲット・ソフトウェア・アプリケーション(例えば、430(1))の難読化されたコードを検索する。フィーチャ抽出器502は、以前使用された所定のプログラミング言語についての同じフィーチャのセットを使用して、ライブラリ・インデックス・テーブル320についてのライブラリ・シグネチャを作成することができる。例えば、フィーチャ抽出器502は、関心ある各フィーチャに対応する文字列又はベクトルについてJavaプログラミング言語で書かれたソフトウェア・アプリケーション(例えば、430(1))のバイトコードを走査することができる。一例において、フィーチャ抽出器502は、ライブラリ・インデックス・テーブル320内に見出される関心あるライブラリ・シグネチャ内に存在する各フィーチャについてのターゲット・ソフトウェア・アプリケーション(例えば、430(1))のコードを検索して、分析のために合致するフィーチャのプロファイルを生成することができる。
別の例において、難読化を残存する全てのフィーチャを求めて、ターゲット・ソフトウェア・アプリケーション(例えば、430(1))のコードを検索し、ターゲット・ソフトウェア・アプリケーション(例えば、430(1))についてのシグネチャを作成し、脆弱性エンジン103により、複数のライブラリ・シグネチャを、ターゲット・ソフトウェア・アプリケーション(例えば、430(1))のシグネチャと比較することができる。ブロック506及び508により示されるように、コード内のフィーチャの機能的グループ化に従って、コード検索を行い、結果を編成することができる。例えば、オブジェクト指向型ライブラリ内の各クラスに対応するフィーチャのセットを用いて、検索及び結果を編成することができ、クラス毎に脆弱性エンジン103により結果を分析することを可能にする。
図6は、ライブラリ・インデックス・テーブル320のフィーチャをアプリケーション・インデックス・テーブル520のフィーチャと相関させる照合段階を説明する例示的なブロック図である。そのために、VFS116の脆弱性エンジン103は、各アプリケーションについてどのライブラリが存在するかを判断するように構成されたフィーチャ照合(match features)モジュール602を含む。結果は、脆弱性参照テーブル604内に格納することができる。種々の実施形態において、相関インデックス・テーブル604は、アプリ/ライブラリ・データベース114及び/又はVFS116内に格納することができる。
脆弱性エンジン103は、関心ある少なくとも1つのライブラリ・シグネチャ(例えば、ライブラリ・インデックス・テーブル320内のLiba_v1、Libav2等)と比較した、ターゲット・ソフトウェア・アプリケーション(例えば、アプリケーション・インデックス・テーブル520内のAppAv1)内に見出されるフィーチャの統計的関連性の分析を提供する。任意の所定のライブラリは、ライブラリ全体を含むことなく、ターゲット・ソフトウェア・アプリケーション内に選択的に含められる、例えば特定のクラス又は関数についてのコードのサブセットを含むことができる。同様に、任意の所定のライブラリは、複数のバージョン、及び特定のバージョン数の識別を可能にし得るシグネチャの変化を有し得る。例えば、脆弱性エンジン103は、フィーチャ・カウント(すなわち、フィーチャ・セットにおけるフィーチャの発生数)及びフィーチャの一意性(すなわち、他の既知のライブラリにおいて、及び/又はライブラリの使用に関係なくその言語で書かれたアプリケーション・プログラムのサンプルにおいて、ランダムに現れるフィーチャの可能性の統計的定量化)の組み合わせを用いて、ライブラリ・シグネチャ内のフィーチャのセットと比較した、ターゲット・ソフトウェア・アプリケーションのコード内に見出されるフィーチャのセットと関連した信頼スコアを計算することができる。次に、VFS116のライブラリ脆弱性エンジン103は、さらなる処理のために、そのアプリケーション・シグネチャを、アプリケーション・インデックス・テーブル520の形態のアプリ/ライブラリ・データベース114内に格納することができる。
種々の実施形態において、異なる検索及び比較アルゴリズムを用いて、ターゲット・アプリケーションのソフトウェア・コード(例えば、430(1))内に見出されるフィーチャのセットの関連性を判断することができる。1つの実施形態において、フィーチャのセットの統計的関連性は、信頼スコアで定量化される。例えば、term frequency−inverse document frequency(tf−idf)を用いて、信頼スコアを提供することができ、それにより、より大きいライブラリのセット、又は一般的なソフトウェア・コードにおけるその共通性と比較したアプリケーション・ソフトウェア・コード内のフィーチャの共通性に基づいて、見出されたフィーチャを信頼値に割り当てる。
例示的なユーザ・デバイス
図1の文脈で述べられるように、アーキテクチャ100内のソフトウェア脆弱性判断システムは、幾つかのUDを含む。そのために、図7は、例示的なUD700の種々のコンポーネントを高レベルで示すブロック図を示す。説明のために、図は、無線コンピューティング・デバイスの形態のUD700を示す。
UD700は、1つ又は複数のアンテナ702、セルラー、Wi−Fi通信、及び/又は有線通信用の送受信機704、ユーザ・インターフェース706、1つ又は複数のプロセッサ708、ハードウェア710、及びメモリ716を含むことができる。幾つかの実施形態において、アンテナ702は、無線信号を基地局に送るアップリンク・アンテナと、基地局から無線信号を受け取るダウンリンク・アンテナとを含むことができる。幾つかの他の実施形態においては、単一のアンテナが無線信号の送信及び受信の両方を行うことができる。Wi−Fi通信のために、同じ又は他のアンテナを使用することができる。これらの信号は、デジタル・データを送受信するように構成された、まとめてネットワーク・インターフェースと呼ばれることもある送受信機704により処理することができる。1つの実施形態において、UD700は、アンテナ702を含まず、外部コンポーネントとの通信は、無線通信を介する。
1つの実施形態において、UD700は、ユーザが、UD700からの入力を提供し、出力を受け取ることを可能にするユーザ・インターフェース706を含む。例えば、ユーザ・インターフェース706は、VFS116の脆弱性エンジン103からの通知を表示するために使用することができるデータ出力デバイス(例えば、視覚的表示装置、音声スピーカ、触覚デバイス等)を含むことができる。ユーザ・インターフェース706はまた、1つ又は複数のデータ入力デバイスを含むこともできる。データ入力デバイスは、これらに限定されるものではないが、キーパッド、キーボード、マウス・デバイス、タッチスクリーン、マイクロホン、音声認識パッケージ、及びいずれかの他の適切なデバイス又は他の電子/ソフトウェア選択インターフェースの1つ又は複数の組み合わせを含むことができる。例えば、データ入力デバイスを用いて、アプリケーション・ストア110からのアプリケーションの要求(又はその更新)を入力すること、又はUD700内に格納される1つ又は複数のアプリケーション720がセキュリティ問題をもたらすかどうかを判断するよう、脆弱性エンジン103に要求することができる。
UD700は、1つ又は複数のプロセッサ708を含むことができ、このプロセッサ708は、シングルコア・プロセッサ、マルチコア・プロセッサ、複合命令セット・コンピューティング(CISC)プロセッサ、又は別のタイプのプロセッサとすることができる。
ハードウェア710は、シングルコア又はマルチコア・プロセッサを含み得る電源及びデジタル信号プロセッサ(DSP)を含むことができる。ハードウェア710はまた、周辺コンポーネントと相互作用する通信インターフェースを含む、高速通信インターフェースを管理するネットワーク・プロセッサを含むこともできる。ネットワーク・プロセッサ及び周辺コンポーネントは、スイッチング・ファブリックによりリンクされ得る。ハードウェア710は、ハードウェア復号器及び符号器、ネットワーク・インターフェース・コントローラ、及び/又はユニバーサル・シリアル・バス(USB)コントローラをさらに含むことができる。
メモリ716は、コンピュータ・ストレージ媒体のようなコンピュータ可読媒体を用いて実装することができる。ストレージ媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、又は他のデータのような情報のストレージのためのいずれかの方法又は技術で実装される、揮発性及び不揮発性、取り外し可能及び取り外し不能の媒体を含むことができる。コンピュータ・ストレージ媒体は、これらに限定されるものではないが、RAM、ROM、EEPROM、フラッシュ・メモリ又は他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)、高精細度ビデオ・ストレージ・ディスク若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・ディスク、又はコンピューティング・デバイスによりアクセスされる情報を格納するために使用することができる他のいずれかの伝送媒体を含む。
メモリ716は、UD700のプロセッサ708及びコントローラにより実行可能又はアクセス可能な種々のソフトウェア・コンポーネント又はモジュールを格納することができる。メモリ716の種々のコンポーネントは、ソフトウェア718及びオペレーティング・システム750を含むことができる。ソフトウェア718は、アプリケーション・ストア110からダウンロードされた可能性がある及び/又はアプリケーション開発者により直接提供された種々のアプリケーション720を含むことができる。ソフトウェア718はまた、幾つかのモジュールを有する脆弱性アプリケーション740を含むこともできる。各モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム命令、オブジェクト、及び/又はデータ構造を含むことができる。
例えば、UD700の脆弱性アプリケーション740は、どのアプリケーション及びそのバージョンがUD700上で利用可能かを判断し、それを脆弱性エンジン103に報告するように構成された報告モジュール742を含むことができる。種々の実施形態において、このような報告は、新しいアプリケーションがUD700に導入されたとき、UDの操作者からの要求時、又はVFS116の脆弱性エンジン103からの要求時に、所定の間隔で定期的に行うことができる。
脆弱性アプリケーション740は、UD700のメモリ716内に格納されたアプリケーションの1つ又は複数のがセキュリティ問題をもたらすかどうかに関する通知を脆弱性エンジン103から受け取るように構成された通知モジュール744を含むことができる。幾つかの実施形態において、非アクティブ化モジュール746が、脆弱性エンジン103により、セキュリティ問題をもたらすと考えられたアプリケーションの実行を防止することができる。
オペレーティング・システム750は、UD700が種々のインターフェース(例えば、ユーザ制御、通信インターフェース、及び/又はメモリ入力/出力デバイス)を介してデータを受送信し、かつ、プロセッサ708を用いてデータを処理して、出力を生成するのを可能にするコンポーネントを含むことができる。オペレーティング・システム750は、出力を提示する(例えば、UD700の電子ディスプレイ上にデータを表示する、データをメモリ716内に格納する、データを別の電子デバイスに伝送する等)提示コンポーネントを含むことができる。さらに、オペレーティング・システム750は、一般に、オペレーティング・システム750と関連した種々の付加的な機能を実行する他のコンポーネントを含むこともできる。
例示的なプロセス
アーキテクチャ100、動作の異なる段階、及びUD700のコンポーネントの前述の概要において、ここで例示的なプロセスの高レベルの説明を検討することが有用であり得る。そのために、図8及び図9は、VFS116のような遠隔サーバを介して、アプリケーション及び/又はライブラリの脆弱性を判断するための例示的なプロセス800及び900を提示する。プロセス800は、一般的な動作段階を説明し、一方、プロセス900は、プロセス800のいずれかのブロックの後及び/又は間に実行することができる割り込み駆動(interrupt driven)態様を説明する。
プロセス800及び900は、ハードウェア、ソフトウェア、又はそれらの組み合わせで実施できる動作のシーケンスを表す論理フローチャートにおけるブロックの集まりとして示される。ソフトウェアの文脈において、ブロックは、1つ又は複数のプロセッサにより実行されるとき、列挙される動作を実行するコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むことができる。動作を説明する順序は、限定と見なすことを意図しておらず、任意の数の説明されるブロックを任意の順序で組み合わせること、及び/又はプロセスを実施するために並行して実行することができる。説明のため、プロセス800及び900は、図1のアーキテクチャ100を参照して説明される。
ブロック802において、VFS116の脆弱性エンジン103は、種々の既知の場所からライブラリ112をダウンロードする。こうしたライブラリのダウンロードは、所定の間隔で(例えば、1日に1回)、トリガ・イベント(例えば、既知の場所において新しいライブラリが利用可能である)時に、又は脆弱性エンジン103からの要求時に実行することができる。1つの実施形態において、ダウンロードされたライブラリは、例証として図1のアプリ/ライブラリ・データベース114と表されるデータベース内に格納される。
ブロック804において、ダウンロードされた各ライブラリについて、脆弱性エンジン103は、対応するライブラリのフィーチャのセットを抽出し、ライブラリのフィーチャのセットをライブラリ・データベース114のライブラリ・インデックス・テーブル内に格納する。1つの実施形態において、ライブラリのバージョンも抽出する。
ブロック806において、ダウンロードされた各ライブラリについて、ライブラリがセキュリティ問題をもたらすかどうかを判断する。例えば、ライブラリを使用し得るアプリケーションが、Botnet、DDoS、マルウェア等のような悪意のある活動に対して脆弱である場合、セキュリティ問題が存在し得る。
ライブラリについてセキュリティ問題がある(すなわち、決定ブロック806における「はい(YES)」)と判断すると、プロセスは、ブロック810を続行し、そこで、セキュリティ脅威をもたらすライブラリにフラグを立てる。1つの実施形態において、ライブラリ警告通知が1つ又は複数の権限のある(authorized)管理者及び/又はセキュリティ問題と関連付けられたライブラリの提供者に送られる。ライブラリ警告通知は、ショート・メッセージ・サービス(SMS)を用いた共通ショート・コード(CSC)、マルチメディア・メッセージ・サービス(MMS)、eメール、電話、ソーシャルメディア等のような、種々の方法で送ることができる。プロセスはブロック812を続行する。
ブロック806に戻ると、(それぞれ、各ライブラリについて)セキュリティ問題がないと判断すると(すなわち、決定ブロック806における「いいえ(NO)」)、プロセスはブロック812を続行する。
ブロック812において、VFS116の脆弱性エンジン103は、ネットワーク106上で種々の既知の場所からアプリケーションをダウンロードする。ライブラリのダウンロードと同様に、アプリケーションのダウンロードは、所定の間隔で、トリガ・イベント(例えば、既知の場所において新しいライブラリが利用可能である)時に、脆弱性エンジン103からの要求時に、UDからの要求時に(エンドユーザからのものであっても又はアプリケーションの開発者からのものであってもよい)など、実行することができる。
ブロック814において、各アプリケーションについて、アプリケーションのフィーチャのセットを抽出し、アプリケーション・データベースのアプリケーション・インデックス・テーブル内に格納する。1つの実施形態において、アプリケーションのバージョンを同様に抽出し、格納する。アプリケーション・データベースは、ライブラリ・データベース(例えば、図1にアプリ/ライブラリ・データベース114で表される)と同じであっても、又は別個のデータベースであってもよい。
ブロック816において、各アプリケーションについて、アプリケーション・インデックス・テーブル内のアプリケーションのフィーチャのセットを、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、アプリケーションと関連付けられた1つ又は複数のライブラリを識別する。別の言い方をすると、どのライブラリをアプリケーションが使用した可能性があるかを判断する。その際、脆弱性参照テーブルが、各アプリケーションについて、それと関連したライブラリの名前を格納するデータベース(アプリ/ライブラリ・データベース114又は独立型データベースとすることができる)内にポピュレートされる。
ブロック818において、各アプリケーションについて、脆弱性エンジン103は、アプリケーションと関連した1つ又は複数のライブラリの少なくとも1つに、セキュリティ問題があるようにフラグが立てられているかどうかを判断する。例えば、アプリケーションは、Botnet、DDoS、マルウェア等のような悪意のある活動に対して脆弱である1つ又は複数のライブラリを用いていることがある。1つの実施形態において、アプリケーションがライセンスを受けていないと判断される場合、アプリケーションは、セキュリティ問題を有すると考えられる。
アプリケーションがセキュリティ問題を有する(すなわち、ブロック818における「はい(YES)」)と判断すると、プロセスはブロック820を続行し、そこで、脆弱性エンジン103により、アプリケーション警告通知が生成される。種々の実施形態において、アプリケーション警告通知は、セキュリティ問題があるようにフラグが立てられたライブラリを含むように、識別されたアプリケーションを格納しているUDに送られる。代替的に又は付加的に、アプリケーション警告通知は、ここではまとめて権限のある代表者と呼ばれる、1又は複数の権限のある管理者、開発者、及び/又は本アプリケーションの提供者に送られる。例えば、脆弱なアプリケーションを保持する企業のアプリケーション・ストアに通知することができる。1つの実施形態において、通知は、問題の(offending)アプリケーションをディスエーブルにするための、UDへの命令を含み、その結果、問題のアプリケーションをUD上で起動することはできない。
種々の実施形態において、プロセス800は、トリガ・イベント(例えば、VFS116の脆弱性エンジン・ソフトウェア103からの要求)時に開始すること若しくは繰り返すことができ、又は所定の間隔で実行することができる。そのため、アプリケーションがセキュリティ問題を有していないとの判断時(すなわち、決定ブロック818における「いいえ」のとき)、又はブロック820における通知の送信の完了時、プロセスはブロック802に戻り、そこで、プロセスを繰り返すために、既知の場所から利用可能な新しいライブラリがダウンロードされる。
ここで本出願の例示的な割り込み駆動態様を説明する、図9のプロセス900を参照する。ブロック902において、ターゲット・アプリケーションのセキュリティを検証するために、VFS116の脆弱性エンジン・ソフトウェア103により、要求をネットワーク106上でUDから受け取る。種々のシナリオにおいて、UDは、ターゲット・アプリケーションがセキュリティ問題をもたらし得るいかなるライブラリも含まないことを確認したいと望むアプリケーションのエンドユーザ又はアプリケーション開発者に関連し得る。
ブロック904において、ターゲット・アプリケーションのフィーチャのセットを抽出し、アプリ/ライブラリ・データベース114とすることができるアプリケーション・データベースのアプリケーション・インデックス・テーブル内に格納する。1つの実施形態においては、アプリケーションのバージョンを抽出し、同じく格納する。
ブロック906において、ターゲット・アプリケーションのフィーチャのセット(すなわち、アプリケーション・インデックス・テーブル内に格納された)を、ライブラリ・インデックス・テーブル内のライブラリの各々のフィーチャのセットと比較し、ターゲット・アプリケーションと関連付けられた1つ又は複数のライブラリを識別する。別の言い方をすると、ターゲット・アプリケーション内で、どのライブラリが使用された可能性があるかを判断する。相関関係の結果は、アプリ/ライブラリ・データベース114の脆弱性参照テーブル内に格納される。
ブロック908において、脆弱性エンジン103は、ターゲット・アプリケーションと関連付けられた1つ又は複数のライブラリの少なくとも1つに、セキュリティ問題があるようにフラグが立てられているかどうかを判断する。1つの実施形態において、アプリケーションがライセンスを受けていないと判断される場合、アプリケーションは、セキュリティ問題を有すると考えられる。
ターゲット・アプリケーションがセキュリティ問題を有する(すなわち、決定ブロック908における「はい」)と判断すると、プロセスは、ブロック910を続行し、そこで、脆弱性エンジン103により、アプリケーション警告通知が生成される。種々の実施形態において、このアプリケーション警告通知は、ターゲット・アプリケーション(セキュリティ問題があるようにフラグが立てられたライブラリを含むように識別された)を格納している要求側UDに送られる。代替的に又は付加的に、アプリケーション警告通知は、権限のある代表者に送られる。1つの実施形態において、通知は、ターゲット・アプリケーションをディスエーブルにするための命令をUDに送り、その結果、ターゲット・アプリケーションをUD上で起動することはできない。
本明細書で説明される概念によって、UDがよりセキュア保護される一方で、UDは。消費電力がより少なく、より高速に動作する。それは、UD上で実行されるアンチ・ウィルス・ソフトウェアとは異なり、アンチ・ウィルス・ソフトウェアのためのメモリ・ストレージ空間のような貴重なリソース、疑わしいプログラムを評価するための処理電力、及びアンチ・ウィルス・ソフトウェアを実行するための電力を必要としないためである。むしろ、脆弱性アプリケーションの判断は、脆弱性エンジン103を有するVFS116の遠隔システムにより与えられ、それにより、UD上に格納されるアプリケーションの脆弱性を識別するUDの負担が実質的に軽減される。さらに、幾つかのシナリオにおいて、セキュリティ問題をもたらすライブラリと関連付けられるように識別されたアプリケーションが起動されることが防止される。
例示的なコンピュータ・プラットフォーム
上述のように、図1に示されるように、図8及び図9のプロセスに従って、無線又は有線通信を介してデータベース通信のために接続されている1つ又は複数のコンピューティング・デバイスを用いて、アプリケーションの脆弱性の検出に関連する機能を実行することができる。ユーザ・デバイス700の形態の例示的なコンピューティング・デバイスが、図7に関して上述されている。図10は、コンピュータ・ハードウェア・プラットフォームの機能ブロック図の例証を提供する。特に、図10は、VFS116、アプリ/ライブラリ・データベース114、又は図1のCRMサーバ118のような、サーバを実装するために一般的に用い得るような、ネットワーク又はホスト・コンピュータ・プラットフォーム500を示す。
コンピュータ・プラットフォーム1000は、システム・バス1002に接続される、中央処理ユニット(CPU)1004、ランダム・アクセス・メモリ(RAM)及び/又は読み出し専用メモリ(ROM)1006、ハード・ディスク・ドライブ(HDD)1008、キーボード1010、マウス1012及びディスプレイ1014を含むことができる。
1つの実施形態において、HDD1008は、本明細書で説明される方法で、脆弱性エンジン1040のような、種々のプロセスを実行できるプログラムを格納することを含む機能を有する。脆弱性エンジン1040は、異なる機能を実行するように構成された種々のモジュールを有することができる。
例えば、ライブラリ及び/又はアプリケーションを、既知の場所から、UDから、及び/又はアプリケーション開発者(UDからのものとすることができる)ダウンロードするように構成されたダウンロード・モジュール1042が存在し得る。ライブラリ及び/又はアプリケーションのフィーチャ及びバージョンを抽出するように構成された抽出モジュール1044が存在し得る。潜在的な脆弱性についてライブラリを走査するように構成された走査モジュール1046が存在し得る。アプリケーションをその対応するライブラリと照合するように構成された照合モジュール1048が存在し得る。セキュリティ問題をもたらすように識別されたライブラリ、及び/又はそうしたライブラリと関連付けられたアプリケーションに関するセキュリティ問題を1又は複数の受信者に警告するように動作可能な警告モジュール1050も存在し得る。
一例において、Webサーバのようなシステムを動作させるために、Apache(商標)のようなプログラムを格納することができる。1つの実施形態において、HDD1008は、JVMを実現するためのJava(商標)Runtime Environmentプログラム用のものなど、1つ又は複数のライブラリ・ソフトウェア・モジュールを含む実行アプリケーションを格納することができる。
結論
本教示の種々の実施形態の説明は、説明を目的として提示されているが、網羅的であること、又は開示された実施形態に限定することを意図したものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、若しくは市場で見出される技術に優る技術的改善を最も良く説明するために、又は当業者が本明細書に開示される実施形態を理解するのを可能にするために、選択された。
上記は、最良の状態及び/又はその他の例であると考えれるものを説明しているが、種々の変更をそこになし得ること、本明細書で開示される主題を種々の形態及び例において実装できること、及び本明細書にその一部のみが説明される多数の用途に教示を適用できることが理解される。以下の特許請求の範囲により、本教示の真の範囲内に入るありとあらゆる用途、修正及び変形を特許請求することが意図される。
本明細書で述べられているコンポーネント、ステップ、特徴、オブジェクト、利益及び利点は、単に例証的なものに過ぎない。そのいずれも、又はそれに関連するいずれの説明も、保護の範囲を制限することを意図しない。種々の利点が本明細書で説明されるが、必ずしも全ての実施形態が全ての利点を含むものではないことが理解されるであろう。特に断りのない限り、以下の特許請求の範囲内に含む、全ての測定値、値、格付け、位置、大きさ、サイズ及び本明細書で述べられる他の仕様は、近似値であり、正確なものではないことが理解される。それらは、それが関連する及びそれらが関係する当技術分野において通例である機能と一貫した妥当な範囲を有するように意図される。
他の多数の実施形態も考えられる。これらは、より少ない、付加的な、及び/又は異なるコンポーネント、ステップ、特徴、オブジェクト、利益及び利点を有する実施形態を含む。これらはまた、コンポーネント及び/又はステップが、異なるように配置及び/又は順序付けられる実施形態も含む。
本開示の態様は、本開示の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そこに命令が格納されたコンピュータ可読ストレージ媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
上記は、例示的な実施形態と併せて説明されているが、「例示的な」という用語は、最良であること又は最適であることではなく、単に1つの例として意味することが理解される。直前に述べられたものを除き、述べられたもの又は示されたものは、それが特許請求の範囲内に記載されるか又は記載されないかに関係なく、任意のコンポーネント、ステップ、特徴、オブジェクト、利益、利点、又は同等物の、公衆への専用化を引き起こすように意図するものではなく又は解釈すべきではない。
本明細書で使用される用語及び表現は、本明細書で他に特定の意味が述べられる場合を除いて、その対応するそれぞれの調査及び研究領域に関して、こうした用語及び表現に従うような通常の意味を有することが理解されるであろう。第1及び第2等のような関係用語は、必ずしも、いずれかの実際のこうした関係又はこうしたエンティティ若しくはアクション間の順序を必要とする又は意味することなく、単に、1つのエンティティ若しくはアクションを互いに区別するために使用することができる。「含む(comprise)」、「含んでいる(comprising)」という用語又はそのいずれかの他の変形は、非網羅的な含有をカバーすることを意図しており、要素のリストを含むプロセス、方法、物品又は装置は、それらの要素のみを含むのではなく、こうしたプロセス、方法、物品又は装置に明白に列挙されていない又はこれらに固有の他の要素を含むことができる。「1つ(a)」又は「1つ(an)」で始まる要素は、さらなる制約なしに、要素を含むプロセス、方法、物品又は装置内の付加的な同一の要素の存在を排除する。
開示の要約は、読み手が技術的開示の性質を迅速に確認するのを可能にするために与えられる。要約は、請求項の範囲又は意味を解釈又は制限するために用いられるのではないことを理解して提出される。さらに、上記の詳細な説明において、開示を合理化するために、種々の実施形態において、種々の特徴が互いにグループ化されることが分かる。この開示の方法は、特許請求される実施形態が、各請求項中で明白に述べられるよりも多くの特徴を有する意図を示すように解釈されるものではない。むしろ、以下の請求項が示すように、本主題は、決して単一の開示される実施形態の全ての特徴内にあるのではない。従って、以下の特許請求の範囲は、これにより詳細な説明の中に組み入れられ、各請求項は、それ自体で別個に請求される主題を表す。
100:アーキテクチャ
102(1)〜102(n)、700:ユーザ・デバイス(UD)
103、1040:脆弱性エンジン
106:ネットワーク
110:アプリケーション・ストア
112:ライブラリ
114:アプリケーション(app)/ライブラリ・データベース
116:脆弱性発見サーバ(VFS)
118:顧客関係管理(CRM)サーバ
200:システム
202、402:既知の場所
220:ライブラリ・ダウンローダ
230(1)〜230(N):ライブラリ・バージョン
302、502:フィーチャ抽出器モジュール
320:ライブラリ・インデックス・テーブル
420:アプリケーション・ダウンローダ
430(1)〜430(N)、720:アプリケーション
520:アプリケーション・インデックス・テーブル
602:フィーチャ照合モジュール
604:相関インデックス・テーブル
706:ユーザ・インターフェース
708:プロセッサ
710:ハードウェア
716:メモリ
718:ソフトウェア
740:脆弱性アプリケーション
742:報告モジュール
744:通知モジュール
746:非アクティブ化モジュール
750:オペレーティング・システム
800、900:プロセス
1000:コンピュータ・プラットフォーム
1002:システム・バス
1004:中央処理ユニット(CPU)
1008:ハード・ディスク・ドライブ(HDD)
1042:ダウンロード・モジュール
1044:抽出モジュール
1046:走査モジュール
1048:照合モジュール
1050:警告モジュール

Claims (17)

  1. コンピューティング・デバイスであって、
    プロセッサと、
    ネットワーク上での通信を可能にするように前記プロセッサに結合されたネットワーク・インターフェースと、
    前記プロセッサに結合された、コンテンツ及びプログラミングのためのストレージ・デバイスと、
    前記ストレージ・デバイス内に格納された脆弱性エンジン・ソフトウェアであって、前記プロセッサによる前記ソフトウェアの実行は、
    前記ネットワーク上で第1の1つ又は複数の記憶場所からライブラリをダウンロードすることと、
    前記ライブラリをデータベース内に格納することと、
    各ライブラリについて、前記ライブラリのフィーチャのセットを抽出し、前記ライブラリの前記フィーチャのセットを前記データベースのライブラリ・インデックス・テーブル内に格納することと、
    各ライブラリについて、前記ライブラリがセキュリティ問題をもたらすかどうかを判断し、前記ライブラリ・インデックス・テーブル内のセキュリティ問題をもたらす各ライブラリにフラグを立てることと、
    前記ネットワーク上で第2の1つ又は複数の記憶場所からアプリケーションをダウンロードすることと、
    前記アプリケーションを前記データベース内に格納することと、
    各アプリケーションについて、前記アプリケーションのフィーチャのセットを抽出し、前記アプリケーションの前記フィーチャのセットを前記データベースのアプリケーション・インデックス・テーブル内に格納することと、
    各アプリケーションについて、前記アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記アプリケーションと関連付けられるかを識別することと、
    各アプリケーションについて、前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
    前記ネットワーク上でユーザ・デバイス(UD)から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証することであって、前記要求は前記ターゲット・アプリケーションの識別子を含む、受け取ることと、
    前記ターゲット・アプリケーションが前記脆弱性参照テーブル内に含まれないと判断すると、
    (i)前記UD及び(ii)アプリケーション・ストアの少なくとも一方から前記ターゲット・アプリケーションを要求することと、
    前記ターゲット・アプリケーションを受け取ると、
    前記ターゲット・アプリケーションを前記データベース内に格納することと、
    前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
    前記ターゲット・アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記ターゲット・アプリケーションと関連付けられるかを識別することと、
    前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
    を含む動作を実行するように、前記コンピューティング・デバイスを構成する、脆弱性エンジン・ソフトウェアと、
    を含む、コンピューティング・デバイス。
  2. 前記脆弱性エンジン・ソフトウェアの実行は、
    各アプリケーションについて、
    アプリケーションと関連付けられた前記1つ又は複数のライブラリの少なくとも1つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を、(i)セキュリティ問題があるようにフラグが立てられた前記1つ又は複数のライブラリの前記少なくとも1つを用いる前記アプリケーションを有するユーザ・デバイス(UD)、及び(ii)前記アプリケーションの権限のある代表者の少なくとも一方に送ることと、
    を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項1に記載のコンピューティング・デバイス。
  3. 前記通知は、前記UD上の前記アプリケーションをディスエーブルにするように構成される、請求項2に記載のコンピューティング・デバイス。
  4. 前記脆弱性エンジン・ソフトウェアの実行は、
    前記ターゲット・アプリケーションと関連付けられたライブラリに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を前記UDに送ること、
    を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項に記載のコンピューティング・デバイス。
  5. 前記ターゲット・アプリケーションの前記セキュリティを検証するための前記要求は、アプリケーション開発者の前記UDから受け取られ、前記ターゲット・アプリケーションは、新しいアプリケーションである、請求項に記載のコンピューティング・デバイス。
  6. 前記要求は、前記ターゲット・アプリケーションとしてファクシミリ・アプリケーションを含む、請求項に記載のコンピューティング・デバイス。
  7. 前記ターゲット・アプリケーションの前記識別子は、前記ターゲット・アプリケーションの名前及びそのバージョンを含む、請求項に記載のコンピューティング・デバイス。
  8. 前記脆弱性エンジン・ソフトウェアの実行は、
    前記1つ又は複数のライブラリの少なくとも1つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を前記ライブラリの権限のある代表者に送ること、
    を含む動作を実行するように、前記コンピューティング・デバイスをさらに構成する、請求項1に記載のコンピューティング・デバイス。
  9. 各アプリケーションから抽出された前記フィーチャのセットは、
    前記アプリケーションにおいて使用されるとき、難読化しても生き残るライブラリのフィーチャと、
    前記アプリケーションのバージョンと、
    のうちの少なくとも1つを含む、請求項1に記載のコンピューティング・デバイス。
  10. 各ライブラリから抽出される前記フィーチャのセットは、アプリケーションにおいて使用されるとき、難読化しても生き残る固有のフィーチャを含む、請求項1に記載のコンピューティング・デバイス。
  11. 実行されるとき、コンピュータ・デバイスに、ソフトウェアの脆弱性を判断する方法を実行させるコンピュータ可読命令を有するコンピュータ可読プログラム・コードを有形に具体化する非一時的コンピュータ可読ストレージ媒体であって、前記方法は、
    ネットワーク上で第1の1つ又は複数の記憶場所からライブラリをダウンロードすることと、
    前記ライブラリをデータベース内に格納することと、
    各ライブラリについて、前記ライブラリのフィーチャのセットを抽出し、前記ライブラリの前記フィーチャのセットを前記データベースのライブラリ・インデックス・テーブル内に格納することと、
    各ライブラリについて、前記ライブラリがセキュリティ問題をもたらすかどうかを判断し、前記ライブラリ・インデックス・テーブル内のセキュリティ問題をもたらす各ライブラリにフラグを立てることと、
    前記ネットワーク上で第2の1つ又は複数の記憶場所からアプリケーションをダウンロードすることと、
    前記アプリケーションをデータベース内に格納することと、
    各アプリケーションについて、前記アプリケーションのフィーチャのセットを抽出し、前記アプリケーションの前記フィーチャのセットを前記データベースのアプリケーション・インデックス・テーブル内に格納することと、
    各アプリケーションについて、前記アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、前記ライブラリ・インデックス・テーブル内のどのライブラリが前記アプリケーションと関連付けられるかを識別することと、
    各アプリケーションについて、前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
    前記ネットワーク上でユーザ・デバイス(UD)から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証することであって、前記要求は前記ターゲット・アプリケーションの識別子を含む、受け取ることと、
    前記ターゲット・アプリケーションが前記脆弱性参照テーブル内に含まれないと判断すると、
    (i)前記UD及び(ii)アプリケーション・ストアの少なくとも一方から前記ターゲット・アプリケーションを要求することと、
    前記ターゲット・アプリケーションを受け取ると、
    前記ターゲット・アプリケーションを前記データベース内に格納することと、
    前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
    前記ターゲット・アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記ターゲット・アプリケーションと関連付けられるかを識別することと、
    前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと
    を含む、非一時的コンピュータ可読ストレージ媒体。
  12. 前記方法は、
    各アプリケーションについて、アプリケーションと関連付けられた前記1つ又は複数のライブラリの少なくとも1つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を、セキュリティ問題があるようにフラグが立てられた前記少なくとも1又は複数のライブラリを用いる前記アプリケーションを有するユーザ・デバイス(UD)に送ることをさらに含む、請求項11に記載の非一時的コンピュータ可読ストレージ媒体。
  13. 前記通知は、前記UD上の前記アプリケーションをディスエーブルにするように構成される、請求項12に記載の非一時的コンピュータ可読ストレージ媒体。
  14. 前記方法は、
    前記ターゲット・アプリケーションと関連付けられたライブラリに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を前記UDに送ることをさらに含む、請求項11に記載の非一時的コンピュータ可読ストレージ媒体。
  15. コンピュータの情報処理により、ソフトウェアの脆弱性を判断する方法であって、前記方法は、
    ネットワーク上で第1の1つ又は複数の記憶場所からライブラリをダウンロードすることと、
    前記ライブラリをデータベースに格納することと、
    各ライブラリについて、前記ライブラリのフィーチャのセットを抽出し、前記ライブラリの前記フィーチャのセットを前記データベースのライブラリ・インデックス・テーブル内に格納することと、
    各ライブラリについて、前記ライブラリがセキュリティ問題をもたらすかどうかを判断し、セキュリティ問題をもたらす各ライブラリにフラグを立てることと、
    前記ネットワーク上で第2の1つ又は複数の記憶場所からアプリケーションをダウンロードすることと、
    各アプリケーションについて、前記アプリケーションのフィーチャのセットを抽出し、前記アプリケーションの前記フィーチャのセットを前記データベースのアプリケーション・インデックス・テーブル内に格納することと、
    各アプリケーションについて、前記アプリケーションの前記フィーチャのセットをライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、前記ライブラリ・インデックス・テーブ内のどのライブラリが前記アプリケーションと関連付けられるかを識別することと、
    各アプリケーションについて、前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
    前記ネットワーク上でユーザ・デバイス(UD)から要求を受け取り、ターゲット・アプリケーションのセキュリティを検証することであって、前記要求は前記ターゲット・アプリケーションの識別子を含む、受け取ることと、
    前記ターゲット・アプリケーションが前記脆弱性参照テーブル内に含まれないと判断すると、
    (i)前記UD及び(ii)アプリケーション・ストアの少なくとも一方から前記ターゲット・アプリケーションを要求することと、
    前記ターゲット・アプリケーションを受け取ると、
    前記ターゲット・アプリケーションを前記データベース内に格納することと、
    前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
    前記ターゲット・アプリケーションのフィーチャのセットを抽出し、前記ターゲット・アプリケーションの前記フィーチャのセットを前記データベースの前記アプリケーション・インデックス・テーブル内に格納することと、
    前記ターゲット・アプリケーションの前記フィーチャのセットを前記ライブラリ・インデックス・テーブル内の前記ライブラリの各々の前記フィーチャのセットと比較し、どのライブラリが前記ターゲット・アプリケーションと関連付けられるかを識別することと、
    前記アプリケーションの名前及び前記関連付けられたライブラリの名前を前記データベースの脆弱性参照テーブル内に格納することと、
    を含む、方法。
  16. 各アプリケーションについて、アプリケーションと関連付けられた前記1つ又は複数のライブラリの少なくとも1つに、セキュリティ問題があるようにフラグが立てられたと判断すると、前記セキュリティ問題の通知を、セキュリティ問題があるようにフラグが立てられた前記少なくとも1又は複数のライブラリを用いる前記アプリケーションを有するユーザ・デバイス(UD)に送ることをさらに含む、請求項15に記載の方法。
  17. 前記通知は、前記UD上の前記アプリケーションをディスエーブルにするように構成される、請求項16に記載の方法。
JP2018562213A 2016-06-23 2017-06-06 脆弱なアプリケーションの検出 Active JP6916818B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/191,314 2016-06-23
US15/191,314 US10296745B2 (en) 2016-06-23 2016-06-23 Detecting vulnerable applications
PCT/IB2017/053320 WO2017221091A1 (en) 2016-06-23 2017-06-06 Detecting vulnerable applications

Publications (2)

Publication Number Publication Date
JP2019525287A JP2019525287A (ja) 2019-09-05
JP6916818B2 true JP6916818B2 (ja) 2021-08-11

Family

ID=60677745

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018562213A Active JP6916818B2 (ja) 2016-06-23 2017-06-06 脆弱なアプリケーションの検出

Country Status (5)

Country Link
US (1) US10296745B2 (ja)
JP (1) JP6916818B2 (ja)
CN (1) CN109154966B (ja)
GB (1) GB2568410B (ja)
WO (1) WO2017221091A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235527B1 (en) * 2016-08-11 2019-03-19 Pivotal Software, Inc. Vulnerability notification for live applications
US10229251B1 (en) * 2016-08-11 2019-03-12 Pivotal Software, Inc. Library scan for live applications
US10338916B2 (en) * 2016-12-07 2019-07-02 Sap Se Software version fingerprint generation and identification
KR102462541B1 (ko) * 2018-01-04 2022-11-03 라인플러스 주식회사 오픈소스 소프트웨어의 라이선스를 검증하는 방법 및 시스템
US11461461B2 (en) 2018-07-17 2022-10-04 Mergebase Software Inc. Systems and methods for managing and securing computer systems
US10885200B2 (en) 2018-11-15 2021-01-05 International Business Machines Corporation Detecting security risks related to a software component
US11308218B2 (en) * 2018-12-20 2022-04-19 Visa International Service Association Open source vulnerability remediation tool
JP7294441B2 (ja) * 2019-10-25 2023-06-20 日本電気株式会社 評価装置、評価システム、評価方法及びプログラム
CN112839004B (zh) * 2019-11-22 2022-09-06 中国电信股份有限公司 应用识别方法和装置
CN111143743B (zh) * 2019-12-26 2023-09-26 杭州迪普科技股份有限公司 一种自动扩充应用识别库的方法及装置
US11966475B2 (en) * 2020-10-26 2024-04-23 Hewlett Packard Enterprise Development Lp Security level-based and trust-based recommendations for software components
US11748489B2 (en) * 2021-04-02 2023-09-05 Dell Products, L.P. Unified software library access and vulnerability correction prioritization
US20230036739A1 (en) * 2021-07-28 2023-02-02 Red Hat, Inc. Secure container image builds
CN113672923A (zh) * 2021-08-20 2021-11-19 北京安天网络安全技术有限公司 一种安全检测方法、装置、电子设备及存储介质
US11875306B1 (en) * 2023-08-31 2024-01-16 Wiz, Inc. System and method for agentless application inventory detection

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4751431B2 (ja) * 2008-09-12 2011-08-17 株式会社東芝 脆弱性判定装置及びプログラム
US8572062B2 (en) * 2009-12-21 2013-10-29 International Business Machines Corporation Indexing documents using internal index sets
US9003544B2 (en) * 2011-07-26 2015-04-07 Kaspersky Lab Zao Efficient securing of data on mobile devices
WO2014000696A1 (zh) * 2012-06-28 2014-01-03 北京奇虎科技有限公司 一种Android应用程序的安全检测方法及系统
CN102779257B (zh) * 2012-06-28 2015-10-07 北京奇虎科技有限公司 一种Android应用程序的安全检测方法及系统
CN102789502B (zh) * 2012-07-17 2015-02-18 北京奇虎科技有限公司 网站的扫描方法和装置
US20140026194A1 (en) * 2012-07-22 2014-01-23 Douglas K. Smith ePHI-COMPLIANT GATEKEEPER SYSTEM & METHODS
US9904786B2 (en) * 2013-01-17 2018-02-27 International Business Machines Corporation Identifying stored security vulnerabilities in computer software applications
US9467465B2 (en) * 2013-02-25 2016-10-11 Beyondtrust Software, Inc. Systems and methods of risk based rules for application control
CN103324757A (zh) * 2013-07-09 2013-09-25 百度在线网络技术(北京)有限公司 移动终端中应用程序的搜索方法和装置
CN103685228B (zh) * 2013-10-12 2017-05-17 北京奇安信科技有限公司 一种网站漏洞快速扫描方法及设备
CN103902910B (zh) * 2013-12-30 2016-07-13 北京奇虎科技有限公司 检测智能终端中恶意代码的方法及装置
US9336397B2 (en) * 2014-06-30 2016-05-10 Oracle International Corporation Combining type-analysis with points-to analysis for analyzing library source-code
CA2955457A1 (en) * 2014-07-14 2016-01-21 Iota Security Inc. System, method and apparatus for detecting vulnerabilities in electronic devices
US10127375B2 (en) * 2015-03-07 2018-11-13 Protegrity Corporation Enforcing trusted application settings for shared code libraries

Also Published As

Publication number Publication date
GB201900639D0 (en) 2019-03-06
CN109154966B (zh) 2021-09-10
GB2568410A (en) 2019-05-15
US10296745B2 (en) 2019-05-21
US20170372072A1 (en) 2017-12-28
JP2019525287A (ja) 2019-09-05
CN109154966A (zh) 2019-01-04
GB2568410B (en) 2019-11-20
WO2017221091A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
JP6916818B2 (ja) 脆弱なアプリケーションの検出
US9596257B2 (en) Detection and prevention of installation of malicious mobile applications
US11336458B2 (en) Evaluating authenticity of applications based on assessing user device context for increased security
US10102372B2 (en) Behavior profiling for malware detection
EP3289510B1 (en) Determining source of side-loaded software
Liu et al. MR-Droid: A scalable and prioritized analysis of inter-app communication risks
US10484400B2 (en) Dynamic sensors
US11336676B2 (en) Centralized trust authority for web application components
US10860719B1 (en) Detecting and protecting against security vulnerabilities in dynamic linkers and scripts
US11874933B2 (en) Security event modeling and threat detection using behavioral, analytical, and threat intelligence attributes
KR101605783B1 (ko) 악성 애플리케이션 탐지 방법 및 이 방법을 실행시키는 컴퓨터프로그램
Pardhi et al. Implementation of a malware scanner using signature-based approach for android applications
US11436331B2 (en) Similarity hash for android executables
Yang et al. Static mining and dynamic taint for mobile security threats analysis
US10073975B2 (en) Application integrity verification in multi-tier architectures
US20230156017A1 (en) Quantification of Adversary Tactics, Techniques, and Procedures Using Threat Attribute Groupings and Correlation
Arunakumari et al. Attack and Defense Methodology Against the Share Intents in Android
Khullar et al. Static Method to Locate Risky Features in Android Applications
Cam et al. Proposing Automatic Dataset Generation System to Support Android Sensitive Data Leakage Detection Systems
Nwobodo Exploring Optimal Subsets of Statically Registered Broadcast Receivers and Permissions for the Prediction of Malicious Behavior in Android Applications
Iztayev et al. ANALYSIS OF SAFETY AND VULNERABILITIES OF THE LEVELS OF THE INFRASTRUCTURE AND APPLICATIONS ANDROID
Hintea et al. Malware in the Mobile Device Android Environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210713

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210716

R150 Certificate of patent or registration of utility model

Ref document number: 6916818

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150