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

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

▶ エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハーの特許一覧

特開2022-146912自動化された動的システムコールシーリング
<>
  • 特開-自動化された動的システムコールシーリング 図1
  • 特開-自動化された動的システムコールシーリング 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022146912
(43)【公開日】2022-10-05
(54)【発明の名称】自動化された動的システムコールシーリング
(51)【国際特許分類】
   G06F 21/57 20130101AFI20220928BHJP
【FI】
G06F21/57
【審査請求】未請求
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022041343
(22)【出願日】2022-03-16
(31)【優先権主張番号】63/163,967
(32)【優先日】2021-03-22
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/330,442
(32)【優先日】2021-05-26
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】517451940
【氏名又は名称】エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】フェリペ・フイチ
(72)【発明者】
【氏名】シャラン・サンタナム
(57)【要約】      (修正有)
【課題】アプリケーションによって必要とされるシステムコールが削減されるか又は最小限のセットを有するセキュアイメージを生成するシステムを提供する。
【解決手段】方法は、変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、1つまたは複数のユニカーネルイメージのセットを生成するステップであって、各ユニカーネルイメージが、イメージを構築する方法およびイメージを実行する方法の仕様を含み、各ユニカーネルイメージが、イメージパラメータのうちの1つに基づく、ステップと、1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、反復的に、ユニカーネルイメージの各々を実施するステップと、実施中の任意の時点において実際に使用されるsyscallを識別するために、実施イメージにおけるsyscallの使用状況を実行時に監視するステップと、を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成する方法であって、
変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、
1つまたは複数のユニカーネルイメージのセットを生成するステップであって、各ユニカーネルイメージが、前記イメージを構築する方法および前記イメージを実行する方法の仕様を含み、各ユニカーネルイメージが、前記1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、
前記1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、
反復的に、
ホスト仮想マシン内で前記1つまたは複数のユニカーネルイメージの各々を実施するステップと、
前記実施中の任意の時点において実際に使用されるsyscallを識別するために、前記実施イメージにおけるsyscallの使用状況を実行時に監視するステップと
を含む、方法。
【請求項2】
前記1つまたは複数のユニカーネルイメージの各々の実施中に実際に使用された識別されたsyscallのみを含む最終イメージを構築するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記最終イメージを展開するステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記syscallの使用状況を実行時に監視するステップが、前記実施中に実際に使用された前記syscallをリストにおいてログに記録し、タイムスタンプを付けるステップを含み、前記1つまたは複数のユニカーネルイメージの各々の前記実施中に実際に使用された前記識別されたsyscallのみを含む最終イメージを構築するステップが、前記リスト上のsyscallのみを含むイメージを構築するステップを含む、請求項2に記載の方法。
【請求項5】
前記生成するステップが、前記1つまたは複数のユニカーネルイメージの各々について、前記ユニカーネルイメージを構築する方法と前記ユニカーネルイメージを実行する方法とを識別するユニカーネル仕様を生成するステップを含む、請求項1に記載の方法。
【請求項6】
前記構成ファイルが、前記1つまたは複数のイメージパラメータのうちのいくつかまたはすべてを変更する方法を指定する、請求項1に記載の方法。
【請求項7】
実施された各ユニカーネルイメージについて、実際に実施された前記ユニカーネルイメージのコードの量を決定するステップをさらに含む、請求項1に記載の方法。
【請求項8】
単独でまたは組合せにおいて、実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成する方法の実施を提供するように構成された1つまたは複数のプロセッサを備えるシステムであって、前記方法が、
変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、
1つまたは複数のユニカーネルイメージのセットを生成するステップであって、各ユニカーネルイメージが、前記イメージを構築する方法および前記イメージを実行する方法の仕様を含み、各ユニカーネルイメージが、前記1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、
前記1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、
反復的に、
ホスト仮想マシン内で前記1つまたは複数のユニカーネルイメージの各々を実施するステップと、
前記実施中の任意の時点において実際に使用されるsyscallを識別するために、前記実施イメージにおけるsyscallの使用状況を実行時に監視するステップと
を含む、システム。
【請求項9】
前記方法が、前記1つまたは複数のユニカーネルイメージの各々の実施中に実際に使用された識別されたsyscallのみを含む最終イメージを構築するステップをさらに含む、請求項8に記載のシステム。
【請求項10】
前記方法が、前記最終イメージを展開するステップをさらに含む、請求項9に記載のシステム。
【請求項11】
前記syscallの使用状況を実行時に監視するステップが、前記実施中に実際に使用された前記syscallをリストにおいてログに記録し、タイムスタンプを付けるステップを含み、前記1つまたは複数のユニカーネルイメージの各々の前記実施中に実際に使用された前記識別されたsyscallのみを含む最終イメージを構築するステップが、前記リスト上のsyscallのみを含むイメージを構築するステップを含む、請求項9に記載のシステム。
【請求項12】
前記生成するステップが、前記1つまたは複数のユニカーネルイメージの各々について、前記ユニカーネルイメージを構築する方法と前記ユニカーネルイメージを実行する方法とを識別するユニカーネル仕様を生成するステップを含む、請求項8に記載のシステム。
【請求項13】
前記構成ファイルが、前記1つまたは複数のイメージパラメータのうちのいくつかまたはすべてを変更する方法を指定する、請求項8に記載のシステム。
【請求項14】
前記方法が、実施された各ユニカーネルイメージについて、実際に実施された前記ユニカーネルイメージのコードの量を決定するステップをさらに含む、請求項8に記載のシステム。
【請求項15】
1つまたは複数のプロセッサによって実施されると、単独でまたは組合せにおいて、実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成する方法の実施を提供する命令が記憶された有形の非一時的コンピュータ可読媒体であって、前記方法が、
変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、
1つまたは複数のユニカーネルイメージのセットを生成するステップであって、各ユニカーネルイメージが、前記イメージを構築する方法および前記イメージを実行する方法の仕様を含み、各ユニカーネルイメージが、前記1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、
前記1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、
反復的に、
ホスト仮想マシン内で前記1つまたは複数のユニカーネルイメージの各々を実施するステップと、
前記実施中の任意の時点において実際に使用されるsyscallを識別するために、前記実施イメージにおけるsyscallの使用状況を実行時に監視するステップと
を含む、有形の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願との相互参照
本出願は、参照によりその全体が本明細書に組み込まれる、「自動化された動的システムコールシーリング」と題する、2021年3月22日に出願した、米国仮特許出願第63/163,967号の優先権を主張するものである。
【背景技術】
【0002】
本実施形態は、コンピュータおよびユーザデバイス上で実行されるアプリケーションおよびオペレーティングシステムのセキュリティを改善するために、システムコール(syscall)をシールするための方法、システム、およびコンピュータ可読媒体に関する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Ghavamnia, S.ら、「Temporal System Call Specialization for Attack Surface Reduction」、29th USENIX Security Symposium(2020年8月12~14日)
【非特許文献2】https://www.nongnu.org/lwip/2_l_x/group_lwip_opts、lwipネットワークスタックのためのハイパーテキストマークアップ言語
【発明の概要】
【課題を解決するための手段】
【0004】
本実施形態は、実行するためにアプリケーションによって必要とされるシステムコールの削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成するシステムおよび方法を提供する。一実施形態によれば、実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成するための方法は、変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、1つまたは複数のユニカーネル(unikernel)イメージまたは実験イメージのセットを生成するステップであって、各ユニカーネルイメージが、イメージを構築する方法およびイメージを実行する方法の仕様を含み、各ユニカーネルイメージが、1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、反復的に、ホスト仮想マシン内で1つまたは複数のユニカーネルイメージの各々を実施するステップと、実施中の任意の時点において実際に使用されるシステムコールを識別するために、実施イメージにおけるsyscallの使用状況を実行時に監視するステップとを含む。
【0005】
様々な実施形態について、例示的な図に基づいて以下でさらに詳細に説明する。本発明は、例示的な実施形態に限定されない。本明細書に記載および/または図示されているすべての特徴は、本発明の実施形態において、単独で、または異なる組合せにおいて組み合わされて使用されてもよい。様々な実施形態の特徴および利点は、以下を示す添付図面を参照して以下の詳細な説明を読むことによって明らかになるであろう。
【図面の簡単な説明】
【0006】
図1】本発明の実施形態による方法と全体的なシステムアーキテクチャとを概略的に示す図である。
図2】実施形態による処理システムのブロック図である。
【発明を実施するための形態】
【0007】
本発明の実施形態は、有利には、実行するためにアプリケーションによって必要とされるsyscallの削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成することを可能にする。
【0008】
一実施形態によれば、実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成するための方法が提供される。方法は、変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、1つまたは複数のユニカーネルイメージまたは実験イメージのセットを生成するステップであって、各ユニカーネルイメージが、イメージを構築する方法およびイメージを実行する方法の仕様を含み、各ユニカーネルイメージが、1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、反復的に、ホスト仮想マシン内で1つまたは複数のユニカーネルイメージの各々を実施するステップと、実施中の任意の時点において実際に使用されるsyscallを識別するために、実施イメージにおけるsyscallの使用状況を実行時に監視するステップとを含む。
【0009】
一実施形態によれば、方法は、1つまたは複数のユニカーネルイメージの各々の実施中に実際に使用された識別されたsyscallのみを含む最終イメージを構築するステップをさらに含む。
【0010】
一実施形態によれば、方法は、最終イメージを展開するステップをさらに含む。展開するステップは、ホストコンピュータシステムまたはネットワーク上で最終イメージを実施するステップを含んでもよい。
【0011】
一実施形態によれば、syscallの使用状況を実行時に監視するステップは、実施中に実際に使用されたsyscallをリストにおいてログに記録し、タイムスタンプを付けるステップを含み、1つまたは複数のユニカーネルイメージの各々の実施中に実際に使用された識別されたsyscallのみを含む最終イメージを構築するステップは、リスト上のsyscallのみを含むイメージを構築するステップを含む。
【0012】
一実施形態によれば、生成するステップは、1つまたは複数のユニカーネルイメージの各々について、ユニカーネルイメージを構築する方法とユニカーネルイメージを実行する方法とを識別するユニカーネル仕様を生成するステップを含む。
【0013】
一実施形態によれば、構成ファイルは、1つまたは複数のイメージパラメータのうちのいくつかまたはすべてを変更する方法を指定する。
【0014】
一実施形態によれば、方法は、実施された各ユニカーネルイメージについて、実際に実施されたユニカーネルイメージのコードの量を決定するステップをさらに含む。
【0015】
一実施形態によれば、システムは、単独でまたは組合せにおいて、実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成する方法の実施を提供するように構成された1つまたは複数のプロセッサを含むシステムが提供される。一実施形態において、方法は、変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、1つまたは複数のユニカーネルイメージのセットを生成するステップであって、各ユニカーネルイメージが、イメージを構築する方法およびイメージを実行する方法の仕様を含み、各ユニカーネルイメージが、1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、反復的に、ホスト仮想マシン内で1つまたは複数のユニカーネルイメージの各々を実施するステップと、実施中の任意の時点において実際に使用されるsyscallを識別するために、実施イメージにおけるsyscallの使用状況を実行時に監視するステップとを含む。他の実施形態において、方法は、本明細書で説明されているような追加のステップを含んでもよい。
【0016】
一実施形態によれば、1つまたは複数のプロセッサによって実施されると、単独でまたは組合せにおいて、実行するためにアプリケーションによって必要とされるシステムコール(syscall)の削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成する方法の実施を提供する命令が記憶された有形の非一時的コンピュータ可読媒体が提供される。一実施形態において、方法は、変更する1つまたは複数のイメージパラメータを指定する構成ファイルを入力として受信するステップと、1つまたは複数のユニカーネルイメージのセットを生成するステップであって、各ユニカーネルイメージが、イメージを構築する方法およびイメージを実行する方法の仕様を含み、各ユニカーネルイメージが、1つまたは複数のイメージパラメータのうちの1つに基づく、ステップと、1つまたは複数のユニカーネルイメージを用いて実行キューをポピュレートするステップと、反復的に、ホスト仮想マシン内で1つまたは複数のユニカーネルイメージの各々を実施するステップと、実施中の任意の時点において実際に使用されるsyscallを識別するために、実施イメージにおけるsyscallの使用状況を実行時に監視するステップとを含む。他の実施形態において、方法は、本明細書で説明されているような追加のステップを含んでもよい。
【0017】
システムコール(syscall)は、ユーザ空間アプリケーションがオペレーティングシステムのカーネルと対話するために有する手段である。結果として、システムコールは、潜在的な攻撃のための主要なベクトルとなる。本発明の実施形態は、その実施の特定の段階において特定のアプリケーションによって必要とされないsyscallを実行時にシールするための方法を提供する。このようにして、本発明の実施形態は、syscall攻撃対象領域を大幅に削減し、それによって、アプリケーションおよびオペレーティングシステムのセキュリティを強化し、実行中のイメージをいくつかの攻撃から保護する。
【0018】
コードの量と実行中のコードによってさらされる潜在的な悪用の量との間には直接的な相関関係が存在するので、展開されたアプリケーションおよびオペレーティングシステムをより安全にするための技法の1つは、それらの攻撃対象領域、すなわち、それらの中で実行されている可能性がある実行中のコードの量を削減することである。これらの線に沿って、syscallは、オペレーティングシステムカーネルがユーザレベルのアプリケーションに公開するアプリケーションプログラムインターフェース(API)であり、したがって、システムコールを悪用することは、攻撃者がシステム全体を制御することに潜在的につながることがあるので、syscallは、攻撃者にとって特に関心の高いものである。
【0019】
参照により本明細書に組み込まれる、Ghavamnia, S.ら、「Temporal System Call Specialization for Attack Surface Reduction」、29th USENIX Security Symposium(2020年8月12~14日)、以下「Ghavamnia」は、コンパイル時にアプリケーションを分析し、必要とするsyscallを識別し、必要としないsyscallを削除またはフィルタリングする技法である一時的システムコール特殊化を導入した。このようにして、Ghavamniaにおける技法は、syscall攻撃対象領域と、悪用の可能性とを低減する。そうするために、2つの実施段階、初期化(init)段階と実行段階とを定義し、アプリケーションがこれらの2つの段階のどちらにあるかに基づいてsyscallをフィルタリングする。しかしながら、この手法は、3つの大きな問題を抱えている。
1.syscallの識別は、コンパイル時に発生し、不正確である可能性がある(たとえば、コード内に決して使用されないsyscallが存在する可能性があるので、アプリケーションに有用性を提供しないのに、悪用に利用できる可能性がある)。
2.この手法は、2つの実施段階(init、実行)のみを識別し、アプリケーションがある段階から次の段階に移行するときに、syscallを一回だけフィルタリングし、これは、いくつかのサーバアプリケーションには十分である可能性があるが、多くのアプリケーション(たとえば、ネットワーク機能)は、それらの有効期限を通じて、おそらくはトラフィックパターンまたは受信要求に基づいても、非常に異なるsyscall実施ニーズを有する場合がある。
3.2つの段階の識別は、ある段階から次の段階への移行を見つけるために、専門家にアプリケーションのコードベースに目を通させ、コールグラフを手動で分析させることによって、手動で行われる必要がある。
【0020】
一実施形態において、本発明は、システムコール(syscall)を「シールする」ための方法を提供する。たとえば、一実施形態において、時点tにおいて、実行イメージ(たとえば、オペレーティングシステム、ライブラリ、およびアプリケーション)によってどのsyscallが必要とされず、したがって、潜在的な攻撃のベクトルの数を減らすために無効にされてもよいのかを決定するための方法が提供される。そのような方法は、(対象アプリケーションによって必要とされないコードを排除することによる)空間的特殊化だけでなく、現在使用されていないsyscallを無効にすることによる時間的特殊化も対象とする点で、多様な形式の特殊化を提供する。
【0021】
これを達成するために、本発明の一実施形態による方法は、任意の所与の時点においてどのsyscallが実際に使用されているかを実行時に分析するために、反復的な手法を使用する。Ghavamniaの手法とは対照的に、分析は、有利には動的に実行され、2つの段階だけに限定されず、段階を見つけるためにコードの手動分析を必要としない。
【0022】
図1は、本発明の一実施形態による方法および全体的なシステムアーキテクチャ100を概略的に示す。より詳細には、本発明の一実施形態による方法は、ステップ1において、実行イメージのどのパラメータ、たとえば、オペレーティングシステム、ライブラリ、および/またはアプリケーションのどのパラメータを変更するかを規定する実験構成ファイルを読み取ることによって開始する。一実施形態において、構成ファイルは、たとえば、テストを実行するユーザによって手動で生成されてもよい。いくつかの実施形態において、実験構成ファイルは、実行イメージのいくつかまたはすべてのパラメータを変更する方法を識別する。たとえば、以下のスニペットは、イメージの2つのパラメータ(worker_processesおよびAccess log)および分散パラメータの例を提供する。
- 名前: worker_processe #nginxワーカープロセスの数
最小: 1 #1からの変化
最大: 10 #10まで
ステップ: 1 #1のインクリメントにおける
- 名前: Access_log #各ウェブアクセスのログを取るかどうか
値: on|off #オンとオフの両方を試す
この例において、システムが要求を処理する異なる数の同時ワーカープロセスを試行するためにworker _processesパラメータを1のインクリメントで1から10まで変化させることができる、特定のNginx(Webサーバ)パラメータが指定されてもよく、他のパラメータは、アクセスロギングが使用されるかどうかを有効/無効にする。他の例示的なパラメータは、ネットワークスタックパラメータでああってもよい(たとえば、https://www.nongnu.org/lwip/2_l_x/group_lwip_opts、lwipネットワークスタックのためのハイパーテキストマークアップ言語)。
【0023】
ステップ2において、構成ファイルは、実行する実験のセットを生成するために実験順列生成器モジュールによって使用される。たとえば、各実験は、(1)構築プロセスのための完全な構成パラメータを含むユニカーネルを構築する方法、および(2)どれくらいの期間かを含むユニカーネルを実行する方法の仕様を含むことができる。当業者によく知られているように、ユニカーネルは、特殊化された単一のアドレス空間仮想マシンである。各実験は、少なくとも1つのパラメータの値においてすべての他の実験と異なる。
【0024】
ステップ3において、各々のそのような実験は、システムの実行キューに入れられる。キューに入れられた実験の各々は、ステップ4においてホストコンピュータ上で別々に実施され得(たとえば、カーネルベースの仮想マシン(KVM)システム上で実施される仮想マシンイメージ)、この時点で、方法は、ステップ5においてsyscallの使用状況を一定の間隔で監視する。この監視は、たとえば、ホスト仮想マシンからLINUXにおけるstrace診断ツールを使用して行われてもよい。ステップ6において、テスト/実験に関する様々なsyscallの使用状況がログに記録され、syscallリストにタイムスタンプが付けられる。たとえば、使用された各syscallがリストに追加され得、それが使用されたときのタイムスタンプがsyscallに関連付けて追加されてもよい。一実施形態において、リストは、メモリ内に記憶されたテーブルまたは他のデータ構造として実装されてもよい。
【0025】
一実施形態において、テストが達成したカバレッジの量、すなわち、テストが実際に実行したコードの量を計算するために、オプションの追加のステップが実行され得、これを行うために、gcovなどの既存のツールが使用されてもよい。ステップ7において、実行キュー内に実験がなくなるまで、次の実験を実行することによってサイクルが(反復的に)繰り返される。ステップ8において、実験によって使用されたこれらのsyscallのみを含むイメージが、どのsyscallがどの時間間隔において使用されるのかに関する情報と一緒に生成される。実際に展開されるのは、この結果として生じるイメージである。
【0026】
図2は、一実施形態による処理システム200のブロック図である。処理システム200は、上記および本発明で説明されているプロトコル、デバイス、メカニズム、システム、および方法を実装するために使用されてもよい。たとえば、各機能モジュール(たとえば、実験順列生成器、ホスト仮想マシンなど)は、処理システム200を含み得、または2つもしくは複数のモジュールは、処理システム200によって実装されてもよい。処理システム200は、コンピューティングデバイスまたは分散プロセッサシステムの中央処理装置(CPU)などの、1つまたは複数のプロセッサ204を含んでもよい。プロセッサ204は、上記で説明されている機能および方法を実行するためのプロセッサ実施可能命令を実施する。実施形態において、プロセッサ実施可能命令は、ローカルに記憶されるか、またはリモートに記憶され、ハードドライブ、クラウドストレージ、フラッシュドライブなどであってもよいストレージ210などの非一時的なコンピュータ可読媒体からアクセスされる。読み取り専用メモリ(ROM)206は、プロセッサ204を初期化するためのプロセッサ実施可能命令を含み、ランダムアクセスメモリ(RAM)208は、プロセッサ204によって実施される命令をロードおよび処理するためのメインメモリである。ネットワークインターフェース212は、有線ネットワークまたはセルラーネットワーク、およびローカルエリアネットワーク、またはインターネットなどのワイドエリアネットワークに接続され得、インスタンス化要求または命令、分析タスク、入力データまたは出力データとして機能する要求されたデータまたはデータストリームを表すデータセットなどを含むデータを受信および/または送信するために使用されてもよい。特定の実施形態において、複数のプロセッサがプロセッサ204の機能を実行する。
【0027】
本発明の実施形態は、以下の利点と改善とを提供する。
1.「シール」されてもよいsyscallの数を増やし、潜在的な攻撃のベクトルの数を減らすために、実行時に、ソフトウェアイメージによって実際に使用されるsyscallのリストの構築を提供する。
2.どのsyscallがイメージの存続期間中の任意の時点において必要とされるかを動的かつ自動的に決定することによって、イメージによって必要とされるsyscallの数を繰り返し推論するステップを提供する。これは、一実施形態において、アプリケーションのコードパスの現実的で大規模なカバレッジを提供するための実験順列生成器の使用を含む。このプロセスの後に、上記の分析から生じるsyscallのみを含むイメージを生成するために最終コンパイルが使用される最終ステップが続く場合がある。
3.アプリケーションによってsyscallが必要とされる場合に、syscallの特定の部分のみが実際に必要とされるかどうかを確認するために、順列生成器が同じsyscallに対していくつかの異なるパラメータをテストするように構成される追加のステップを提供する。
4.アプリケーションの実施存続期間内の異なる時点において特定のsyscallの必要性を自動的に分析するメカニズムを提供し、段階の移行を把握するために専門家にアプリケーションのコードベースを分析させる手作業の必要性を排除する。
5.分析を2つの段階のみに限定することなく、必要なsyscallのはるかにより正確なリストを導出するために、syscallの使用を動的に(実行時に)分析する能力を提供する。
6.たとえば、Ghavamniaにおいて行われるような静的分析とは対照的に、改善された精度と低減したsyscallの数とを提供し、したがって、より安全な展開を提供する。
【0028】
一実施形態において、本発明は、実行するためにアプリケーションによって必要とされるsyscallの削減されたまたは最小限のセットを有するセキュアイメージを自動的に生成するための方法を提供し、方法は、以下のステップを含む。
1.実験順列生成器が、変更するパラメータを含む構成ファイルを入力として受け取り、結果として生じるイメージを構築する方法およびそれら(すなわち、実験)を実行する方法の仕様を出力する。
2.実際の実験を実行するために、実行キューおよびシステムが使用される。
3.実行時にsyscallの使用状況を監視するために、メカニズムが使用される。
4.メカニズムが、任意の時点においてどのsyscallが使用されたのかを、リストにおいてログに記録し、タイムスタンプを付ける。
5.メカニズムが、リスト上にないsyscallを含まないイメージを構築する。
【0029】
したがって、本発明の実施形態は、有利には、syscall攻撃対象領域を低減し、有利には、オペレーティングシステムまたはアプリケーションからいかなるコードも削除することなく、それを行う。デブローティングおよび他の特殊化技法も、本発明の実施形態と相補的に使用されてもよい。
【0030】
本発明の実施形態は、LINUX、FREEBSDなどの主要なオペレーティングシステムを含む、システムコールを利用する任意のコンピュータシステムのセキュリティを高め、既存のソフトウェアのセキュリティを強化するために使用されてもよい。
【0031】
本発明の実施形態について、図面および前述の説明において詳細に図示および説明してきたが、そのような図示および説明は、実例または例示的であると見なされるべきであり、制限的であると見なされるべきではない。本発明の範囲内で、変更および修正が当業者によってなされてもよいことが理解されよう。特に、本発明は、様々な実施形態からの特徴の任意の組合せを有するさらなる実施形態をカバーする。それに加えて、本発明を特徴付ける本明細書でなされた陳述は、本発明の実施形態を指し、必ずしもすべての実施形態を指すわけではない。
【符号の説明】
【0032】
200 処理システム
204 プロセッサ
206 読み取り専用メモリ(ROM)
208 ランダムアクセスメモリ(RAM)
210 ストレージ
212 ネットワークインターフェース
図1
図2
【外国語明細書】