İçeriğe geç

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.

ObjectInputStream in = new ObjectInputStream(request.getInputStream());
Order order = (Order) in.readObject(); // gadget zinciri -> RCE
ObjectMapper mapper = JsonMapper.builder()
.activateDefaultTyping(NoCheckSubTypeValidator.instance) // kapalı bırak
.build();
Order order = mapper.readValue(request.getInputStream(), Order.class);

Güvenilmeyen veride native deserileştirme yerine sabit tipli JSON kullanın; polimorfik tiplemeyi açmayın.