Güvensiz Deserileştirme (ARCH4109)
Anahtar java.security.insecure-deserialization · Önem critical · Kategori security · CWE CWE-502
Güvenilmeyen veriyi Java native ObjectInputStream ile çözmek, gadget zincirleri aracılığıyla uzaktan kod çalıştırmaya yol açan klasik bir vektördür. Onun yerine sıkı tipli, güvenli bir veri formatı (JSON) kullanın.
Hatalı
Bölüm başlığı “Hatalı”ObjectInputStream in = new ObjectInputStream(request.getInputStream());Order order = (Order) in.readObject(); // gadget zinciri -> RCEObjectMapper mapper = JsonMapper.builder() .activateDefaultTyping(NoCheckSubTypeValidator.instance) // kapalı bırak .build();Order order = mapper.readValue(request.getInputStream(), Order.class);Düzeltme
Bölüm başlığı “Düzeltme”Güvenilmeyen veride native deserileştirme yerine sabit tipli JSON kullanın; polimorfik tiplemeyi açmayın.