Repaso
English
SeguridadAvanzadoSEC-36

¿Por qué es peligrosa la deserialización en Java de datos no confiables?

Opciones

  1. Los objetos preparados pueden disparar gadget chains y RCE (Opción correcta)
  2. Solo hace que el programa vaya más lento
  3. Elimina la JVM de la máquina servidor
  4. 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.

Términos clave

Practica esta pregunta en Repaso