SV.SERIAL.SIG

如果一个类直接或间接地实施“java.io.Serializable”接口,但声明的方法“readObject' or 'writeObject”的签名不正确,将针对此类报告 SV.SERIAL.SIG。

漏洞与风险

如果一个类未使用正确的签名实施“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 {
     }
 }

对于第 17 行的“SV_SERIAL_SIG_Sample_1”类声明,报告了 SV.SERIAL.SIG:方法“writeObject()”没有“private”修饰符。对于第 14 行的“SV_SERIAL_SIG_Sample_1”类声明,报告了 SV.SERIAL.SIG:方法“readObject()”没有“private”修饰符。对于第 14 行的“SV_SERIAL_SIG_Sample_1”类声明,报告了 SV.SERIAL.SIG:方法“readObject()”没有声明引发“java.io.IOException”和“java.lang.ClassNotFoundException”。

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。