JP5208367B2 - セキュリティクリティカルデータコンテナ - Google Patents

セキュリティクリティカルデータコンテナ Download PDF

Info

Publication number
JP5208367B2
JP5208367B2 JP2006019144A JP2006019144A JP5208367B2 JP 5208367 B2 JP5208367 B2 JP 5208367B2 JP 2006019144 A JP2006019144 A JP 2006019144A JP 2006019144 A JP2006019144 A JP 2006019144A JP 5208367 B2 JP5208367 B2 JP 5208367B2
Authority
JP
Japan
Prior art keywords
security
critical
data
code
critical data
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.)
Expired - Fee Related
Application number
JP2006019144A
Other languages
English (en)
Other versions
JP2006216038A (ja
JP2006216038A5 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006216038A publication Critical patent/JP2006216038A/ja
Publication of JP2006216038A5 publication Critical patent/JP2006216038A5/ja
Application granted granted Critical
Publication of JP5208367B2 publication Critical patent/JP5208367B2/ja
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access

Description

本発明は、一般にコンピュータシステムに関し、より具体的にはコンピュータシステムセキュリティに関する。
本特許文献の開示の一部には、著作権保護の対象となる資料が含まれる。著作権所有者は、特許商標庁の特許ファイルまたは記録に掲載されているとおりの特許文献または特許情報開示のファクシミリ複製に異議を唱えないが、それ以外においてはすべての著作権を留保する。
現代のコンピューティングにおいて、コンピュータアプリケーションプログラムおよびその他のコードは、インターネットからダウンロードしてインストールすることができる。不明のソースまたは信頼できないソースからダウンロードをする場合、そのようなコードが意図的に悪質なものであったり、あるいは重要データに危害を加えたり重要データに無許可アクセスを行うことができる可能性も高い。しかし、コンピュータユーザがプロンプトを表示されることなくコードをダウンロードし、コードを実行できることで恩恵を受ける状況が数多くあるため、ダウンロードを完全に阻止することは、この問題の実際的な解決策ではない。
本件特許出願人の.NET技術に基づく環境のような一部の環境では、コードが行うことを許される事項を制限することにより、不明または信頼できないコードを実行してしまうこの問題を解決しようと試みている。例えば、基盤となるプラットフォームはその呼び出し側が特定のアクセス権を持つことを要求することができるので、コードは実行に必要なアクセス権を要求できるが、ランタイムはどの程度コードが信頼されるかを評価するポリシーに基づいて、そのコードにアクセス権を認めるだけである。そのようなアクセス権は、ファイルおよびデータベースへのアクセス、インターネットへの接続、ユーザインターフェースを介したユーザとのインタラクション、管理されていないコードの呼び出しなどを行う機能のようなものを含んでいる。コードがそのようなアクセス権を要求する場合にユーザにプロンプト表示することは、1つのポリシーベースの解決策ではあるが、通常のユーザはプロンプトが表示されたときに正しく安全な判断を下す態勢が整っているわけではないため、あまり望ましいとはいえない。
プロンプト表示をせずにアプリケーションをインターネットからダウンロードしてインストールできるようにするプラットフォームのための安全なコードを作成することは、極めて難しい問題である。これは、適切に動作するためにプラットフォーム自体が高められた特権を持つ必要があるためである。高い特権とともに信頼できないコードを実行する内部方法を不注意に露呈させることにより、信頼できないコードが危険なオペレーションを実行できるようにプラットフォームコードの一部が作成されている場合、そこにはセキュリティの欠陥が存在する可能性がある。一例として、プラットフォームコードは、ウィンドウ上にテキストを提示するなど、オペレーティングシステムサービスため管理されていないコードを呼び出すことができる必要があるが、信頼できないコードはこれを行うことを許されていない。しかし、信頼できないコードがプラットフォームコードの内部メソッドの呼び出しを介して管理されていないコードを呼び出すことができるように、不注意にプラットフォームコードが作成された場合、ここには、セキュリティの欠陥が存在している
安全に作成されたプラットフォームコードにより、開発者が、実行に高いアクセス権を必要とするか、または高いアクセス権が実行されるかどうか制御するプラットフォームコードの任意の部分に(例えばメタデータを使用して)マーク付けすることができる可能性を高める1つの解決策とは、つまり、プラットフォームコードが危険なオペレーションを実行する「クリティカルな」コードであることをメタデータが示すことである。次に、セキュリティチームおよび静的コード分析ツール(例えば、FxCopは.NET管理コードアセンブリを検査するそのようなコード分析ツールの1つである)はメタデータを認識し、それにより、高い特権で実行されているプラットフォームコードが信頼できないコードに露出される可能性が大幅に減少するようにプラットフォーム機能を開発することができる。
しかし、そのようなコードおよびデータをクリティカルとしてマーク付けすることは極めて有益であるが、コードを検討する必要のある多くのクリティカルなメソッドという負担をセキュリティチームに負わせる、複雑なコード検討プロセスをもたらす。必要とされているのは、クリティカリティを検討する必要のあるメソッドの数を減らすための安全な方法である。より単純に検討ができることは、プラットフォームコードのあらゆるセキュリティ問題が発見される可能性を高めるからである。
簡潔には、本発明は、データの存在の検査/データの初期化をクリティカルにすることなしに、しかもタイプセーフな方法によってデータにアクセスできるようにして、「クリティカリティ(criticality)」を記述するメタデータがクラスの任意のデータフィールドに添付されるシステムおよび方法を目的としている。さらに、高いアクセス権(permissions)を制御するクリティカルデータに対してはそのデータは、データ自体ではなくデータ値を設定するメソッドをクリティカルであるとしてマーク付けすることにより、setコンテナ内でクリティカルであるとして処理される。したがって、単に値を使用する(取得する)他のコードは、クリティカルである必要はない。その結果、検討される必要のあるプラットフォームコード内のクリティカルなメソッドおよびデータフィールドの数は、セキュリティを損なうことなく大幅に減らされる。
1つの実施形態において、汎用ベースのクラス(ここで汎用とはC++テンプレートと類似した.NETフレームワーク言語構造体である)は、クリティカルデータ用のコンテナを提供する。汎用クラスを使用することはつまり、クリティカルデータへのGetアクセスが、クリティカルとマーク付けされたクラスのプロパティを通じてのみ起こり得るということである。しかし、汎用クラスインスタンスをポイントする(point)実際のフィールドは、クリティカルである必要はなく、そのため透過的な方法によってコードから安全に検査することができる。したがって、本発明は、クリティカルであるとして追跡されるデータのコンテンツへのアクセスを可能にするが、データの存在の検査/データの初期化クリティカルのままである。
この目的のために、本発明は「Get」コンテナを提供し、これを介して(例えばクリティカルリソースのファイルハンドルなど、データがクリティカルリソースへのアクセスを提供する場合のように)クリティカルデータがアクセスされる。コンテナ内のデータの値を取り出すためのgetメソッドは、これがセキュリティクリティカルであることを示すメタデータでマーク付けされ、これにより、信頼できないコードによるそのデータへのアクセスを可能にするプログラムの欠陥があるかどうかを静的分析ツールが検出することになる。しかし、getメソッドがマーク付けされているため、検査自体がクリティカルになることなしに、データは存在/初期化(例えばヌルチェックが行われる)を検査される。その結果、検査するコードはクリティカルとしてマーク付けされる必要はなくなり、セキュリティの検討を必要とするプラットフォームコードの量を大幅に減少させる。
本発明はさらに、「Set」コンテナも提供し、コードがアクセス権を高めるかどうかを指示するためにブールまたはその他の変数が使用されている状況を処理する。そのようなデータはコードがアクセス権を高めるかどうかを制御するので、データを設定することはクリティカルとなり、それ以外の場合は信頼できないコードからの呼び出しはアクセス許可を高めることができる。値が適切に設定されたならば実際にアクセス許可を高めるコードなど、setメソッドを呼び出さない他のコードは、(例えばgetメソッドを介して)値を取得する必要があるだけであり、このためクリティカルコードである必要はない。Setコンテナの結果として、プラットフォームコード内のクリティカルメソッドの数も、大幅に減らされる。
その他の利点は、付属の図と併せて以下の詳細な説明を読めば明らかになろう。
図1は、本発明を実装できる適切なコンピューティングシステム環境100の実施例を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用の範囲または機能にいかなる制限を提案することも意図するものではない。さらに、コンピューティング環境100は、模範的なオペレーティング環境100に示された1つのコンポーネントまたはその組合せに関して依存関係または必要条件を有するものと解釈すべきではない。
本発明は、数多くの他の一般的な用途もしくは特殊用途のコンピュータシステム環境または構成により動作可能である。本発明と共に使用するために最適な既知のコンピュータシステム、環境、および/または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などがあげられるが、これらに限定されることはない。
本発明は、コンピュータによって実行されるプログラムモジュールなど、コンピュータ実行可能命令の一般的な文脈に即して説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明はさらに、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラムモジュールは、メモリ記憶装置を含むローカルおよび/またはリモートのコンピュータストレージ媒体に配置される。
図1を参照すると、本発明を実装するための模範的なシステムは、コンピュータ110の形態の汎用コンピュータ装置を含んでいる。コンピュータ110のコンポーネントは、処理装置120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントを処理装置120に接続するシステムバス121を含むことができる。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、任意の複数のタイプのバス構造であってもよい。限定的ではなく例示的に、そのようなアーキテクチャには、ISAバス、MCAバス、EISAバス、VESAローカルバス、およびメザニンバスとも呼ばれるPCIバスが含まれている。
コンピュータ110は通常、各種のコンピュータ読取り可能媒体を含んでいる。コンピュータ読取り可能媒体は、コンピュータ110がアクセスでき、揮発性および不揮発性媒体、取り外し可能および固定式の媒体を含む任意の使用可能な媒体であってもよい。一例として、コンピュータ読取り可能媒体は、コンピュータ記憶媒体および通信媒体を備えることができるが、これらに限定されることはない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータなどの情報のストレージのための任意の方法または技術において実装された揮発性および不揮発性の、取り外し可能および固定式の媒体を含んでいる。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリその他のメモリ技術、CD−ROM、DVDその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージその他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、コンピュータ110によってアクセスすることができる他の媒体を含んでいるが、これらに限定されることはない。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを搬送波などの搬送メカニズムのような変調データ信号で組み入れ、任意の情報伝達媒体を含んでいる。「変調データ信号」という用語は、情報をコード化するような方法によって、1つまたは複数の特性セットを設定されまたは変更された信号を意味する。例えば、通信媒体は、有線ネットワークまたは直接配線接続のような有線媒体、および音響、RF、赤外線など無線媒体を含んでいるが、これらに限定されることはない。上記の任意の組合せも、コンピュータ読取り可能媒体の範囲に含まれる。
システムメモリ130は、読み取り専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132のような揮発性メモリおよび/または不揮発性メモリの形態でコンピュータ記憶媒体を含んでいる。起動時などにコンピュータ110内の構成要素間の情報の転送を助ける基本ルーチンを含むBIOS(基本入出力システム)133は通常、ROM131に格納される。RAM132は通常、処理装置120によって即時アクセス可能および/または現在操作中のデータおよび/またはプログラムモジュールを含んでいる。限定的ではなく例示的に、図1では、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、他の取り外し可能/固定式、揮発性/不揮発性のコンピュータ記憶媒体を含めることもできる。ほんの一例として、図1では、固定の不揮発性磁気媒体との間の読み取りまたは書き込みを行うハードディスクドライブ141、取り外し可能の不揮発性磁気ディスク152との間の読み取りまたは書き込みを行う磁気ディスクドライブ151、およびCD−ROMその他の光媒体などの取り外し可能の不揮発性光ディスク156との間の読み取りまたは書き込みを行う光ディスクドライブ155を示している。模範的なオペレーティング環境において使用することができる他の取り外し可能/固定式、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、固体RAM、固体ROMなどを含むが、これらに限定されることはない。ハードディスクドライブ141は通常、インターフェース140などの固定式メモリインターフェースを通じてシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は通常、インターフェース150などの取り外し可能メモリインターフェースによってシステムバス121に接続される。
図1に示されている前述のドライブおよびその関連付けられたコンピュータ記憶媒体は、コンピュータ110のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージを提供する。例えば、図1において、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を格納するように示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じにすることも、または異なるものにすることもできることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147は、少なくともそれらが異なるコピーであることを示すために本明細書において異なる番号を付けてある。ユーザは、タブレットまたは電子デジタイザ164、マイクロフォン163、キーボード162および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161などの入力装置を介してコンピュータ110にコマンドおよび情報を入力することができる。図1に図示されていない他の入力装置としては、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどを含むことができる。上記およびその他の入力装置は、システムバスに接続されているユーザ入力インターフェース160を介して処理装置120に接続されることが多いが、パラレルポート、ゲームポート、またはUSBなど他のインターフェースおよびバス構造によって接続することもできる。モニタ191またはその他の種類の表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続することができる。モニタ191はさらに、タッチスクリーンパネルなどと統合することができる。モニタおよび/またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータの場合のように、コンピューティング装置110が組み込まれるハウジングに物理的に結合できることに留意されたい。さらに、コンピューティング装置110のようなコンピュータは、出力周辺インターフェース194などを介して接続できるスピーカ195およびプリンタ196などの他の周辺出力装置を含むこともできる。
コンピュータ110は、リモートコンピュータ180など、1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたはその他の共通ネットワークノードであってもよく、通常は上記でパーソナルコンピュータ110に関連して説明されている要素の多くまたはすべてを含んでいるが、図1においては記憶装置181のみが示されている。図1に示されている論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含んでいるが、他のネットワークを含むこともできる。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般化している。
LANネットワーク環境に使用される場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境に使用される場合、コンピュータ110は通常、モデム172またはインターネットなどのWAN173にわたる通信を確立するための他の手段を含んでいる。モデム172は、内蔵または外付けであってもよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク化された環境において、コンピュータ110に関連して示されるプログラムモジュール、またはその部分は、リモート記憶装置に格納することもできる。限定的ではなく例示的に、図1では、リモートアプリケーションプログラム185をメモリ素子181に常駐するものとして示している。示されているネットワーク接続が模範的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されたい。
セキュリティクリティカルデータコンテナ
本発明は一般に、行われることになるデータの存在の検査/データの初期化クリティカルなものにすることなく、「クリティカリティ」を記述するメタデータがデータに添付されるシステムおよび方法を目的としている。本発明は主として、プラットフォームコードで用いるC#サンプルコードを使用して汎用(C++テンプレートと類似した.NETフレームワーク言語構造体)クラスコンテナを参照して説明されることが理解されよう。これらは唯一の例であるが、本発明は、.NET、C#、プラットフォームコードまたは本明細書に示される例に限定されることはない。本発明を実装する多数の方法は代替方法として実行可能であり、そのようなものとして、本発明は本明細書に使用される特定の例のいずれにも限定されるのではなく、一般にコンピューティングにおいて便宜および利点をもたらす様々な方法に使用することができる。
図2Aおよび図2Bは、信頼できないコードを含む他のコードによって呼び出すことのできる内部メソッドと共に、様々なオブジェクト204〜208を備えるプラットフォームコード202を示している。オブジェクト205を介して表されるように、一部のコードはノンクリティカルであり、一方オブジェクト204および206〜208を介して表されるように、その他のコードはセキュリティクリティカルである。意図せずして、ノンクリティカルコード205への呼び出しが次にオブジェクト208のコードのサブセットなどのセキュリティクリティカルコードを呼び出せるようにすることによってなど、内部メソッドが直接または間接的にクリティカリティルールに違反する方法があってはならないことは、容易に理解されよう。
本発明の態様によれば、クリティカルデータのためのコンテナが提供され、そこでメソッドが呼び出し側によって要求されている内容に応じてデータをクリティカルにするかどうか選択的に制御する。そのようなコンテナの1つは、getコンテナであり、クリティカルとマーク付けされるgetメソッドを含んでいる。それによりコードは、信頼できないコードがデータ値を取得する方法がないように検査される。
具体的には、Getコンテナの汎用クラスを使用することにより、クリティカルデータへのアクセスは、クリティカルとマーク付けされたクラスのプロパティを通じてのみ行うことができる。しかし、汎用クラスインスタンスをポイントする実際のフィールドはクリティカルである必要はなく、データの存在/初期化はクリティカルな方法で、つまりアプリケーションプログラムのアクセス権で実行するコードによって、コードから安全に検査することができる。したがって、本発明は、データの初期化または存在の検査をクリティカルにしながら、クリティカルとして追跡されることになるデータのコンテンツへのアクセスを可能にする。
一例として、クリティカルなリソースにアクセスを提供するデータなどの、クリティカルデータを考察する。信頼できないプログラムがこのデータを取得できる場合、クリティカリティのルールに違反する。しかし、データをクリティカルとしてマーク付けすることは、このクリティカルデータを伴っているすべてのオペレーションもクリティカルにする必要があることを分析ツールが要求するようになることを意味し、他のオペレーションがデータそのものを要求しておらず、データが存在するかどうかを検査する(例えばヌルチェック)だけの場合であっても、複雑さを増す。本発明のクリティカルコンテナを使用せずに値を取得する以下のサンプルコードを考察する。以下に示すように、変数_Barがクリティカルであるため、ヌルチェックもクリティカルである。
Figure 0005208367
本発明のコンテナは、Get要求とデータに関連するその他の要求との間を区別する方法を提供する。(図2Aでオブジェクト206によって表されている)Getクラスの実装を例示する、Getコンテナにおける以下のサンプルコード(C#)を考察する。
Figure 0005208367
図示されているように、コンテナ内のGetメソッドは、データ(_value)を取得することはセキュリティクリティカルであることを示すメタデータでマーク付けされ([SecurityCritical]タグ)、これにより、静的分析ツールは、信頼できないコードによるそのデータへのアクセスを可能にする欠陥があるかどうかを検出することになる。したがって、前述のファイルハンドル例において、分析ツールは、高い特権を備える信頼できるコードのみがファイルハンドルの値を取得できることを検査することになる
(図2Aでブロック210によって表される)宣言は以下のとおりである。
Figure 0005208367
(図2Aでブロック212によって表される)初期化は以下のとおりである。
Figure 0005208367
(図2Aでブロック214によって表される)クリティカルデータに到達する使用法は以下のとおりである。
Figure 0005208367
データ(値)ではなく、Getメソッドセキュリティクリティカルとしてマーク付けされているため、検査自体がクリティカルになることなしにデータは存在/初期化(例えばヌルチェックが行われる)を検査される。クリティカルとマーク付けされるメソッドの数が減少することによって、セキュリティの検討を必要とするプラットフォームコードの量を、大幅に減少させる。以下の例では、(図2Aでブロック216および217によって表される)ヌルの検査を行っている
Figure 0005208367
本発明のもう1つの態様によれば、コードがアクセス権を高めるかどうかを指示するためにブールまたはその他の変数が使用されている状況を処理するように、「Set」コンテナが提供される。そのようなデータの値はコードがアクセス権を高めるかどうかを制御するので、データを設定することはクリティカルになる。setメソッドを呼び出さない他のコード(例えばreadメソッド)は、値を変更できないので、クリティカルではない。Setコンテナの結果として、プラットフォームコード内のクリティカルメソッドの数も、大幅に減らされる。
例を比較することにより、本発明のクリティカルコンテナを使用せずにクリティカル値を設定することを考察する。以下に示すように、読み取りはクリティカルである。
Figure 0005208367
本発明のクリティカルコンテナの態様によれば、代わりにSetコンテナSecurityCriticalDataSetter(SCDS、図2Bでオブジェクト207によって表される)の以下のサンプルコードを考察する。
Figure 0005208367
このコードは、セキュリティクリティカルと見なされる値を設定するメソッドを含むことに留意されたい。その結果、setメソッドは、[SecurityCritical]メタデータでタグ付けされる。
(図2Bでブロック220によって表される)SecurityCriticalDataSetterの宣言は以下のとおりである。
Figure 0005208367
(図2Bでブロック222によって表される)初期化では、初期化により_isWindowsFontの値が設定され、そのためセキュリティクリティカルであることに留意されたい。これにより、信頼できないコードは、インストールされているWindows(登録商標)ベースのフォント以外を使用することができない。
Figure 0005208367
図2Bでブロック224によって表されるように、他のプラットフォームコードは_isWindowsFontの値を設定できることに留意されたい。そのようなコードもまた、セキュリティクリティカルのマーク付けをする必要がある。
_isWindowsFontの値を読み取る(取得する)ことはクリティカルとは見なされず、そのためオブジェクトのgetメソッドの使用はセキュリティクリティカルメタデータを含まないコードによって達成することができる(図2Bのブロック226および227によって表される)。
Figure 0005208367
図3は、データへのメソッドを介するアクセスがセキュリティクリティカルメタデータタグを介して制限される場合に、セキュリティクリティカルコードだけがセキュリティクリティカルデータコンテナ内のデータを使用できるようにするためプラットフォームコード202を評価する分析ツール330を示している。結果332は、セキュリティチームおよび/または開発者によって検討され、コード内の欠陥を除去することができる。
図4は、信頼できないコード440と共に稼働するコンパイル済みプラットフォーム402を示している。本発明のクリティカルコンテナの態様によれば、開発者がクリティカルデータをGetまたはSetコンテナに適切に配置したとすれば、信頼できないコード440は安全に収容されているデータに不正にアクセスして危険なオペレーションを実行することはできなくなる。例えば、コード、データおよび/またはメソッドがクリティカルな場合を指示するコンパイル済みコード402と共に属性等を保持することによって、危険なオペレーションの実行時検査を行うことが可能であることに留意されたい。
前述の詳細な説明から明らかなように、データのクリティカルな使用に対してデータに原則的にセキュリティクリティカルとマーク付けし、ノンクリティカルな使用にはマーク付けしないようにできるGetコンテナおよびSetコンテナが提供される。これは、使用とは無関係に全体としてデータにマーク付けするのではなく、コンテナ内の個々のメソッドにマーク付けすることにより達成される。したがって本発明は、検討を必要とするプラットフォームコードの量を減らし、プラットフォームコードにおいてセキュリティ問題が発見される可能性を高める。
本発明には、様々な変更および代替的な構成が可能であるが、その特定の説明されている実施形態は、図に示され詳細に説明されている。ただし、本発明を開示されている特定の形態に限定する意図はなく、むしろ、本発明の精神および範囲に含まれるすべての変更、代替構造、および等価物を網羅することを意図している。
本発明を組み込むことができるコンピューティング環境を一般的に示すブロック図である。 本発明の様々な態様によるsetおよびgetコンテナを含むプラットフォームコードを示す図である。 本発明の様々な態様によるsetおよびgetコンテナを含むプラットフォームコードを示す図である。 本発明の様々な態様によるセキュリティクリティカルデータコンテナでプラットフォームコードを分析するコード分析ツールを示すブロック図である。 本発明の様々な態様によるセキュリティクリティカルデータコンテナを有するコードに基づいてコンパイル済みプラットフォームコードで実行する信頼できないコードを示すブロック図である。
符号の説明
110 コンピュータ
141 ハードディスクドライブ
151 磁気ディスクドライブ
155 光ディスクドライブ

Claims (13)

  1. コンピューティングシステムにおいて、セキュリティ問題に対する確認を簡単化する、ダウンロードされたコードを実行することが可能なプラットフォームコードを構成する、コンピュータにより実行される方法において、
    プログラミング言語クラスが、信頼できないコードが前記プラットフォームコードの内部メソッドの呼出しを介して管理されていないコードを呼び出すことを含む危険なオペレーションを実行する可能性があるセキュリティクリティカルデータに対するコンテナを備えるステップであって、前記プログラミング言語クラスは前記コンテナの中セキュリティクリティカルデータと相互作用する複数のメソッドを含むステップと、
    前記プログラミング言語クラスのいずれかのデータフィールドに添付されたメタデータを使用して、前記コンテナのいくつかのメソッドをセキュリティクリティカルであると区別することによって、前記セキュリティクリティカルデータとのどの相互作用が要求されているかに応じて、前記セキュリティクリティカルなデータがセキュリティクリティカルなものとして取り扱われるかどうかを選択的に制御するステップであって、前記セキュリティクリティカルデータは、セキュリティクリティカルなデータへのアクセスが許可された高いアクセス権を持つメソッドを介してのみアクセス可能であって、
    前記クラスに関するプロパティを通して、前記セキュリティクリティカルデータにアクセスするメソッドを、セキュリティクリティカルであるメソッドとして前記メタデータを使用してマーク付けすることと、
    セキュリティクリティカルデータの存在または初期化が、前記セキュリティクリティカルデータへの現実のアクセスを行うことなしに非クリティカルな方法で確認され得るように、前記プログラミング言語クラスインスタンスをポイントする現実のフィールドアクセスするメソッドが、セキュリティクリティカルメソッドではないことを示すことと、を含む制御するステップと
    を備えることを特徴とする方法。
  2. 前記コンテナはgetコンテナを備え、前記セキュリティクリティカルデータは高いアクセス権でマーク付けされたgetメソッドを介して読み取られることのみが可能であって、データの存在または初期化の検査は高いアクセス権を持たないコードによって実行できることを特徴とする請求項1に記載の方法。
  3. 前記セキュリティクリティカルなデータは、不明なソースまたは信頼できないソースからダウンロードされたリソースを含むクリティカルリソースへのアクセスを提供するデータを含むことを特徴とする請求項2に記載の方法。
  4. 前記コンテナはsetコンテナを備え、前記セキュリティクリティカルデータは高いアクセス権でマーク付けされたsetメソッドを介してのみ設定され得ることを特徴とする請求項1に記載の方法。
  5. getメソッドをさらに備え、前記セキュリティクリティカルなデータは高いアクセス権を持たないコードによって前記getメソッドを介して読み取ることができることを特徴とする請求項4に記載の方法。
  6. 前記セキュリティクリティカルなデータは、不明なソースまたは信頼できないソースからダウンロードされたリソースを含むクリティカルリソースへのアクセスを提供するデータを含むことを特徴とする請求項5に記載の方法。
  7. 前記セキュリティクリティカルなデータは、アクセス権が他のコードによって高められるかどうかを示すブール値または変数を含むことを特徴とする請求項5に記載の方法。
  8. コンピュータシステムにおいて使用されるコンピュータプログラムであって、前記プログラムは、セキュリティ問題に対する確認を簡単化する、ダウンロードされたコードを実行することが可能なプラットフォームコードを構成する方法を実行し、前記コンピュータシステムは、プロセッサにおいて実行されたときに前記方法をコンピュータシステムに実施させるコンピュータ実行可能命令を記憶させた1つ以上のコンピュータ記憶媒体を含み、前記方法は、
    プログラミング言語クラスが、信頼できないコードが前記プラットフォームコードの内部メソッドの呼出しを介して管理されていないコードを呼び出すことを含む危険なオペレーションを実行する可能性があるセキュリティクリティカルデータに対するコンテナを備えるステップであって、前記プログラミング言語クラスは前記コンテナの中セキュリティクリティカルデータと相互作用する複数のメソッドを含むステップと、
    前記プログラミング言語クラスのいずれかのデータフィールドに添付されたメタデータを使用して、前記コンテナのいくつかのメソッドをセキュリティクリティカルであると区別することによって、前記セキュリティクリティカルデータとのどの相互作用が要求されているかに応じて、前記セキュリティクリティカルなデータがセキュリティクリティカルなものとして取り扱われるかどうかを選択的に制御するステップであって、前記セキュリティクリティカルデータは、セキュリティクリティカルなデータへのアクセスが許可された高いアクセス権を持つメソッドを介してのみアクセス可能であって、
    前記クラスに関するプロパティを通して、前記セキュリティクリティカルデータにアクセスするメソッドを、セキュリティクリティカルメソッドとして前記メタデータを使用してマーク付けすることと、
    セキュリティクリティカルデータの存在または初期化が、前記セキュリティクリティカルデータへの現実のアクセスすることなしに非クリティカルな方法で確認され得るように、前記プログラミング言語クラスインスタンスをポイントする現実のフィールドアクセスするメソッドが、セキュリティクリティカルメソッドではないことを示すことと、を含む制御するステップ
    備えていることを特徴とするプログラム。
  9. コンピュータシステムにおいて使用されるコンピュータプログラムであって、前記プログラムは、セキュリティ問題に対する確認を簡単化する、ダウンロードされたコードを実行することが可能なプラットフォームコードを構成する方法を実行し、前記コンピュータシステムは、プロセッサにおいて実行されたときに前記方法をコンピュータシステムに実施させるコンピュータ実行可能命令を記憶させた1つ以上のコンピュータ記憶媒体を含み、前記方法は、
    プログラミング言語クラスが、信頼できないコードが前記プラットフォームコードの内部メソッドの呼出しを介して管理されていないコードを呼び出すことを含む危険なオペレーションを実行する可能性があるセキュリティクリティカルデータに対するsetコンテナを備えるステップであって、前記プログラミング言語クラスは前記setコンテナの中セキュリティクリティカルデータと相互作用する複数のメソッドを含み、前記複数のメソッドはsetメソッドおよびgetメソッドを含むステップと、
    前記プログラミング言語クラスのいずれかのデータフィールドに添付されたメタデータを使用して、前記setコンテナのいくつかのメソッドをセキュリティクリティカルであると区別することによって、前記セキュリティクリティカルデータとのどの相互作用が要求されているかに応じて、前記セキュリティクリティカルなデータがセキュリティクリティカルなものとして取り扱われるかどうかを選択的に制御するステップであって、前記セキュリティクリティカルデータは、セキュリティクリティカルなデータへのアクセスが許可された高いアクセス権を持つメソッドを介してのみアクセス可能であって、
    前記setメソッドを、セキュリティクリティカルメソッドとして前記メタデータを使用してマーク付けすることと、
    前記getメソッドがセキュリティクリティカルメソッドではないと示すことと、を含む制御するステップとを備え
    前記セキュリティクリティカルデータが前記getメソッドを介して、高いアクセス権を持たないコードによって読み取られ、前記セキュリティクリティカルデータが前記setメソッドを介して、高いアクセス権を持つコードによって設定のみをされ得ることを特徴とするプログラム。
  10. 前記セキュリティクリティカルデータは、不明なソースまたは信頼できないソースからダウンロードされたリソースを含むクリティカルリソースへのアクセスを提供するデータを含むことを特徴とする請求項9に記載のプログラム。
  11. 前記セキュリティクリティカルデータは、アクセス権が他のコードによって高められるかどうかを示すブール値または変数を含むことを特徴とする請求項9に記載のプログラム。
  12. コンピュータシステムにおいて使用されるコンピュータプログラムであって、前記プログラムは、セキュリティ問題に対する確認を簡単化する、ダウンロードされたコードを実行することが可能なプラットフォームコードを構成する方法を実行し、前記コンピュータシステムは、プロセッサにおいて実行されたときに前記方法をコンピュータシステムに実施させるコンピュータ実行可能命令を記憶させた1つ以上のコンピュータ記憶媒体を含み、前記方法は、
    プログラミング言語クラスが、セキュリティクリティカルデータに対するgetコンテナを備えるステップであって、前記プログラミング言語クラスは前記getコンテナの中セキュリティクリティカルデータと相互作用する複数のメソッドを含み、前記複数のメソッドはgetメソッドを含むステップと、
    前記プログラミング言語クラスのいずれかのデータフィールドに添付されたメタデータを使用して、前記getメソッドをセキュリティクリティカルであると区別することによって、前記セキュリティクリティカルデータとのどの相互作用が要求されているかに応じて、前記セキュリティクリティカルなデータがセキュリティクリティカルなものとして取り扱われるかどうかを選択的に制御するステップであって、前記セキュリティクリティカルデータは、セキュリティクリティカルなデータへのアクセスが許可された高いアクセス権を持つメソッドを介してのみアクセス可能であって、
    前記getメソッドを、セキュリティクリティカルメソッドとして前記メタデータを使用してマーク付けすることと、
    前記プログラミング言語クラスインスタンスをポイントする現実のフィールドアクセスする1つ以上の他のメソッドが、セキュリティクリティカルメソッドではないことを示すことと、を含む制御するステップとを備え
    前記セキュリティクリティカルデータが前記getメソッドを介して、高いアクセス権を持つコードによって読み取られことのみが可能であり、データの存在の確認または初期化が高いアクセス権を持たないコードによって実行され得ることを特徴とするプログラム。
  13. 前記セキュリティクリティカルデータは、不明なソースまたは信頼できないソースからダウンロードされたリソースを含むクリティカルリソースへのアクセスを提供するデータを含むことを特徴とする請求項12に記載のプログラム。
JP2006019144A 2005-02-04 2006-01-27 セキュリティクリティカルデータコンテナ Expired - Fee Related JP5208367B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/051,808 2005-02-04
US11/051,808 US7600256B2 (en) 2005-02-04 2005-02-04 Security critical data containers

Publications (3)

Publication Number Publication Date
JP2006216038A JP2006216038A (ja) 2006-08-17
JP2006216038A5 JP2006216038A5 (ja) 2009-07-30
JP5208367B2 true JP5208367B2 (ja) 2013-06-12

Family

ID=36642771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006019144A Expired - Fee Related JP5208367B2 (ja) 2005-02-04 2006-01-27 セキュリティクリティカルデータコンテナ

Country Status (5)

Country Link
US (1) US7600256B2 (ja)
EP (1) EP1688856A3 (ja)
JP (1) JP5208367B2 (ja)
KR (1) KR101220014B1 (ja)
CN (1) CN1815483B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996866B2 (en) * 2009-12-22 2015-03-31 Microsoft Technology Licensing, Llc Unobtrusive assurance of authentic user intent
US10025688B2 (en) 2010-03-14 2018-07-17 Virtual Forge GmbH System and method for detecting data extrusion in software applications
US9659041B2 (en) * 2012-01-30 2017-05-23 Oracle International Corporation Model for capturing audit trail data with reduced probability of loss of critical data
EP2709033B1 (en) * 2012-09-17 2017-01-04 Virtual Forge GmbH System and method for detecting data extrusion in software applications

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69031191T2 (de) * 1989-05-15 1998-02-12 Ibm System zur Steuerung von Zugriffsprivilegien
GB9003112D0 (en) 1990-02-12 1990-04-11 Int Computers Ltd Access control mechanism
US5765152A (en) * 1995-10-13 1998-06-09 Trustees Of Dartmouth College System and method for managing copyrighted electronic media
US6047377A (en) * 1997-12-11 2000-04-04 Sun Microsystems, Inc. Typed, parameterized, and extensible access control permissions
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US20030037237A1 (en) * 2001-04-09 2003-02-20 Jean-Paul Abgrall Systems and methods for computer device authentication
JP2004110415A (ja) * 2002-09-18 2004-04-08 Toshiba Solutions Corp ソフトウェア開発支援装置とコンピュータプログラム
KR100968003B1 (ko) 2003-05-17 2010-07-07 마이크로소프트 코포레이션 보안 위험을 평가하는 메카니즘

Also Published As

Publication number Publication date
KR101220014B1 (ko) 2013-01-09
EP1688856A2 (en) 2006-08-09
CN1815483A (zh) 2006-08-09
JP2006216038A (ja) 2006-08-17
US7600256B2 (en) 2009-10-06
US20060179482A1 (en) 2006-08-10
CN1815483B (zh) 2012-10-10
KR20060089618A (ko) 2006-08-09
EP1688856A3 (en) 2006-09-06

Similar Documents

Publication Publication Date Title
US11216256B2 (en) Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior
Pistoia et al. A survey of static analysis methods for identifying security vulnerabilities in software systems
US7237236B2 (en) Method and apparatus for automatically determining optimum placement of privileged code locations in existing code
US8006233B2 (en) System and method for the automatic verification of privilege-asserting and subject-executed code
Brown et al. Finding and preventing bugs in javascript bindings
US20050055565A1 (en) Reviewing the security of trusted software components
US8375423B2 (en) Authenticating a source of a scripted code
Pistoia et al. Beyond stack inspection: A unified access-control and information-flow security model
Kulenovic et al. A survey of static code analysis methods for security vulnerabilities detection
JP7228751B2 (ja) 権限管理のための方法および装置、コンピュータ機器ならびに記憶媒体
Ernst et al. Boolean formulas for the static identification of injection attacks in Java
JP5208367B2 (ja) セキュリティクリティカルデータコンテナ
Black et al. Source code security analysis tool functional specification version 1.0
Holzinger et al. Hardening java’s access control by abolishing implicit privilege elevation
Tiwari et al. Malware detection in android application by rigorous analysis of decompiled source code
US7926105B2 (en) Using security-related attributes
JP2004005441A (ja) スクリプト処理装置、インタプリタ、スクリプト処理方法、スクリプト処理プログラム、およびスクリプトプログラム
Brutschy et al. Shamdroid: gracefully degrading functionality in the presence of limited resource access
Wang et al. iservice: Detecting and evaluating the impact of confused deputy problem in appleos
Xiong et al. Static taint analysis method for intent injection vulnerability in android applications
Dann et al. ModGuard: Identifying Integrity & Confidentiality Violations in Java Modules
Abbadini et al. Lightweight cloud application sandboxing
Klieber et al. Automated code repair based on inferred specifications
Kerschbaumer et al. Hardening firefox against injection attacks
Zhang et al. Automatic generation of vulnerability-specific patches for preventing component hijacking attacks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110812

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111114

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111212

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111215

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20120111

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120214

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20120525

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121128

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20121214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121214

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130110

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: 20130205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130220

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5208367

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees