JP2001159984A - サービス妨害攻撃を阻止するための装置および方法 - Google Patents

サービス妨害攻撃を阻止するための装置および方法

Info

Publication number
JP2001159984A
JP2001159984A JP2000273599A JP2000273599A JP2001159984A JP 2001159984 A JP2001159984 A JP 2001159984A JP 2000273599 A JP2000273599 A JP 2000273599A JP 2000273599 A JP2000273599 A JP 2000273599A JP 2001159984 A JP2001159984 A JP 2001159984A
Authority
JP
Japan
Prior art keywords
code
thread
censoring
identifier
frame
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.)
Pending
Application number
JP2000273599A
Other languages
English (en)
Inventor
William F Foote
ウィリアム・エフ.・フート
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2001159984A publication Critical patent/JP2001159984A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/20Point-of-sale [POS] network systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 スレッドを打ち切るための装置および方法を
提供すること。 【解決手段】 本発明の第1の態様では、不正を働いて
いるコードに関連付けられたスレッドスタックのフレー
ムが、そのスレッドスタックからポップされる。例外処
理コードは、例外処理を介してトラステッドコードフレ
ームをポップさせることにより、トラステッドコードの
実行を許可されるが、非トラステッドコードに対して
は、例外処理コードの実行は許可されない。本発明の第
2の態様では、不正を働いているコードに関連付けられ
た全スレッドの全スレッドスタックからフレームをポッ
プさせる。スレッドは一般に、不正を働いているコード
に関連付けられたスレッドと同じオブジェクトまたは同
じリソースを共有する場合において、不正を働いている
コードに関連していると見なされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にソフトウェ
アアプリケーションに関し、なかでも特に、オブジェク
トシステム内でスレッドを打ち切るための、方法および
装置に関する。
【0002】
【従来の技術】オブジェクトベースの環境では、サービ
ス要求を満足させるためにスレッドを使用することが多
い。スレッドは、ストレージリソースのスケッチ帳だと
考えられ、その本質は、コンピュータプログラムにおけ
る順次なシングル制御フローである。一般に、スレッド
または「制御のスレッド」は、独立して実行される中央
演算処理装置(CPU)命令またはプログラミング言語
のシーケンスである。各スレッドは、自分の実行スタッ
クを有しており、そのスタック上でメソッドのアクティ
ブ化が行われる。当業者には理解できるように、あるメ
ソッドがあるスレッドに対してアクティブ化されると、
そのスレッドの実行スタック上にアクティブ化がプッシ
ュされる(スタックに入れられる)。あるメソッドが非
アクティブ化されると、アクティブ化が実行スタックか
らポップされる(スタックから取り出される)。あるメ
ソッドのアクティブ化は別のメソッドのアクティブ化に
も繋がるため、実行スタックは先入れ後出しの方式で作
動する。
【0003】スレッドは自己終止するのが一般的だが、
実行中のスレッドを強制的に終止させることも可能であ
る。例えば、実行中のコードが「サービス妨害攻撃(de
nialof service attack)」をマウントしているスレッ
ドを、終止させることが可能である。サービス妨害攻撃
では、ローカルホストのリソース(例えばプロセッサお
よび/またはメモリリソース)が全てまたはほぼ全て使
用される。例として、特定のスレッドに関連付けられた
コードが、無限数のウィンドウを開く無限ループを開始
する場合が挙げられる。この例のコードは、そのコード
を実行中の特定のアプリケーション(またはコンピュー
タシステム全体)が、リソースの過度の消費が原因でク
ラッシュまたはフリーズするまで継続する。
【0004】サービス妨害攻撃は、一般に、不明のソー
スに源を発している非トラステッドコード(信用のおけ
ないコード:untrusted code)に関連付けられる。例え
ば、ダウンロードされたコンピュータプログラムには、
不明のプログラミングソースからのメソッドが含まれる
恐れがある。つまり、ダウンロードされたプログラムに
は、サービス妨害攻撃をマウントするように、作為的ま
たは非作為的に設計された、非トラステッドコードが含
まれる恐れがある。
【0005】このため、コードが不正を働き始めた場合
(例えば不合理な量のリソースを使用するなど)には、
そのコードに関連付けられたスレッドを、強制終了させ
ることが望ましい。これまでに考え出された解決策の1
つとして、「thread.destroy」が挙げられる。これは、
実装されてはいないものの、Java(商標)2SDK
(Java II Standard Development Kit)のリソースとし
て現在使用可能なものの1つである。thread.destroy
は、不正を働いているスレッドに関連付けられたスタッ
クに対し、その割り当てを解除することによって作用す
る。つまり、そのスレッドのスタックを、スレッドの実
行をスケジューリングするスケジューラから除外する。
【0006】この解決策が役立つ場合もあるが、threa
d.destroy が内部データ構造をクリーンアップ(終結処
理)しないことから、不正を働いているスレッドが更新
されて、不整合な状態になる恐れがある。つまり、不正
を働いているスレッドが、強制終了させられた際に内部
データ構造への書き込みを行っていたため、その内部デ
ータ構造が部分的にのみ満たされる恐れが生じる。例え
ば、不正を働いているスレッドが、印刷フラグを設定す
ることにより印刷機能を開始したが、印刷バッファへの
書き込みが、強制終了させられる前に行われなかった場
合が挙げられる。この例では、妥当な印刷データが印刷
バッファに書き込まれる前にスレッドが強制終了させら
れたため、thread.destroy によって、ガーベッジが印
刷される恐れが生じる。
【0007】別の解決策である「thread.stop」は、J
ava(商標)2SDKのリソースの1つとして使用可
能なものである。thread.stop が例外を投げると、実行
中のメソッドがその例外をキャッチして、実装されてい
る任意のクリーンアップコードを実行する。トラステッ
ドコード(信用のおけるコード:trusted code)は、ク
リーンアップルーチンを実施する(例えばfinally ブロ
ック内で)よう設計されているのが一般的であるが、非
トラステッドコードに対しては、このようなクリーンア
ッププロセスの実施を許可することはできない。つま
り、非トラステッドコードは、例外が投げられた状態で
も不正を働きつづける。例えば、例外が投げられると、
非トラステッドコードのfinally ルーチンもサービス妨
害攻撃をマウントする。thread.stop はまた、不整合な
データ構造をクリーンアップするためのメカニズムを何
ら提供しない。
【0008】
【発明が解決しようとする課題】以上からわかるよう
に、不正を働いているコードに関連付けられたスレッド
を強制終了させるための、改善された方法および装置が
望まれている。また、このようなスレッドをきちんと強
制終了させて、データ構造を整合性のある状態に保つこ
とも望まれている。
【0009】
【課題を解決するための手段およびその作用・効果】概
して本発明は、スレッドを打ち切るための装置および方
法を提供することにより、上述したニーズを満たすもの
である。本発明の第1の態様では、不正を働いているコ
ードに関連付けられたスレッドスタックのフレームが、
そのスレッドスタックからポップされる。例外処理コー
ドは、例外処理を介してトラステッドコードフレームを
ポップさせることにより、トラステッドコードの実行を
許可されるが、非トラステッドコードに対しては、例外
処理コードの実行は許可されない。本発明の第2の態様
では、不正を働いているコードに関連付けられた全スレ
ッドの全スレッドスタックからフレームをポップさせ
る。スレッドは一般に、不正を働いているコードに関連
付けられたスレッドと同じオブジェクトまたは同じリソ
ースを共有する場合に、不正を働いているコードに関連
していると見なされる。
【0010】一実施形態において、本発明は、トラステ
ッドコードまたは非トラステッドコードに関連付けられ
た複数のフレームを有するような、関連のスレッドスタ
ックを有したスレッドを、打ち切るための方法に関す
る。先ず、打ち切るべきスレッドのスレッドスタックの
中から、フレームを1つ選択する。選択されたフレーム
が非トラステッドコードに関連付けられている場合に
は、打ち切るべきスレッドのスレッドスタックから選択
されたフレームがポップされる。選択されたフレームが
トラステッドコードに関連付けられている場合には、打
ち切るべきスレッドのスレッドスタックから選択された
フレームに対して例外が投げられる。
【0011】好ましい一実施形態では、関連のスレッド
が打ち切られたスレッドスタックの各フレームについ
て、上述した方法を繰り返す。ある態様では、トラステ
ッドコードがサービス妨害攻撃を招く可能性は低く、非
トラステッドコードがサービス妨害攻撃をマウントして
いるか否かは不明である。別の態様では、非トラステッ
ドコードは、リソース使用量が不明である。さらに別の
態様では、非トラステッドコードは非トラステッドソー
スからダウンロードされたものである。最後の態様で
は、選択されたフレームに対して例外処理を行うことに
より、その選択されたフレームが、任意のクリーンアッ
プルーチンを完了することを許可される。
【0012】さらに別の実施形態において、本発明は、
トラステッドコードまたは非トラステッドコードに関連
付けられた複数のフレームを有するような、関連のスレ
ッドスタックを有したスレッドを打ち切るための命令を
有した、コンピュータ読み取り可能媒体に関する。この
ようなコンピュータ読み取り可能媒体は、(a)打ち切
るべきスレッドのスレッドスタックの中から、フレーム
を1つ選択するための、コンピュータコードと、(b)
選択されたフレームが非トラステッドコードに関連付け
られている場合は、打ち切るべきスレッドのスレッドス
タックから選択されたフレームをポップさせるための、
コンピュータコードと、(c)選択されたフレームが、
トラステッドコードに関連付けられている場合は、打ち
切るべきスレッドのスレッドスタックから選択された前
記フレームに対して例外処理を行うための、コンピュー
タコードと、を備えている。
【0013】別の態様において、本発明は、トラステッ
ドコードまたは非トラステッドコードに関連付けられた
複数のフレームを有するような、関連のスレッドスタッ
クを有したスレッドを打ち切るための、コンピュータシ
ステムに関する。このようなコンピュータシステムは、
打ち切るべきスレッドのスレッドスタックの中から、フ
レームを1つ選択するように構成された識別子と、選択
されたフレームが非トラステッドコードに関連付けられ
ている場合は、打ち切るべきスレッドのスレッドスタッ
クから選択されたフレームをポップさせ、選択されたフ
レームが、トラステッドコードに関連付けられている場
合は、打ち切るべきスレッドのスレッドスタックから選
択されたフレームに対して例外処理を行うように構成さ
れたフレームハンドラと、を備えている。
【0014】代替の実施形態では、1つまたはそれ以上
のスレッドを打ち切るための方法を開示する。各スレッ
ドは、1つまたはそれ以上のコードセットを実行し、そ
のうち少なくとも1つのコードセットが、不正を働いて
いると識別されて打ち切り識別子に関連付けられてい
る。少なくとも1つのコードセットは、1つまたはそれ
以上のチェックポイントを有する。不正を働いているコ
ードの打ち切り識別子は、打ち切り手続きを実施すべき
ことを示すように設定されている。そして、打ち切り識
別子に関連付けられたコードセットを有する実行中のス
レッドが打ち切られる。
【0015】代替の一実施形態において、打ち切り識別
子に関連付けられた実行中のスレッドの打ち切りは、実
行が打ち切りチェックポイントに到達し、実行中のコー
ドセットが不正を働いているコードセットに関連付けら
れた打ち切り識別子に関連付けられている場合に、その
実行中のコードセットに対して例外処理を行うことによ
り実施される。打ち切りチェックポイントが存在しない
場合は、実行中のスレッドに関連付けられたコードセッ
トの実行が継続する。
【0016】別の実施形態において、打ち切り識別子に
関連付けられた実行中のスレッドのさらなる打ち切り
は、実行中のコードセットが例外処理コードを含んでい
る場合に、例外処理コードより前に打ち切りチェックポ
イントが存在するか否かを決定することにより実施され
る。実行中のコードセットが例外処理コードを含み、そ
の例外処理コードより前に打ち切りチェックポイントが
存在する場合は、例外処理コードの実行が禁止される。
好ましい一実施形態では、例外処理コードは、不正を働
いているコードセットに関連付けられた打ち切り識別子
に関連付けられている場合にのみ禁止される。
【0017】別の態様において、本発明は、1つまたは
それ以上のスレッドを打ち切るための命令を含んだコン
ピュータ読み取り可能媒体に関する。各スレッドは、1
つまたはそれ以上のコードセットを実行する。そのうち
少なくとも1つのコードセットが、不正を働いていると
識別されて打ち切り識別子に関連付けられ、少なくとも
1つのコードセットが、そのコードセットに挿入された
1つまたはそれ以上のチェックポイントを有する。コン
ピュータ読み取り可能媒体は、不正を働いているコード
の打ち切り識別子を、打ち切り手続きが実施されること
を示すように設定するための、コンピュータコードと、
打ち切り識別子に関連付けられたコードセットを有する
実行中のスレッドを打ち切るための、コンピュータコー
ドと、を備える。
【0018】別の実施形態において、本発明は、1つま
たはそれ以上のスレッドを打ち切るように構成されたコ
ンピュータシステムに関する。各スレッドは、1つまた
はそれ以上のコードセットを実行し、そのうち少なくと
も1つのコードセットが、不正を働いていると識別され
て打ち切り識別子に関連付けられる。少なくとも1つの
コードセットは、そのコードセットに挿入された1つま
たはそれ以上のチェックポイントを有する。コンピュー
タシステムは、打ち切り手続きが実施されることを示す
ように、不正を働いているコードの打ち切り識別子を設
定するように構成された、打ち切り標識と、打ち切り識
別子に関連付けられたコードセットを有する実行中のス
レッドを打ち切るように構成された、スレッド実行子
(executioner)と、を備える。
【0019】以上に挙げた本発明の実施形態に関連し
て、数々の利点がもたらされる。例えば、不正を働いて
いるコードに関連付けられたメソッドフレームがポップ
され、そのポップされたフレームが非トラステッドコー
ドに関連付けられている場合は、例外処理の実行が禁止
される。このため、非トラステッドコードが、例外処理
コードを通じて不正を働き続けるのを禁止することがで
きる。反対に、トラステッドコードは、関連のスレッド
を打ち切るのに先立って、例外処理(例えばクリーンア
ップルーチン)の実施を許可される。このため、内部デ
ータ構造が不整合な状態で残される可能性が最小限に抑
えられる。また、ある実施形態では、同じリソースを共
有する全てのスレッドが打ち切られる。このため、ある
スレッドの打ち切りによって、その共有リソースが不整
合な状態で残された場合でも、同共有リソースに関連付
けられた他のスレッドも同様に打ち切られるため、これ
らの他のスレッドが同リソースにアクセスするのも禁止
することができる。
【0020】以下に続く詳細な説明と添付した種々の図
面とから、本発明の上述したおよびその他の利点がいっ
そう明らかになる。
【0021】
【発明の実施の形態】次に、本発明の特定の実施形態に
関して詳細な説明を行う。以下では、本発明を特定の実
施形態との関連のもとで説明するが、これは、本発明を
これらの実施形態に限定することを意図するものではな
い。反対に、添付した特許請求の範囲に開示された本発
明の精神および範囲の範囲内で考え付くことができる、
種々の変更、修正、および代替案をも含むことを意図し
ている。以下の説明では、本発明の完全な理解を促すた
めに多くの項目を特定している。しかしながら、本発明
は、これらの項目の一部または全てを特定しなくても実
施することが可能である。そのほか、本発明を不必要に
不明瞭化するのを避けるため、周知のプロセス操作およ
び/または構造の説明は省略した。
【0022】本発明は一般に、スレッドを打ち切るため
の方法および装置に関する。本発明の第1の態様では、
不正を働いているコードに関連付けられたスレッドスタ
ックのフレームが、そのスレッドスタックからポップさ
れる。スレッドスタックのフレームをポップすることに
より、不正を働いている関連のスレッドが打ち切られ
る。以下では、不正を働いているスレッドスタックのフ
レームをポップするためのプロセスを、図1Aおよび図
1Bとの関連のもとで説明する。本発明の第2の態様で
は、不正を働いているコードに関連した全スレッドの全
スレッドスタック上からフレームがポップされる。スレ
ッドは一般に、不正を働いているコードに関連付けられ
ているスレッドと、同じオブジェクトまたは同じリソー
スを共有する場合に、不正を働いているコードと関連し
ていると見なされる。
【0023】先ず、シングルスレッドを打ち切るための
メカニズムを、図1Aおよび図1Bとの関連のもとで説
明する。図1Aは、スレッドスタック100の概略を示
した図である。実行中の各スレッドは、シングルスレッ
ドスタックに対応するのが通常である。各スレッドスタ
ックは、複数のスタックフレーム102を有する。特定
のスレッドスタックの各スタックフレーム102は、そ
の特定のスレッドスタックに関連付けられた個々のスレ
ッドに含まれる、個々のメソッドにそれぞれ対応する。
スレッドフレームは通常、関連のメソッドによって使用
される複数のパラメータを格納するための、操作スタッ
ク(未図示)を有する。これらのパラメータは、例えば
定数値および/または変数値を含むことができる。
【0024】また、メソッドがアクティブ化されるに伴
って、対応するフレームが関連のスレッドスタックの最
上部に加えられる。同じスレッドの他のメソッドがアク
ティブ化される(例えば前述のメソッドによって作成さ
れる)に伴って、それらに対応するフレームもまた、前
のスタックフレームに続いてスレッドスタックの最上部
に加えられる。このため、アクティブ化されたメソッド
は、スレッドスタック内で互いの上へ上へと積層してい
く。アクティブ化される最後のメソッドが終了または非
アクティブ化されると、それに対応するスタックフレー
ムが、フレームの最上部からポップされる。すると、前
にアクティブ化されたメソッドが実行を完了する。そし
て、このメソッドは非アクティブ化され、スレッドスタ
ックからポップされる。
【0025】簡単のため、各スタックフレーム102
を、トラステッドコードフレーム(例えば102e)ま
たは非トラステッドコードフレーム(例えば102d)
のいずれかとして定義しても良い。トラステッドコード
は一般に、既知のソースに源を発したまたは既知のプロ
グラマによって設計された、任意のコードを含む。つま
り、トラステッドコードは、その設計元が既知である
か、および/またはローカルクライアント上に実装され
るに先立ち一通りのテストを経ている。トラステッドコ
ードは、サービス妨害攻撃を招く可能性が低く、例え
ば、仮想マシンとともに配送される任意のシステムメソ
ッドを含むことができる。
【0026】一方の非トラステッドコードは、ソースお
よび/または設計者が不明である任意のコードを有する
のが一般的である。非トラステッドコードの書かれ方ま
たは機能の仕方を知ることは容易でなく、このため非ト
ラステッドコードのリソースの使用状況もやはり不明で
ある。非トラステッドコードによってローカルリソース
に過度のサブスクリプションを行うと、サービス妨害攻
撃を招く原因となる。例えば、ローカルホストと提携し
ていない任意のリモートサイトからローカルホストにダ
ウンロードされたコードは、全て非トラステッドコード
であるのが通常である。特に、ウェブページにアクセス
した場合は、ローカルホストにダウンロードされた非ア
クセスページに関連付けられたアプレットコードは、非
トラステッドの部類に入るのが通常である。ダウンロー
ドされたコードが、ハッカや無資格のプログラマなどの
信頼できないソースに源を発している場合、そのコード
は非トラステッドコードである。すなわち、非トラステ
ッドコードは、ローカルホストまたは特定のアプリケー
ションプログラムに対するサービス妨害攻撃をマウント
するように、作為的または非作為的に設計されたコード
である。
【0027】本発明は一般に、スレッドを打ち切って、
非トラステッドメソッドをスレッドスタックから単純に
ポップさせるための、メカニズムを提供する。トラステ
ッドメソッドもまた、その実行中に例外を投げることに
よってスタックからポップされる。トラステッドコード
がポップされると、非トラステッドコードがポップされ
た場合とは対照的に、そのポップされたメソッドに関連
付けられた例外処理メソッドの実行が許可される。例外
処理メソッドは、例えば内部データ構造への書き込みを
終了して、その内部データ構造が不整合な状態で残らな
いようにする。一方、非トラステッドコードに関連付け
られた例外コードは、さらなるダメージ(例えば不正を
働く他のスレッドを作成するなど)を引き起こさない保
証がないために、実行を許可されない。このため、非ト
ラステッドコードの実行中に例外が投げられることはな
い。
【0028】図1Bは、不正を働いているスレッドを打
ち切るためのプロセス150を、本発明の第1の実施形
態に従って示した流れ図である。先ず、操作152にお
いて、最上部のフレームをポップさせる。第1のフレー
ムをポップさせるのは、このフレームが、不正を働いて
いるコードに関連付けられているためである。このた
め、図1Aの非トラステッドコードフレーム102a
が、スレッドスタックの最上部からポップされる。もち
ろん、同じスレッドスタックの最下部のフレームがポッ
プされても良く、これは、スレッドスタックがどのよう
に構成されているかに依存する。フレームは、任意の適
切なメカニズムによってポップされることが可能であ
る。例えば、ローカルオペレーティングシステムおよび
仮想マシンには、同機能が提供されているのが通常であ
る。
【0029】次いで、操作154において、スタックが
空か否かを決定する。つまり、スレッドスタック全体を
アンワインドする(例えば各メソッドフレームをポップ
させる)ことにより、スレッドが完全に打ち切られたか
否かを決定する。スタックが空でない場合は、操作15
6において、次のフレームがトラステッド(信用がおけ
る)か否かを決定する。図1Aの例では、次のフレーム
はトラステッドコードフレーム102bである。このた
めこの実施例では、次の操作158において例外が投げ
られる。上述したように、例外が投げられると、トラス
テッドメソッドの例外処理コードが、その例外をキャッ
チしてあらゆる必要なクリーンアップルーチンを実施す
るため、データ構造が不整合な状態で残される可能性が
低くなる。トラステッドコードの例外処理コードまたは
クリーンアップコードが実行されると、そのトラステッ
ドコードフレームもまたポップされる。そして操作15
4において、スタックが空か否かを再び決定する。スタ
ックが空でない場合は、操作156において、次のフレ
ームがトラステッド(信用がおける)か否かを再び決定
する。
【0030】次のフレームがトラステッドでない(信用
がおけない)場合は、そのフレームは、操作152にお
いて単純にポップされる。非トラステッドフレームが単
純にポップされるのに対し、トラステッドコードフレー
ムでは例外が投げられる。フレームがポップされる(直
接ポップされるか、または直接でなく例外の投げること
によるかに関わらず)結果、ポップされたコードフレー
ムに関連付けられた、あらゆるロックオブジェクトが解
除される。全てのコードフレームがポップされた後、操
作160においてスレッドが終了する。
【0031】図1Bに示された、不正を働くスレッドを
強制終了させるためのメカニズムは、一定の条件下(例
えば、不正を働いているのがシングルスレッドであり、
不整合な状態で残される共有オブジェクトが存在しない
場合)では十分に機能するが、協同し合って不正を働く
関連のスレッド全てを強制終了させることはできない。
例えば、各スレッドがサービス妨害攻撃をマウントする
ように設計されているマルチプルスレッドに、あるアプ
レットが関連付けられている場合が挙げられる。そのう
ち不正を働くスレッドが1つ打ち切られると、他の関連
のスレッドは、打ち切られたスレッドの分を穴埋めし
て、別のサービス妨害攻撃をマウントする。さらに、複
数のスレッドが同じリソース(例えば同じオブジェク
ト)を共有する場合もある。このため、シングルスレッ
ドを強制終了させると、同じオブジェクトを使用する他
のスレッドには、不整合な状態の共有オブジェクトが残
されることになる。このため、同じリソースまたはオブ
ジェクトを使用するスレッドを、不正を働くスレッドと
して全て打ち切ることが望ましいと考えられる。
【0032】図2は、関連の複数のスレッドを打ち切る
ためのプロセス200を、本発明の第2の実施形態に従
って示した流れ図である。先ず操作202において、同
じオブジェクトを共有できる各コードセットに対してリ
ソースコンテキスト構造の形成および更新を行う。この
リソースコンテキスト構造は一般に、同じリソースまた
はオブジェクトを共有できる1つまたはそれ以上のコン
ピュータプログラムからコードを参照するための、メカ
ニズムを提供する。このため、実行中のスレッドのコー
ドは、特定のリソースコンテキスト構造に関連付けられ
ている可能性がある。
【0033】リソース構造が形成されたら、続く操作2
04においてコードを受信する。例えば、アクセスされ
たワールドワイドウェブページに関連付けられたアプレ
ットが、リモートサーバからローカルクライアントにダ
ウンロードされる。すると操作206において、受信さ
れたコード内の適切な位置に打ち切りチェックポイント
が挿入される。この打ち切りチェックポイントは、任意
の適切なメカニズムによって挿入されて良い。例えば、
特定のアプレットのクラスがJava仮想マシンにロー
ドされた、または同マシンによってインスタンス化され
た場合は、そのクラスファイル内にチェックポイントが
挿入される。
【0034】チェックポイントが挿入されると(もしあ
れば)、1つまたはそれ以上のコードセット(例えばメ
ソッド)が実行される。コードの実行が打ち切りチェッ
クポイントに到達すると、受信されたコードの実行が中
断され、実行中のそのコードまたはスレッド上で打ち切
りを実施するべきか否かが決定される。打ち切りが開始
された場合には、打ち切りチェックポイントに続く残り
のコードが実行されることはない。
【0035】打ち切りチェックポイントは、ダウンロー
ドされたコードのうち、不正を働く恐れがあるどのコー
ドにも先行するような非トラステッドコード内に挿入さ
れる。例えば、Java(商標)ベースのコードの場
合、打ち切りチェックポイントは、try ブロックの先
頭、finally ブロックの先頭、catch ブロックの先頭、
およびfinalizer ブロックの先頭に挿入される。これら
のブロックに関しては、図5と関連させて後ほど詳述す
るものとする。チェックポイントは、あらゆる逆方向ブ
ランチコードより前に挿入されて、無限ループの発生を
防ぐ。また、チェックポイントは、例えば100〜10
00コード行ごとなどの、一定間隔ごとに挿入されても
良い。
【0036】打ち切りチェックポイントが挿入される
と、続く操作208において、不正を働いているコード
が存在するか否かを決定する。不正を働いているコード
が存在する場合は、操作212において、不正を働いて
いるそのコードのリソースコンテキストに関連付けられ
た全てのスレッドに対し、打ち切りの手続きを実施す
る。関連スレッドの打ち切りは、任意の適切な方法で実
施することができる。関連のスレッドを打ち切るための
メカニズムの1つを、図3と関連させて以下で説明す
る。打ち切りの手続きが実施された後、または不正を働
いているコードが存在しない場合は、プロセス200が
繰り返される。
【0037】図3は、図2の打ち切り手続き212を、
本発明の一実施形態に従って示した流れ図である。不正
を働いているコードに関連付けられた複数のスレッド
(例えば、同じリソースコンテキストを共有する複数の
スレッド)の打ち切りは、関連のスレッドを識別し、さ
らに同スレッドのリソースコンテキストに関連付けられ
た識別子を使用して、同スレッドを打ち切る必要がある
ことを通信することにより、実施されるのが一般的であ
る。これら関連のスレッドは、トラステッドコードおよ
び非トラステッドコードの任意の組み合わせを有するこ
とができる。トラステッドコードが実行および完了を許
可される一方で、非トラステッドコードの実行は、挿入
された打ち切りチェックポイントに到達した時点で停止
される。実行が打ち切りチェックポイントに到達し、関
連のリソースコンテキストが打ち切りの必要を示した場
合は、例外が投げられて、実行中のメソッドのフレーム
が関連のスレッドスタックからポップされる。つまり、
トラステッドフレームはトラステッドメソッドの通常実
行後にポップさせ、非トラステッドフレームは関連の非
トラステッドメソッドの実行に先立って強制的にポップ
させることにより、複数の関連スレッドのスレッドスタ
ックを取り除く。
【0038】図3に示されるように、先ず操作302に
おいて、あるコードセットが不正を働いていることが識
別される。この識別は、任意の適切な方法により実施す
ることができる。例えば、特定リソースの限界に近づき
つつある実行コードは、全て不正を働いていると識別さ
れる。例えば、あるメソッドがかなり多数のウィンドウ
をウェブブラウザプログラムで開いており、このウェブ
ブラウザの最大ウィンドウ数が50であるような場合が
挙げられる。つまり、このウェブブラウザは、50を超
えるウィンドウを扱うことができない(例えば開いたウ
ィンドウ数が50を超えるとクラッシュする)。この場
合、このメソッドの関連コードは、開いたウィンドウ数
が25を超えると不正を働いていると識別される。
【0039】次いで操作304において、リソースコン
テキストが、不正を働いているコードに関連付けられて
いることが識別される。すると操作306において、ス
レッドが、識別されたリソースコンテキストからコード
を実行していることが識別される。リソースコンテキス
トとスレッドとの関連付けを行い、どのリソースコンテ
キストがどのスレッドに関連付けられているかを識別す
るためのメカニズムは、上述したウィリアム・F・フッ
トによる米国特許出願で説明されている。続く操作30
8では、不正を働いているリソースコンテキストに関連
付けられた打ち切りフラグが設定される。
【0040】次に操作310において、識別された各ス
レッドに割り込みが送信される。各スレッドへの割り込
みの送信はオプションで行われる。しかしながら、スレ
ッドがデータを要求している場合(例えばソケットを介
してネットワークに向けて)は、割り込みを送信するこ
とが望ましい。スレッドが入出力データを要求している
場合、トラステッドコードは、実行に移って低速で(例
えば低速のリモートサイトから)入出力データにアクセ
スする。割り込みは、入出力データの転送全てに割り込
むように働くのが一般的である。
【0041】次いで各スレッドは、操作312において
実行および打ち切りを順に行う。そして打ち切り手続き
212が終了する。つまり各スレッドは、事前に挿入さ
れた打ち切りチェックポイントが実行コードに到達する
までメソッドを実行する。実行メソッドまたはコード
は、それが不正を働いているスレッドと同じリソースコ
ンテキスト構造に関連付けられている場合は、打ち切り
チェックポイントに到達した時点で打ち切りを実施し、
それ以外の場合は実行を継続する。
【0042】図4は、図3のうち、スレッドの実行およ
び打ち切りを順に行う操作312を、本発明の一実施形
態に従って示した流れ図である。先ず、操作402にお
いてコードが実行される。次いで操作404において、
打ち切りのためのチェックポイントが存在するか否かを
決定する。チェックポイントが存在しない場合は、コー
ドは操作402で実行を継続する。もちろん、打ち切り
チェックポイントの存在を決定する操作404は、操作
402でどのコードを実行するのにも先立って実施され
ても良い。
【0043】チェックポイントが存在する場合は、操作
406において、実行中のメソッドまたはコードに対応
する(responsible for)リソースコンテキストが識別
される。リソースコンテキストとスレッドとの関連付け
を行い、どのリソースコンテキストがどのスレッドに関
連付けられているかを識別するためのメカニズムは、上
述したウィリアム・F・フットによる米国特許出願で説
明されている。続く操作408では、識別されたリソー
スコンテキストに打ち切りフラグが設定されているか否
かを決定する。打ち切りフラグが設定されていない場合
は、コードは操作402で実行を継続する。
【0044】打ち切りフラグが設定されている場合は、
操作410において打ち切り例外が投げられる。つま
り、スタックフレームがポップされる。次いで、操作4
12において例外の処理が行われる。この例外処理の手
続きに関しては、図5と関連させて詳しく説明するもの
とする。一般に、トラステッドコードは、例外が投げら
れると例外処理コードの実行を許可されるが、非トラス
テッドコードは、全ての例外処理コードに先立って打ち
切りチェックポイントを有するため、提起された例外処
理コードの実行は禁止される。
【0045】全ての例外を処理した後、操作414にお
いて、別の例外を投げて次のスタックフレームをポップ
させる。次いで操作416において、そのスレッドスタ
ックが空か否かを決定する。スタックが空でない場合
は、操作410で次のフレームのために投げられた例外
を、操作412で処理する。スタックが空である場合
は、そのスレッドに関連付けられたフレームが、スレッ
ドのスタックから全てポップされたことを示しているた
め、操作418においてスレッドが終了する。
【0046】図5は、図4のうち例外処理を行う操作4
12を、本発明の一実施形態に従って示した流れ図であ
る。Java(商標)ベースのシステムにおいて、例外
処理のためのコードは、try ブロックに続くcatch ブロ
ックまたはfinally ブロックの形で表される。Try ブロ
ックは、例外が投げられると停止するコードセットまた
はメソッドを含む。Catch ブロックは、先行する関連の
try ブロックからのコードを実行中に投げられた、特定
の例外に対して実行されるコードを含む。Finally ブロ
ックは、関連のtry ブロックに対して投げられた、特定
の例外に対応するcatch ブロックが存在しない場合に実
行されるコードを含む。
【0047】このため、例外処理中に先ず行われるの
は、操作502において、ポップされたフレームに関連
付けられたtry ブロックが存在するか否かを決定するこ
とである。つまり、例外を投げるのに先立って実行され
ていたコードが、投げられたその例外を処理するための
catch ブロックおよび/またはfinally ブロックを従え
たtry ブロックに関連付けられる。Try ブロックが存在
しない場合は、例外処理は不要であり、例外処理の操作
412は終了する。そして、プロセスは図4の操作41
4に進み、別の例外を投げて次のスタックフレームをポ
ップさせる。
【0048】Try ブロックが存在する場合は、操作50
8において、現行の例外をキャッチするcatch ブロック
が存在するか否かを決定する。現行の例外をキャッチす
るcatch ブロックが存在する場合は、操作510におい
て、実行ポインタをcatch ブロックの頭に設定する。Ca
tch ブロックが打ち切りチェックポイントからスタート
する場合は、プロセスは操作512から図4の操作40
6に戻る。コードが非トラステッドであれば、打ち切り
チェックポイントが存在する。すると、図4の操作40
6において、catch ブロックに対するリソースコンテキ
ストが識別され、もし識別されたリソースコンテキスト
内に打ち切りフラグが設定されているならば、操作40
8において例外が投げられる。
【0049】再び図5に戻り、catch ブロックが打ち切
りチェックポイントからスタートしない場合は、図4の
操作402において、catch ブロックのコードが実行さ
れる。Catch ブロックは、クリーンアップコードを有す
るのが通常である。Catch ブロックコードは、実行中の
コードが、打ち切りチェックポイントを挿入されていな
くて信用がおける(トラステッドである)場合に実行さ
れる。もしチェックポイントコードに関連付けられたリ
ソースコンテキストの打ち切りフラグが設定されている
ならば、この実行は、図4の操作410で別のチェック
ポイントが例外を投げることをトリガするまで継続す
る。
【0050】図5に示されるように、現行の例外をキャ
ッチするcatch ブロックが存在しない場合は、操作51
6において、現行のtry ブロックに関連付けられたfina
llyブロックが存在するか否かを決定する。Finally ブ
ロックが存在する場合は、操作518において、実行ポ
インタをfinally ブロックの頭に設定する。Catch ブロ
ックの場合と同様に、finally ブロックが打ち切りチェ
ックポイントからスタートする場合は、プロセスは操作
512から図4の操作406に戻り、finallyブロック
に対するリソースコンテキストが識別される。すると、
もし関連の打ち切りフラグが設定されているならば、操
作410において例外が投げられる。
【0051】Finally ブロックが打ち切りチェックポイ
ントからスタートしない場合は、プロセスは操作514
から図4の操作402に戻り、コードの実行を継続す
る。実行が非トラステッドコードに到達すると、操作4
04において打ち切りチェックポイントが発見され、も
し関連の打ち切りフラグが設定されているならば、操作
410において例外が投げられる。図5の操作516に
おいて、現行のtry ブロックに関連付けられたfinally
ブロックが存在しない場合は、例外処理412が終了
し、図4の操作414において次のスタックフレームが
ポップされる。
【0052】図6は、本発明を実現するのに適した、典
型的な汎用コンピュータシステムを示した図である。コ
ンピュータシステム1030は、一次ストレージデバイ
ス1034(読み取り専用メモリまたはROMが典型
的)と、一次ストレージデバイス1036(ランダムア
クセスメモリまたはRAMが典型的)と、を含んだメモ
リデバイスに結合された、任意数のプロセッサ1032
(中央演算処理装置またはCPUとも呼ばれる)を備え
る。このコンピュータシステムは、任意の適切な形を採
ることができる。例えばこのコンピュータシステムは、
ナビゲーションシステムまたはテレビ受像機のセットト
ップボックスに結合されていても良い。
【0053】コンピュータシステム1030、あるいは
より特定して複数のCPU1032は、当業者には明ら
かなように、仮想マシンをサポートするように構成され
ている。以下では、コンピュータシステム1030上に
サポートされた仮想マシンの一例を、図7との関連のも
とで説明する。当業者には周知のように、ROMが、デ
ータおよび命令を一方向的にCPU1032に伝送する
一方で、RAMは、データおよび命令を二方向的に伝送
するように使用されるのが通常である。CPU1032
は一般に、任意数のプロセッサを有することができる。
一次ストレージデバイス1034,1036は、ともに
任意の適切なコンピュータ読み取り可能媒体を含むこと
ができる。通常は大容量のメモリデバイスである二次ス
トレージ媒体1038もまた、CPU1032に二方向
的に結合して追加のデータ格納容量を提供している。大
容量メモリデバイス1038は、コンピュータコードや
データ等を含んだプログラムを格納するのに使用され
る、コンピュータ読み取り可能媒体である。代表的な大
容量メモリデバイス1038として、一次ストレージデ
バイス1034,1036より一般に低速な、ハードデ
ィスクやテープ等のストレージ媒体が挙げられる。大容
量メモリデバイス1038は、磁気もしくは紙のテープ
読み取り装置、またはその他周知な装置の形を採ること
ができる。ここで、適切な場合には、大容量メモリデバ
イス1038内に保持される情報が、RAM1036内
にその一部を占める仮想メモリとして標準方式で組み込
まれ得る点に、留意する必要がある。CD−ROM等の
特定の一次ストレージデバイス1034は、CPU10
32に一方向的にデータを引き渡すこともできる。
【0054】CPU1032はまた、1つまたはそれ以
上の入出力デバイス1040に結合されることもでき
る。ここで入出力デバイスとは、ビデオモニタ、トラッ
クボール、マウス、キーボード、マイクロフォン、タッ
チディスプレイ、トランスデューサカード読み取り装
置、磁気もしくは紙のテープ読み取り装置、タブレッ
ト、スタイラス、音声もしくは筆跡の認識装置、または
他のコンピュータ等のその他周知な入力デバイスを含
み、これらに限定されない。CPU1032は最終的
に、コンピュータに接続されても良いし、あるいは、例
えばインターネットやイントラネット等の通信網に、1
012として一般に示されるネットワーク接続を使用し
て結合されても良い。このようなネットワーク接続によ
り、CPU1032は、スレッドを打ち切るための上述
したメカニズムを実施する際に、ネットワークから情報
を受信したりネットワークに情報を出力したりできると
考えられる。これらの情報は、CPU1032で実行さ
れる命令のシーケンスとして表わされることが多く、例
えば搬送波に組み込まれたコンピュータデータ信号の形
で、ネットワークから受信されたりネットワークに出力
されたりすることができる。上述したデバイスおよび材
料は、コンピュータのハードウェア技術およびソフトウ
ェア技術の当業者にとって周知のものである。
【0055】前述したように、仮想マシンはコンピュー
タシステム1030上で実行される。図7は、図6のコ
ンピュータシステム1030によってサポートされた、
本発明を実現するのに適した仮想マシンを示した図であ
る。例えばJava(商標)プログラミング言語で書か
れたような、コンピュータプログラムが実行されると、
コンパイル時環境1105に内包されるコンパイラ11
20に、ソースコード1110が提供される。コンパイ
ラ1120は、ソースコード1110をバイトコード1
130に翻訳する。ソースコード1110は、ソフトウ
ェア開発者によって形成された時点でバイトコード11
30に翻訳されるのが一般的である。
【0056】バイトコード1130は一般に、例えば図
6のネットワーク1012等のネットワークを介して複
製、ダウンロード、もしくは分散されるか、または、図
6の一次ストレージ1034等のストレージデバイスに
格納される。上述した実施形態において、バイトコード
1130はプラットフォーム独立である。つまり、バイ
トコード1130は、適切な仮想マシン1140上で走
っているほぼあらゆるコンピュータシステム上で実行す
ることができる。
【0057】バイトコード1130は、仮想マシン11
40を内包するランタイム環境1135に提供される。
ランタイム環境1135は一般に、図6のCPU103
2等の、1つまたはそれ以上のプロセッサを使用して実
行される。仮想マシン1140は、コンパイラ1142
と、インタープリタ1144と、ランタイムシステム1
146と、を備える。バイトコード1130は、コンパ
イラ1142またはインタープリタ1144のいずれか
一方に提供される。
【0058】バイトコード1130がコンパイラ114
2に提供された場合、バイトコード1130に含まれた
メソッドはマシン命令にコンパイルされる。一実施形態
において、コンパイラ1142は、バイトコード113
0に含まれたメソッドのコンパイルをメソッドが実行さ
れる直前まで遅らせるタイプの、ジャストインタイムの
コンパイラである。バイトコード1130がインタープ
リタ1144に提供された場合、バイトコード1130
は、一度に1バイトコードづつインタープリタ1144
に読み込まれる。するとインタープリタ1144は、各
バイトコードを読み込む際に、そのバイトコードで定義
される操作を実施する。つまりインタープリタ1144
は、当業者の理解によれば、バイトコード1130をイ
ンタープリット(解釈)する。インタープリタ1144
は、バイトコード1130の処理と、そのコードに関連
付けられた操作の実施とを、ほぼ連続して行うのが一般
的である。
【0059】あるメソッドが、別のメソッドによって呼
び出されるか、あるいはランタイム環境1135から呼
び出され、そのメソッドがインタープリットされている
場合、ランタイムシステム1146は、メソッドを、イ
ンタープリタ1144で直接実行可能なバイトコード1
130シーケンスの形でランタイム環境1135から獲
得する。一方、呼び出されたメソッドが、コンパイルさ
れていないコンパイルドメソッドである場合、ランタイ
ムシステム1146は、メソッドをやはりバイトコード
1130シーケンスの形でランタイム環境1135から
獲得し、さらにコンパイラ1142をアクティブ化す
る。すると、コンパイラ1142はバイトコード113
0からマシン命令を生成し、得られたマシン言語の命令
がCPU1032によって直接実行され得る。一般に、
仮想マシン1140が終了した時点でマシン言語の命令
は廃棄される。仮想マシンの操作、またはより特定して
Java(商標)仮想マシンの操作に関しては、ティム
・リンドホルムおよびフランク・イェリンによる「Ja
va(商標)仮想マシン仕様」[ISBN 0-201-63452-X]に
おいて、より詳しく説明されている。よって、本明細書
中に引用として組み入れることとする。
【0060】以上、本発明の実施形態を数種類のみ取り
上げたが、本発明は、その精神または範囲を逸脱しない
範囲内ならば、その他多くの特定の形態によって実現す
ることが可能である。例えば、関連スレッドの打ち切り
を伴う操作はリオーダ(追加注文)が可能である。本発
明の精神または範囲を逸脱しない範囲内ならば、ステッ
プを省略または追加することも可能である。
【0061】本発明に従った、スレッドを強制終了させ
るための技術は、Java(商標)環境との関連のもと
で実現するのに特に適しているものの、一般に、任意の
適切なオブジェクトベース環境に適用することが可能で
ある。この技術は特に、プラットフォーム独立のオブジ
ェクトベース環境で使用するのに適している。また、こ
れらのメソッドが、分散オブジェクト指向システムにお
いても実現できる点を理解する必要がある。
【0062】したがって、以上で取り上げた実施形態
は、例示を目的としたものであって、本発明の内容を限
定するものではない。このため本発明は、本明細書で特
定した詳細に限定されることなく、添付した特許請求の
範囲の範囲および同等物の範囲内で、種々の変更を加え
ることが可能である。
【図面の簡単な説明】
【図1A】本発明の一実施形態に従って示したスレッド
スタックの概略図である。
【図1B】不正を働いているスレッドを打ち切るための
プロセスを、本発明の第1の実施形態に従って示した流
れ図である。
【図2】関連の複数のスレッドを打ち切るためのプロセ
スを、本発明の第2の実施形態に従って示した流れ図で
ある。
【図3】図2に示された打ち切りの手続きを、本発明の
一実施形態に従って示した流れ図である。
【図4】図3に示されたスレッドの実行および打ち切り
の操作を、本発明の一実施形態に従って示した流れ図で
ある。
【図5】図4の例外処理操作412を、本発明の一実施
形態に従って示した流れ図である。
【図6】本発明を実現するのに適した汎用コンピュータ
システムを示した図である。
【図7】本発明を実現するのに適した仮想マシンを示し
た図である。
【符号の説明】
100…スレッドスタック 102…スタックフレーム 1012…ネットワーク接続 1030…コンピュータシステム 1032…CPU 1034…一次ストレージ 1036…一次ストレージ 1038…二次ストレージ 1040…入出力デバイス 1105…コンパイル時環境 1110…ソースコード 1120…コンパイラ 1130…バイトコード 1135…ランタイム環境 1140…仮想マシン 1142…コンパイラ 1144…インタープリタ 1146…ランタイムシステム 1160…オペレーティングシステム
───────────────────────────────────────────────────── フロントページの続き (71)出願人 591064003 901 SAN ANTONIO ROAD PALO ALTO,CA 94303,U. S.A. (72)発明者 ウィリアム・エフ.・フート アメリカ合衆国 カリフォルニア州95014 クパーチノ,#ビー,ウォルナット・サ ークル・サウス,22441

Claims (36)

    【特許請求の範囲】
  1. 【請求項1】 トラステッドコードまたは非トラステッ
    ドコードに関連付けられた複数のフレームを有する関連
    のスレッドスタックを有したスレッドを、打ち切るため
    の方法であって、 (a)打ち切るべき前記スレッドの前記スレッドスタッ
    クの中から、フレームを1つ選択する工程と、 (b)前記選択されたフレームが非トラステッドコード
    に関連付けられている場合は、打ち切るべき前記スレッ
    ドの前記スレッドスタックから前記選択されたフレーム
    をポップさせる工程と、 (c)前記選択されたフレームが、トラステッドコード
    に関連付けられている場合は、打ち切るべき前記スレッ
    ドの前記スレッドスタックから前記選択された前記フレ
    ームに対して例外処理を行う工程と、を備えた方法。
  2. 【請求項2】 請求項1記載の方法であって、 前記選択されたフレームは、前記複数のフレームの最上
    部に位置するフレームである、方法。
  3. 【請求項3】 請求項1または2に記載の方法であっ
    て、さらに、 前記関連のスレッドを打ち切るように、前記スレッドス
    タックの各フレームに関して(a)から(c)を繰り返
    す工程、を備えた方法。
  4. 【請求項4】 請求項1ないし3のいずれかに記載の方
    法であって、 前記複数のフレームの前記非トラステッドコードおよび
    前記トラステッドコードは、メソッドの形式である、方
    法。
  5. 【請求項5】 請求項1ないし4のいずれかに記載の方
    法であって、 前記トラステッドコードは、サービス妨害攻撃を招く可
    能性が低く、前記非トラステッドコードは、サービス妨
    害攻撃をマウントしているか否かが不明である、方法。
  6. 【請求項6】 請求項1ないし5のいずれかに記載の方
    法であって、 前記非トラステッドコードは、リソース使用量が不明で
    ある、方法。
  7. 【請求項7】 請求項1ないし6のいずれかに記載の方
    法であって、 前記非トラステッドコードは、非トラステッドソースか
    らダウンロードされたものである、方法。
  8. 【請求項8】 請求項1ないし7のいずれかに記載の方
    法であって、 前記選択されたフレームに対して行う例外処理により、
    該フレームは、任意のクリーンアップルーチンを完了す
    ることを許可される、方法。
  9. 【請求項9】 請求項8記載の方法であって、 前記選択されたフレームは、任意のクリーンアップルー
    チンの完了後にポップされる、方法。
  10. 【請求項10】 請求項1ないし9のいずれかに記載の
    方法であって、 前記選択されたフレームは、仮想マシンによりポップさ
    れる、方法。
  11. 【請求項11】 請求項1ないし10のいずれかに記載
    の方法であって、さらに、 前記選択されたフレームが、不正を働いている任意のコ
    ードに関連付けられている場合に、該フレームをポップ
    させる工程、を備えた方法。
  12. 【請求項12】 トラステッドコードまたは非トラステ
    ッドコードに関連付けられた複数のフレームを有する関
    連のスレッドスタックを有したスレッドを、打ち切るた
    めの命令を格納した、コンピュータ読み取り可能媒体で
    あって、 (a)打ち切るべき前記スレッドの前記スレッドスタッ
    クの中から、フレームを1つ選択するための、コンピュ
    ータコードと、 (b)前記選択されたフレームが非トラステッドコード
    に関連付けられている場合は、打ち切るべき前記スレッ
    ドの前記スレッドスタックから前記選択されたフレーム
    をポップさせるための、コンピュータコードと、 (c)前記選択されたフレームが、トラステッドコード
    に関連付けられている場合は、打ち切るべき前記スレッ
    ドの前記スレッドスタックから前記選択された前記フレ
    ームに対して例外処理を行うための、コンピュータコー
    ドと、を格納するコンピュータ読み取り可能媒体。
  13. 【請求項13】 請求項12記載のコンピュータ読み取
    り可能媒体であって、さらに、 前記関連のスレッドを打ち切るように、前記スレッドス
    タックの各フレームに関して前記コンピュータコード
    (a)から(c)の命令を繰り返すための、コンピュー
    タコードを格納するコンピュータ読み取り可能媒体。
  14. 【請求項14】 トラステッドコードまたは非トラステ
    ッドコードに関連付けられた複数のフレームを有する関
    連のスレッドスタックを有したスレッドを、打ち切るた
    めのコンピュータシステムであって、 打ち切るべき前記スレッドの前記スレッドスタックの中
    から、フレームを1つ選択するように構成された識別子
    と、 前記選択されたフレームが非トラステッドコードに関連
    付けられている場合は、打ち切るべき前記スレッドの前
    記スレッドスタックから前記選択されたフレームをポッ
    プさせ、前記選択されたフレームが、トラステッドコー
    ドに関連付けられている場合は、打ち切るべき前記スレ
    ッドの前記スレッドスタックから前記選択された前記フ
    レームに対して例外処理を行うように構成されたフレー
    ムハンドラと、を備えたコンピュータシステム。
  15. 【請求項15】 請求項14記載のコンピュータシステ
    ムであって、 前記関連のスレッドを打ち切るように、前記識別子は、
    前記スレッドスタックの各フレームを選択し、前記フレ
    ームハンドラは、前記スレッドスタックの各フレームを
    ポップさせるかまたは該フレームに対して例外処理を行
    う、コンピュータシステム。
  16. 【請求項16】 それぞれが1つまたはそれ以上のコー
    ドセットを実行している1つまたはそれ以上のスレッド
    を打ち切るための方法であって、前記少なくとも1つの
    コードセットは、不正を働いていると識別されて打ち切
    り識別子に関連付けられており、前記少なくとも1つの
    コードセットは、1つまたはそれ以上のチェックポイン
    トを挿入されており、 前記方法は、 前記不正を働いているコードの前記打ち切り識別子を、
    打ち切り手続きを実施すべきことを示すように設定する
    工程と、 前記打ち切り識別子に関連付けられたコードセットを有
    する実行中のスレッドを、打ち切る工程と、を備えた方
    法。
  17. 【請求項17】 請求項16記載の方法であって、 前記打ち切り識別子に関連付けられた実行中のスレッド
    を打ち切る工程は、 打ち切りチェックポイントに到達し、前記実行中のコー
    ドセットが前記不正を働いているコードセットに関連付
    けられた前記打ち切り識別子に関連付けられている場合
    は、該実行中のコードセットに対して例外処理を行う工
    程と、 打ち切りチェックポイントが存在しない場合は、前記実
    行中のスレッドに関連付けられた前記コードセットの実
    行を継続する工程と、を備えた、方法。
  18. 【請求項18】 請求項17記載の方法であって、 前記打ち切り識別子に関連付けられた実行中のスレッド
    を打ち切る工程は、さらに、 前記実行中のコードセットが例外処理コードを有する場
    合は、該例外処理コードの前に打ち切りチェックポイン
    トが存在するか否かを決定する工程と、 前記実行中のコードセットが例外処理コードを有し、該
    例外処理コードの前に打ち切りチェックポイントが存在
    する場合は、該例外処理コードが実行されるのを禁止す
    る工程と、を備えた、方法。
  19. 【請求項19】 請求項18記載の方法であって、 前記例外処理コードは、前記不正を働いているコードセ
    ットに関連付けられた前記打ち切り識別子に関連付けら
    れている場合にのみ禁止される、方法。
  20. 【請求項20】 請求項16ないし19のいずれかに記
    載の方法であって、 前記打ち切り識別子は、同じリソースオブジェクトを使
    用する全てのコードセットに関連付けられたリソースコ
    ンテキスト構造に関連付けられている、方法。
  21. 【請求項21】 請求項20記載の方法であって、さら
    に、 前記不正を働いているコードセットに関連付けられた前
    記リソースコンテキストを識別する工程と、 前記識別されたリソースコンテキストの前記打ち切り識
    別子を、打ち切りが生じるべきであることを示すように
    設定する工程と、を備えた方法。
  22. 【請求項22】 請求項16ないし21のいずれかに記
    載の方法であって、さらに、 前記打ち切り識別子に関連付けられた実行中のコードセ
    ットを有したスレッドを識別する工程と、 前記識別されたスレッドに割り込みを送信する工程と、
    を備えた方法。
  23. 【請求項23】 請求項16ないし22のいずれかに記
    載の方法であって、さらに、 サービス妨害攻撃をマウントしている可能性がある任意
    のコードセットの前に、打ち切りチェックポイントを挿
    入する工程、を備えた方法。
  24. 【請求項24】 請求項23記載の方法であって、 チェックポイントは、サービス妨害攻撃をマウントして
    いる可能性がある任意のコードセットの、各try ブロッ
    ク、finally ブロック、catch ブロック、およびfinali
    zer ブロックの前に配置される、方法。
  25. 【請求項25】 請求項23記載の方法であって、 チェックポイントは、各逆方向ブランチコードの前に配
    置される、方法。
  26. 【請求項26】 請求項23記載の方法であって、 チェックポイントは、前記コードセット内に一定間隔ご
    とに配置される、方法。
  27. 【請求項27】 それぞれが1つまたはそれ以上のコー
    ドセットを実行している、1つまたはそれ以上のスレッ
    ドを打ち切るための命令を格納したコンピュータ読み取
    り可能媒体であって、前記少なくとも1つのコードセッ
    トは、不正を働いていると識別されて打ち切り識別子に
    関連付けられており、前記少なくとも1つのコードセッ
    トは、1つまたはそれ以上のチェックポイントを挿入さ
    れており、 前記媒体は、 前記不正を働いているコードの前記打ち切り識別子を、
    打ち切り手続きを実施すべきことを示すように設定する
    ための、コンピュータコードと、 前記打ち切り識別子に関連付けられたコードセットを有
    する実行中のスレッドを打ち切るための、コンピュータ
    コードと、を格納するコンピュータ読み取り可能媒体。
  28. 【請求項28】 請求項27記載のコンピュータ読み取
    り可能媒体であって、 前記打ち切り識別子に関連付けられた実行中のスレッド
    の打ち切りは、 打ち切りチェックポイントに到達し、前記実行中のコー
    ドセットが前記不正を働いているコードセットに関連付
    けられた前記打ち切り識別子に関連付けられている場合
    は、該実行中のコードセットに対して例外処理を行い、 打ち切りチェックポイントが存在しない場合は、前記実
    行中のスレッドに関連付けられた前記コードセットの実
    行を継続すること、を備えた、コンピュータ読み取り可
    能媒体。
  29. 【請求項29】 請求項28記載のコンピュータ読み取
    り可能媒体であって、 前記打ち切り識別子に関連付けられた実行中のスレッド
    の打ち切りは、さらに、 前記実行中のコードセットが例外処理コードを有する場
    合は、該例外処理コードの前に打ち切りチェックポイン
    トが存在するか否かを決定し、 前記実行中のコードセットが例外処理コードを有し、該
    例外処理コードの前に打ち切りチェックポイントが存在
    する場合は、該例外処理コードが実行されるのを禁止す
    ること、を備えた、コンピュータ読み取り可能媒体。
  30. 【請求項30】 請求項28記載のコンピュータ読み取
    り可能媒体であって、さらに、 サービス妨害攻撃をマウントしている可能性がある任意
    のコードセットの前に、打ち切りチェックポイントを挿
    入するための、コンピュータコードを格納する、コンピ
    ュータ読み取り可能媒体。
  31. 【請求項31】 請求項30記載のコンピュータ読み取
    り可能媒体であって、 チェックポイントは、サービス妨害攻撃をマウントして
    いる可能性がある任意のコードセットの、各try ブロッ
    ク、finally ブロック、catch ブロック、およびfinali
    zer ブロックの前に配置される、コンピュータ読み取り
    可能媒体。
  32. 【請求項32】 それぞれが1つまたはそれ以上のコー
    ドセットを実行している、1つまたはそれ以上のスレッ
    ドを打ち切るように構成されたコンピュータシステムで
    あって、前記少なくとも1つのコードセットは、不正を
    働いていると識別されて打ち切り識別子に関連付けられ
    ており、前記少なくとも1つのコードセットは、1つま
    たはそれ以上のチェックポイントを挿入されており、 前記コンピュータシステムは、 前記不正を働いているコードの前記打ち切り識別子を、
    打ち切り手続きを実施すべきことを示すように設定する
    ように構成された、打ち切り設定部と、 前記打ち切り識別子に関連付けられたコードセットを有
    する実行中のスレッドを打ち切るように構成された、ス
    レッド実行部と、を備えたコンピュータシステム。
  33. 【請求項33】 請求項32記載のコンピュータシステ
    ムであって、 前記打ち切り識別子に関連付けられた実行中のスレッド
    の打ち切りは、 打ち切りチェックポイントに到達し、前記実行中のコー
    ドセットが前記不正を働いているコードセットに関連付
    けられた前記打ち切り識別子に関連付けられている場合
    は、該実行中のコードセットに対して例外処理を行い、 打ち切りチェックポイントが存在しない場合は、前記実
    行中のスレッドに関連付けられた前記コードセットの実
    行を継続すること、を備えた、コンピュータシステム。
  34. 【請求項34】 請求項33記載のコンピュータシステ
    ムであって、 前記打ち切り識別子に関連付けられた実行中のスレッド
    の打ち切りは、さらに、 前記実行中のコードセットが例外処理コードを有する場
    合は、該例外処理コードの前に打ち切りチェックポイン
    トが存在するか否かを決定し、 前記実行中のコードセットが例外処理コードを有し、該
    例外処理コードの前に打ち切りチェックポイントが存在
    する場合は、該例外処理コードが実行されるのを禁止す
    ること、を備えた、コンピュータシステム。
  35. 【請求項35】 請求項32記載のコンピュータシステ
    ムであって、さらに、 サービス妨害攻撃をマウントしている可能性がある任意
    のコードセットの前に、打ち切りチェックポイントを挿
    入するように構成されたエディタを備えたコンピュータ
    システム。
  36. 【請求項36】 請求項35記載のコンピュータシステ
    ムであって、 前記エディタは、サービス妨害攻撃をマウントしている
    可能性がある任意のコードセットの、各try ブロック、
    finally ブロック、catch ブロック、およびfinalizer
    ブロックの前に、チェックポイントを挿入するように構
    成される、コンピュータシステム。
