JavaTM 2 Platform
Standard Ed. 5.0

java.lang
クラス RuntimePermission

java.lang.Object
  上位を拡張 java.security.Permission
      上位を拡張 java.security.BasicPermission
          上位を拡張 java.lang.RuntimePermission
すべての実装されたインタフェース:
Serializable, Guard

public final class RuntimePermission
extends BasicPermission

このクラスは、実行時のアクセス権に関連します。RuntimePermission は、ターゲット名とも呼ばれる名前を格納しますが、アクションリストは格納しません。名前の付いたアクセス権 (名前付きアクセス権) は持っても持たなくてもかまいません。

ターゲット名は、実行時アクセス権の名前です (以降の説明を参照)。命名規則は、階層的プロパティ命名規則に従います。また、名前の末尾に「.*」または「*」がある場合は、ワイルドカードマッチングを表します。たとえば、「loadLibrary.*」や 「*」は有効なターゲット名ですが、「*loadLibrary」や「a*b」は無効です。

次の表に、使用可能な RuntimePermission ターゲット名を一覧にまとめ、それぞれについて、許可するアクセス権と、コードに許可することによって生じるリスクを示します。

アクセス権ターゲット名 アクセス権により許可される機能 このアクセス権を許可した場合のリスク
createClassLoader クラスローダの作成 このアクセス権を許可することはきわめて危険である。独自のクラスローダのインスタンスを生成できる悪意のあるアプリケーションであれば、悪意のあるクラスをシステムにロードできるようになる。この場合、新しくロードされた悪意のあるクラスを、クラスローダを使って任意の保護ドメインに配置できる。つまり、保護ドメインへのアクセス権を、悪意のあるクラスに対して自動的に許可することになる
getClassLoader クラスローダ (クラスを呼び出すためのクラスローダなど) の取得 特定のクラスのクラスローダへのアクセス権を、攻撃者に与える恐れがある。クラスのクラスローダへのアクセスができれば、攻撃者はそのクラスローダでアクセスできるほかのクラスもロードできるので、危険である。クラスのクラスローダへのアクセスができなければ、通常、攻撃者はこれらのクラスにアクセスできない
setContextClassLoader スレッドが使うコンテキストクラスローダの設定 コンテキストクラスローダは、システムクラスローダには存在しない可能性のあるリソースを探す必要があるときに、システムコードおよび拡張機能が使用する。setContextClassLoader アクセス権の許可によって、コードは、システムスレッドを含む特定のスレッドに使用するコンテキストクラスローダを変更できるようになる
enableContextClassLoaderOverride スレッドのコンテキストクラスローダメソッドのサブクラス実装 コンテキストクラスローダは、システムクラスローダには存在しない可能性のあるリソースを探す必要があるときに、システムコードおよび拡張機能が使用する。enableContextClassLoaderOverride アクセス権の許可によって、スレッドのサブクラスは、特定のスレッドのコンテキストクラスローダの取得または設定に使用されるメソッドをオーバーライドできる
setSecurityManager セキュリティマネージャの設定 (既存の設定を置き換える可能性あり) セキュリティマネージャは、アプリケーションでセキュリティポリシーを実装できるようにするクラスである。setSecurityManager アクセス権の許可によって、コードは、より制限の少ないほかのセキュリティマネージャをインストールすることによって、使用されるセキュリティマネージャを変更できる。その結果、元のセキュリティマネージャなら実行されたはずのセキュリティチェックを省略できる
createSecurityManager 新しいセキュリティマネージャの作成 ほかのクラスまたは実行スタックの情報を公開する可能性がある、保護された、機密性の高いメソッドへのアクセスをコードに与える
getenv.{variable name} 指定された環境変数の値の読み取り コードを使って特定の環境変数の値の読み取りや存在の判定を行うことができる。変数が機密データを格納している場合、これは危険である
exitVM Java 仮想マシンの停止 仮想マシンを自動的に停止させることで、攻撃者はサービス妨害攻撃を展開することができる。注: アプリケーションクラスパスからロードされたすべてのコードにアクセス権「exitVM」が付与されるため、アプリケーションは自らを終了させることができる
shutdownHooks 仮想マシンのシャットダウンフックの登録と解除 悪意のあるシャットダウンフックを登録することで、攻撃者は仮想マシンの正常なシャットダウンの妨害攻撃を展開することができる
setFactory ServerSocket または Socket が使うソケットファクトリ、あるいは URL が使うストリームハンドラファクトリの設定 ソケット、サーバソケット、ストリームハンドラ、あるいは RMI ソケットファクトリが使う実際の実装をコードで設定できるようにする。攻撃者は、データストリームを混乱させる不完全な実装を設定できる
setIO System.out、System.in、および System.err の設定 標準のシステムストリームの値を変更できるようにする。攻撃者は System.in を変更してユーザの入力を監視および盗聴したり、System.err を「null」の OutputStream に設定して、System.err に送られたエラーメッセージがまったく表示されないようにすることができる
modifyThread Thread の interruptstopsuspendresumesetDaemonsetPrioritysetName、および setUncaughtExceptionHandler などのメソッドの呼び出しを使ったスレッドの変更 攻撃者は、システム内の任意のスレッドの動作を変更できる
stopThread Thread の stop メソッドの呼び出しを介してのスレッドの停止 コードは、すでにスレッドへのアクセス権を与えられている場合は、システム内の任意のスレッドを停止できる。コードを使って既存のスレッドを強制終了することでシステムを破壊できるため、これは脅威になる
modifyThreadGroup ThreadGroup の destroygetParentresumesetDaemonsetMaxPrioritystop、および suspend などのメソッドの呼び出しを介してのスレッドグループの変更 攻撃者は、スレッドグループを作成してその実行優先順位を設定できる
getProtectionDomain クラスの ProtectionDomain の取得 特定のコードソースのポリシー情報を、コードで取得できる。ポリシー情報を取得されてもシステムのセキュリティは損なわれないが、これにより、攻撃者はローカルファイル名などの付加情報を取得でき、攻撃の的は絞りやすくなる
readFileDescriptor ファイル記述子の読み込み ファイル記述子 read に関連した特定のファイルを、コードを使って読み取ることができる。ファイルが機密データを格納している場合、これは危険である
writeFileDescriptor ファイル記述子への書き込み この記述子に関連した特定のファイルに、コードを使って書き込みができる。悪意のあるコードでウィルスを感染させたり、ディスク全体を埋めることができるので危険である
loadLibrary.{library name} 特定のライブラリへの動的リンク Java のセキュリティアーキテクチャが、ネイティブコードのレベルで悪意のある動作を防止するようには設計されていないため、ネイティブコードライブラリをロードするアクセス権をアプレットに与えるのは危険である
accessClassInPackage.{package name} クラスローダがセキュリティマネージャの checkPackageAccess メソッドを呼び出したときに、クラスローダの loadClass メソッドを介して、指定されたパッケージへアクセスを許可する パッケージ内の、通常ならアクセスできないクラスにコードでアクセスできる。悪意のあるコードによって、システムのセキュリティを損なうためにこれらのクラスが利用される可能性がある
defineClassInPackage.{package name} クラスローダがセキュリティマネージャの checkPackageDefinition メソッドを呼び出したときに、クラスローダの defineClass メソッドを介して、指定されたパッケージ内のクラスを定義する 特定のパッケージ内のクラスを定義するためのアクセス権をコードに対して許可する。このアクセス権を持つ悪意のあるコードに対して、java.securityjava.lang などの信頼できるパッケージ内に、悪意のあるクラスを定義することを許可するので危険である
accessDeclaredMembers クラスの宣言されたメンバへのアクセス public、protected、default (package) への各アクセスに利用するクラス、および private フィールドまたは private メソッド (あるいは両方) を照会するためのアクセス権をコードに許可する。コードは、private と protected の各フィールド名および各メソッド名にアクセスできるが、public および protected の各フィールドデータにはアクセスできず、任意の private メソッドの呼び出しもできない。しかし悪意のあるコードはこの情報を使って、攻撃の的を絞ることができる。さらに、コードはクラスの任意の public メソッドまたは public フィールド (あるいは両方) を呼び出すことができる。これは、このコードが、通常はこれらのメソッドの呼び出しやフィールドへのアクセスができない場合は、これらのメソッドおよびフィールドを使っても、コードはオブジェクトをクラスまたはインタフェースにキャストできないため、危険である
queuePrintJob 印刷ジョブ要求の初期化 機密情報を印刷してしまうか、用紙の無駄になる
getStackTrace 別のスレッドのスタックトレース情報の取得 別のスレッドのスタックトレース情報を取得できる。スレッドの実行を監視し、アプリケーションの脆弱性を発見する悪意のあるコードを可能にするので危険である
setDefaultUncaughtExceptionHandler キャッチされない例外により、突然スレッドが終了したときに使用されるデフォルトのハンドラを設定する 攻撃者は、スレッドの終了を妨害できる、悪意のあるキャッチされない例外ハンドラを登録できる
preferences java.util.prefs へのアクセスに必要なアクセス権を表す。preferences 実装のユーザまたはシステムルートは、preferences 持続バッキングストア内で取得または更新操作を実行できる このアクセス権により、コードを実行しているユーザが必要な OS 権限を持っている場合、そのユーザは preferences 持続バッキングストアに読み取りや書き込みを行うことができます。実際のバッキングストアは、従来のファイルシステムディレクトリか、プラットフォームの OS に依存するレジストリ内にあります。

