界: Encapsulation
カプセル化とは、強い境界線を引くことです。Web ブラウザの場合は、自分のモバイル コードが他のモバイル コードに悪用されないようにすることを意味します。サーバー上では、検証されたデータと検証されていないデータ、あるユーザーのデータと別のユーザーのデータ、またはユーザーが見ることを許可されたデータと許可されていないデータの区別などを意味する場合があります。
Unsafe Mobile Code: Public finalize() Method
Abstract
プログラムは
finalize()
メソッドを public
と宣言しているため、モバイルコードに関するセキュアコーディングの原則に違反しています。Explanation
プログラムは
例 1: 次の Java アプレットのコードは、誤って
モバイルコード (この例では Java アプレット) とは、ネットワーク上で送信され、リモートマシンで実行されるコードです。モバイルコードの開発者は、コードの実行環境をほとんど、またはまったく制御できないので、それに関連するセキュリティ上の弱点について考慮する必要があります。環境に関係する脅威のうち最大のものの 1 つは、モバイルコードが、悪意あるコードの可能性がある他のモバイルコードと並行して実行されるリスクに関係します。人気の高い Web ブラウザはいずれも、複数のソースからのコードを同一の JVM で一緒に実行します。このため、モバイルコードのセキュリティガイドラインの多くは、プログラムが実行される仮想マシンにアクセス可能な攻撃者によってオブジェクトの状態や動作が操作されないようにすることを中心課題としています。
finalize()
の実装内で super.finalize()
のコール以外に finalize を明示的にコールしません。finalize メソッドが public
アクセスで宣言されているため、モバイルコードの状況では、攻撃者が悪意のある方法でいずれかの finalize()
メソッドを呼び出す場合、エラーを発生させやすい手動のガーベジコレクションはセキュリティ上の脅威となります。finalize()
を本来の目的どおりに使用しているのであれば、protected
アクセス以外で finalize()
を宣言する理由はありません。例 1: 次の Java アプレットのコードは、誤って
public finalize()
を宣言しています。
public final class urlTool extends Applet {
public void finalize() {
...
}
...
}
モバイルコード (この例では Java アプレット) とは、ネットワーク上で送信され、リモートマシンで実行されるコードです。モバイルコードの開発者は、コードの実行環境をほとんど、またはまったく制御できないので、それに関連するセキュリティ上の弱点について考慮する必要があります。環境に関係する脅威のうち最大のものの 1 つは、モバイルコードが、悪意あるコードの可能性がある他のモバイルコードと並行して実行されるリスクに関係します。人気の高い Web ブラウザはいずれも、複数のソースからのコードを同一の JVM で一緒に実行します。このため、モバイルコードのセキュリティガイドラインの多くは、プログラムが実行される仮想マシンにアクセス可能な攻撃者によってオブジェクトの状態や動作が操作されないようにすることを中心課題としています。
References
[1] G. McGraw Securing Java. Chapter 7: Java Security Guidelines
[2] MET12-J. Do not use finalizers CERT
[3] Standards Mapping - Common Weakness Enumeration CWE ID 583
[4] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-000213, CCI-002165
[5] Standards Mapping - NIST Special Publication 800-53 Revision 4 AC-3 Access Enforcement (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 AC-3 Access Enforcement
[7] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.8
[8] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.8
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.8
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.8
[11] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[12] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[13] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 5.4 - Authentication and Access Control
[14] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 5.4 - Authentication and Access Control
[15] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 5.4 - Authentication and Access Control, Control Objective C.2.3 - Web Software Access Controls
[16] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[17] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[18] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[19] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[20] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[21] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[22] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[23] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[24] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[25] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[26] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[27] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[28] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[29] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[30] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[31] Standards Mapping - Web Application Security Consortium Version 2.00 Insufficient Authorization (WASC-02)
desc.structural.java.unsafe_mobile_code_public_finalize_method