SV.CLONE.SUP

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

脆弱性とリスク

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

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

軽減と防止

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

コピー
public final Object clone() throws CloneNotSupportedException 
{ 
   throw CloneNotSupportedException()
}

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

例 1

コピー
  public class SV_CLONE_SUP_Sample_1 {
      private String password;
     protected SV_CLONE_SUP_Sample_1(String x) {
         password = x;
     }
     protected String getPassword() {
         return password;
     }
     protected final Object clone()
             throws CloneNotSupportedException {
         return super.clone();
     }
 }

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