SV.SERIAL.SIG

SV.SERIAL.SIG は、クラスが 'java.io.Serializable' インターフェイスを直接的または間接的に実装しているにもかかわらず、宣言された 'readObject' メソッドまたは 'writeObject' メソッドのシグネチャが正しくない場合に報告されます。

脆弱性とリスク

クラスが正しいシグネチャの 'readObject' メソッドおよび 'writeObject' メソッドを実装していない場合、デフォルトのシリアライズが使用されます。

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

軽減と防止

'readObject' メソッドおよび 'writeObject' メソッドのシグネチャはそれぞれ、'private void writeObject(java.io.ObjectOutputStream out) throws IOException' および 'private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException' である必要があります。

例 1

コピー
 public class SV_SERIAL_SIG_Sample_1 implements Serializable {
     final void readObject(ObjectInputStream in) {
     }
 
     void writeObject(ObjectOutputStream in) throws IOException {
     }
 }

SV.SERIAL.SIG が 17 行目のクラス 'SV_SERIAL_SIG_Sample_1' の宣言に対して報告されています。'writeObject()' メソッドが 'private' 修飾子を持たないためです。SV.SERIAL.SIG が 14 行目のクラス 'SV_SERIAL_SIG_Sample_1' の宣言に対して報告されています。'readObject()' メソッドが 'private' 修飾子を持たないためです。SV.SERIAL.SIG が 14 行目のクラス 'SV_SERIAL_SIG_Sample_1' の宣言に対して報告されています。'readObject()' メソッドが 'java.io.IOException' および 'java.lang.ClassNotFoundException' のスローを宣言していないためです。