関連項目:
BasicPermission, Permission, Permissions, PermissionCollection, SecurityManager, 直列化された形式

コンストラクタの概要
RuntimePermission(String name)
          指定された名前で、新しい RuntimePermission を生成します。
RuntimePermission(String name, String actions)
          指定された名前を持つ新しい RuntimePermission オブジェクトを生成します。
 
メソッドの概要
 
クラス java.security.BasicPermission から継承されたメソッド
equals, getActions, hashCode, implies, newPermissionCollection
 
クラス java.security.Permission から継承されたメソッド
checkGuard, getName, toString
 
クラス java.lang.Object から継承されたメソッド
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

RuntimePermission

public RuntimePermission(String name)
指定された名前で、新しい RuntimePermission を生成します。名前は RuntimePermission の記号名で、たとえば「exit」、「setFactory」などを指定します。名前の末尾に「.*」または「*」を付けて、ワイルドカードマッチングを表します。

パラメータ:
name - RuntimePermission の名前

RuntimePermission

public RuntimePermission(String name,
                         String actions)
指定された名前を持つ新しい RuntimePermission オブジェクトを生成します。名前は RuntimePermission の記号名です。String の actions は現在使用されず、null になります。

パラメータ:
name - RuntimePermission の名前
actions - null でなければならない

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。