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”。