Foundation 1.1.2

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」は無効です。  

アクセス権ターゲット名 アクセス権により許可される機能 このアクセス権を許可した場合のリスク
createClassLoader クラスローダーの作成 このアクセス権を与えるのは、きわめて危険です。悪意のあるアプリケーションが独自のクラスローダーのインスタンスを生成し、破壊行為を行うクラスをシステムにロードする可能性があります。この新たにロードされたクラスが同じクラスローダーによって保護ドメインに置かれ、ロードされたクラスに、そのドメインのアクセス権が自動的に与えられる可能性があります。
getClassLoader クラスローダー (クラスを呼び出すためのクラスローダーなど) の取得 これにより、特定のクラスのクラスローダーを取得するためのアクセス権を、攻撃者に与えることになります。あるクラスのクラスローダーにアクセスできると、攻撃者は、そのクラスローダーから使用できるほかのクラスをロードできるようになるため、このアクセス権は危険です。本来は、そのようなクラスにはアクセスすることはできません。
setContextClassLoader スレッドが使うコンテキストクラスローダーの設定 コンテキストクラスローダーは、システムクラスローダーに存在しない可能性のあるリソースを探す必要があるときに、システムコードおよびエクステンションによって使用されます。setContextClassLoader アクセス権を与えると、コードは、システムスレッドを含め、特定のスレッドで使用するコンテキストクラスローダーを変更できるようになります。
setSecurityManager セキュリティーマネージャーの設定 (既存の設定を置き換える可能性あり) セキュリティーマネージャーとは、アプリケーションがセキュリティーポリシーを実装できるクラスです。setSecurityManager アクセス権を与えると、コードは、別のセキュリティーマネージャー (より制限の少ないセキュリティーマネージャーなど) をロードし、使用するセキュリティーマネージャーを変更できるようになります。この結果、元のセキュリティーマネージャーによって課されていたチェックを回避できるようになります。
createSecurityManager 新しいセキュリティーマネージャーの作成 ほかのクラスまたは実行スタックの情報を公開する可能性がある、保護された、機密性の高いメソッドへのアクセスをコードに与えます。
exitVM Java 仮想マシンの停止 仮想マシンを自動的に停止させることで、攻撃者はサービス妨害攻撃を展開することができます。注:アプリケーションクラスパスからロードされたすべてのコードにアクセス権「exitVM」が付与されるため、アプリケーションは自らを終了させることができます。
shutdownHooks 仮想マシンのシャットダウンフックの登録と解除 悪意のあるシャットダウンフックを登録することで、攻撃者は仮想マシンの正常なシャットダウンの妨害攻撃を展開することができます。
setFactory ServerSocket または Socket が使うソケットファクトリ、あるいは URL が使うストリームハンドラファクトリの設定 これにより、コードから、ソケット、サーバーソケット、ストリームハンドラ、または RMI ソケットファクトリの実際の実装を設定できるようになります。注:java.net.ServerSocket, java.net.Socket は、J2ME Foundation Profile などの J2ME CDC プロファイルにあります。攻撃者は、データストリームを狂わせる異常な実装を設定する可能性があります。
setIO System.out、System.in、および System.err の設定 標準システムストリームの値を変更できるようになります。攻撃者は System.in を変更してユーザーの入力を監視および盗聴したり、System.err を「null」の OutputStream に設定して、System.err に送られたエラーメッセージがまったく表示されないようにすることができます。
modifyThread Thread の stopsuspendresumesetPriority、および setName などのメソッドの呼び出しを介してのスレッドの変更 攻撃者は、システム内の任意のスレッドを開始または停止できます。
stopThread Thread の stop メソッドの呼び出しを介してのスレッドの停止 スレッドへのアクセス権をすでに取得している場合、コードから、システム内のどのスレッドでも停止できるようになります。実行中のスレッドが終了させられ、システムが破壊される可能性があります。
modifyThreadGroup ThreadGroup の destroygetParentresumesetDaemonsetMaxPrioritystop、および suspend などのメソッドの呼び出しを介してのスレッドグループの変更 攻撃者は、スレッドグループを作成してその実行優先順位を設定できます。
getProtectionDomain クラスの ProtectionDomain の取得 コードから、特定のコードソースのポリシー情報を取得できるようになります。ポリシー情報が盗まれてもシステムのセキュリティーが脅かされるわけではないが、攻撃の狙いをより正確に定めるためのローカルファイル名などの追加情報を攻撃者に与えてしまうことになります。
readFileDescriptor ファイル記述子の読み取り コードから、読み出したファイル記述子に関連付けられているファイルを読み出すことができるようになります。ファイルに機密データが含まれている場合、このアクセス権は危険です。
writeFileDescriptor ファイル記述子への書き込み コードから、そのファイル記述子に関連付けられているファイルに書き込めるようになります。悪意のあるコードでウィルスを感染させたり、ディスク全体を埋めることができるので危険です。
loadLibrary.{library name} 特定のライブラリへの動的リンク Java のセキュリティーアーキテクチャーが、ネイティブコードのレベルで悪意のある動作を防止するようには設計されていないため、ネイティブコードライブラリをロードするアクセス権をアプレットに与えるのは危険です。
accessClassInPackage.{package name} クラスローダーがセキュリティーマネージャーの checkPackageAcesss メソッドを呼び出したときに、クラスローダーの loadClass メソッドを介して、指定されたパッケージへアクセスを許可する 通常はアクセスできないパッケージ内のクラスに、コードからアクセスできるようになります。このため、悪意のあるコードが、このようなクラスを利用してシステムのセキュリティーを脅かす可能性があります。
defineClassInPackage.{package name} クラスローダーがセキュリティーマネージャーの checkPackageDefinition メソッドを呼び出したときに、クラスローダーの defineClass メソッドを介して、指定されたパッケージ内のクラスを定義する これにより、特定のパッケージ内にクラスを定義するためのアクセス権をコードに与えることになります。このアクセス権が与えられた悪意のあるコードは、java.securityjava.lang などの信頼できるパッケージ内に破壊行為を行うクラスを定義する可能性があるため、このアクセス権は危険です。
accessDeclaredMembers クラスの宣言されたメンバーへのアクセス 特定のクラス内の public、デフォルト (パッケージ) アクセス、protected、および private なフィールドやメソッドに関する問い合わせを行うコードアクセス権をコードに与えることになります。このアクセス権が与えられたコードは、private および protected なフィールド名とメソッド名にはアクセスできるが、private および protected なフィールドのデータにはアクセスできないし、private なメソッドを呼び出すことはできません。しかし、攻撃の狙いをより正確に定めるため、悪意のあるコードがこの情報を利用する可能性があります。また、クラス内の public なメソッドを呼び出したり、public なフィールドにアクセスしたりする可能性があります。コードが、メソッドとフィールドが含まれるクラスやインタフェースにオブジェクトをキャストできないために、通常はコードがこれらのメソッドを呼び出したり、フィールドにアクセスしたりできない場合は危険です。
queuePrintJob 印刷ジョブ要求の初期化 機密情報を印刷してしまうか、用紙の無駄になります。

関連項目:
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 でなければならない

Foundation 1.1.2

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

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