JP2000273599A 1999-09-10 2000-09-08 サービス妨害攻撃を阻止するための装置および方法 Pending JP2001159984A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/394121 1999-09-10
US09/394,121 US6742123B1 (en) 1999-09-10 1999-09-10 Apparatus and methods for preventing denial of service attacks

Publications (1)

Publication Number Publication Date
JP2001159984A true JP2001159984A (ja) 2001-06-12

Family

ID=23557645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000273599A Pending JP2001159984A (ja) 1999-09-10 2000-09-08 サービス妨害攻撃を阻止するための装置および方法

Country Status (4)

Country Link
US (1) US6742123B1 (ja)
EP (1) EP1087295B1 (ja)
JP (1) JP2001159984A (ja)
DE (1) DE60038714D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099293A (ja) * 2001-09-21 2003-04-04 Denso Corp 携帯端末およびコンピュータプログラム
JP2021530014A (ja) * 2018-05-29 2021-11-04 ライン プラス コーポレーションLINE Plus Corporation プログラム保護のためのJavaデバッガ遮断方法およびシステム

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
EP1083484B1 (en) * 1999-09-10 2007-01-03 Sun Microsystems, Inc. Terminating a group of related threads by modifying the program counter of selected stack frames
US7086066B2 (en) * 2000-03-31 2006-08-01 Schlumbergersema Telekom Gmbh & Co. Kg System and method for exception handling
US7032023B1 (en) 2000-05-16 2006-04-18 America Online, Inc. Throttling electronic communications from one or more senders
US7711790B1 (en) 2000-08-24 2010-05-04 Foundry Networks, Inc. Securing an accessible computer system
US7725587B1 (en) 2000-08-24 2010-05-25 Aol Llc Deep packet scan hacker identification
US7047303B2 (en) * 2001-07-26 2006-05-16 International Business Machines Corporation Apparatus and method for using a network processor to guard against a “denial-of-service” attack on a server or server cluster
US7043756B2 (en) * 2001-09-27 2006-05-09 Mcafee, Inc. Method and apparatus for detecting denial-of-service attacks using kernel execution profiles
FR2863074B1 (fr) * 2003-11-28 2006-02-24 Trusted Logic Procede permettant l'interrupton sure d'applications dans un systeme informatique distribue comportant un moteur d'execution logiciel.
US7730137B1 (en) 2003-12-22 2010-06-01 Aol Inc. Restricting the volume of outbound electronic messages originated by a single entity
US7487380B2 (en) * 2004-10-14 2009-02-03 Microsoft Corporation Execution recovery escalation policy
US7779471B2 (en) * 2005-04-05 2010-08-17 Cisco Technology, Inc. Method and system for preventing DOS attacks
US20070240157A1 (en) * 2006-04-10 2007-10-11 Nokia Corporation Method, apparatus, mobile terminal and computer program product for safe application termination in a virtual machine
US20070256082A1 (en) * 2006-05-01 2007-11-01 International Business Machines Corporation Monitoring and controlling applications executing in a computing node
US8001601B2 (en) * 2006-06-02 2011-08-16 At&T Intellectual Property Ii, L.P. Method and apparatus for large-scale automated distributed denial of service attack detection
US8707337B2 (en) * 2006-10-31 2014-04-22 Motorola Mobility Llc Dispatch API that permits midlets to initiate dispatch calls
US20100031260A1 (en) * 2008-07-30 2010-02-04 Lockheed Martin Corporation Object-Oriented Thread Abort Mechanism for Real Time C++ Software
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9830206B2 (en) * 2013-12-18 2017-11-28 Cray Inc. Cross-thread exception handling

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485409A (en) * 1992-04-30 1996-01-16 International Business Machines Corporation Automated penetration analysis system and method
US5557747A (en) * 1993-06-22 1996-09-17 Rogers; Lawrence D. Network policy implementation system for performing network control operations in response to changes in network state
US5784613A (en) * 1995-09-12 1998-07-21 International Busines Machines Corporation Exception support mechanism for a threads-based operating system
US6167535A (en) * 1997-12-09 2000-12-26 Sun Microsystems, Inc. Object heap analysis techniques for discovering memory leaks and other run-time information
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
EP1083484B1 (en) * 1999-09-10 2007-01-03 Sun Microsystems, Inc. Terminating a group of related threads by modifying the program counter of selected stack frames

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003099293A (ja) * 2001-09-21 2003-04-04 Denso Corp 携帯端末およびコンピュータプログラム
JP2021530014A (ja) * 2018-05-29 2021-11-04 ライン プラス コーポレーションLINE Plus Corporation プログラム保護のためのJavaデバッガ遮断方法およびシステム
JP7076014B2 (ja) 2018-05-29 2022-05-26 ライン プラス コーポレーション プログラム保護のためのJavaデバッガ遮断方法およびシステム

