¿Por qué es peligrosa la deserialización en Java de datos no confiables?
Opciones
- Los objetos preparados pueden disparar gadget chains y RCE (Opción correcta)
- Solo hace que el programa vaya más lento
- Elimina la JVM de la máquina servidor
- Solo afecta a programas Python, nunca a Java
Respuesta
Leer objetos serializados controlados por un atacante puede disparar código malicioso mediante "gadget chains" en clases del classpath, lo que lleva a remote code execution
Por qué
La serialización nativa de Java (ObjectInputStream.readObject) reconstruye objetos a partir de bytes. Algunas clases especiales ejecutan código durante ese proceso. Un atacante puede preparar bytes que encadenen clases existentes (una gadget chain) para ejecutar comandos.
Mitigaciones: no deserialices datos no confiables; prefiere JSON con esquemas estrictos (Jackson con default typing desactivado); usa filtros de serialización (ObjectInputFilter); mantén las librerías actualizadas.
Es la versión Java del problema de pickle.loads.
Recuerda
Nunca deserialices objetos Java no confiables.