EN JP CN

SV.CLONE.SUP

SV.CLONE.SUP

このエラーは、クラスが super.clone() を呼び出すクローンメソッドを定義しており、Cloneable インターフェイスを実装していない場合に表示されます。

脆弱性とリスク

オブジェクトが Cloneable を実装していない場合、Object.clone() メソッドは例外をスローし、このケースで意図された動作とは異なる動作を示す可能性があります。

Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。 このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。

軽減と防止

例外をスローすることが意図されていた場合には、以下のクローンメソッドを定義します。

 
public final Object clone() throws CloneNotSupportedException 
{ 
   throw CloneNotSupportedException(); 
}

適切なクローンメソッドを定義することが意図されていた場合には、クラスが Cloneable インターフェイスを実装する必要があります。

例 1

8  public class SV_CLONE_SUP_Sample_1 {
9      private String password;
10     protected SV_CLONE_SUP_Sample_1(String x) {
11         password = x;
12     }
13     protected String getPassword() {
14         return password;
15     }
16     protected final Object clone()
17             throws CloneNotSupportedException {
18         return super.clone();
19     }
20 }

SV.CLONE.SUP が 18 行目のクラス宣言に対して報告されています。'com.klocwork.jdefects.checkers.ast.samples.SV_CLONE_SUP_Sample_1' クラスが 'clone' メソッドを実装していますが Cloneable を実装していないため、Object クローン実装が例外をスローします。

セキュリティガイドライン