Also Published As

Publication number Publication date
EP1087295B1 (en) 2008-04-30
EP1087295A2 (en) 2001-03-28
DE60038714D1 (de) 2008-06-12
EP1087295A3 (en) 2004-07-28
US6742123B1 (en) 2004-05-25

Similar Documents

Publication Publication Date Title
JP2001159984A (ja) サービス妨害攻撃を阻止するための装置および方法
Engler The Exokernel operating system architecture
US6718438B2 (en) Using feedback to determine the size of an object cache
JP3095777B2 (ja) オブジェクト指向オペレーティング・システム
US6453334B1 (en) Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US6922782B1 (en) Apparatus and method for ensuring data integrity of unauthenticated code
US20050081053A1 (en) Systems and methods for efficient computer virus detection
EP1076290A2 (en) Method for on-demand network application download and execution
US20010054057A1 (en) Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
KR20010103747A (ko) 글로벌 데이터 구조를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
KR20010103748A (ko) 엔트리 포인트 객체를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
JPH09500466A (ja) オブジェクト指向ホスト・システム
US7203756B2 (en) Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
KR20010108114A (ko) 콘텍스트 배리어를 사용해서 소형 풋프린트 장치의 보안을구현하기 위한 기술
KR20010101622A (ko) 런타임 환경 특권을 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
US20060167961A1 (en) Autonomic cache object array based on heap usage
CN116150739A (zh) 一种基于关键地址动态保护的栈溢出自动防御方法
US7328323B1 (en) Heap buffer overflow exploitation prevention system and method
EP1303802B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
US8095513B2 (en) Safe buffer
Loepere Mach 3 Kernel Interfaces
US7178140B2 (en) Speeding up application downloading from a remote server
US10922096B2 (en) Reducing subsequent network launch time of container applications
EP1083484B1 (en) Terminating a group of related threads by modifying the program counter of selected stack frames
US20080077991A1 (en) System for eliminating viruses at a web page server

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070822

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

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20080624