Mastodon Mastodon Mastodon Mastodon

Deserialización

Actualizado: · CyberSecureFox Editorial Team

La deserialización es el proceso de convertir datos almacenados o transmitidos de nuevo en objetos de programa; aplicada a datos no confiables, puede permitir a un atacante ejecutar código.

Cómo funcionan los ataques de deserialización

Las aplicaciones serializan objetos —los convierten en bytes, JSON o XML— para guardarlos o enviarlos por la red, y los deserializan en el otro extremo. Formatos como la serialización de Java, BinaryFormatter de .NET, la función unserialize() de PHP o pickle de Python pueden recrear objetos de cualquier tipo y llamar automáticamente a algunos de sus métodos. Un atacante que controle los datos serializados puede encadenar clases existentes en las bibliotecas de la aplicación («gadget chains») de modo que, al recrear los objetos, se ejecuten comandos. Herramientas como ysoserial generan estas cargas automáticamente.

La debilidad está catalogada como CWE-502. Una investigación publicada en 2015 sobre cadenas de gadgets en la biblioteca Apache Commons Collections demostró que muchas aplicaciones Java, entre ellas Jenkins y Oracle WebLogic, podían atacarse así.

Por qué es importante

La deserialización insegura suele llevar a la ejecución remota de código, a menudo sin autenticación, por lo que estas vulnerabilidades reciben las puntuaciones más altas. Middleware empresarial, dispositivos VPN y productos de transferencia de archivos han sido comprometidos una y otra vez mediante fallos de deserialización, y los exploits públicos aparecen enseguida. Pariente cercana de la inyección de código, forma parte de la categoría del OWASP Top 10 «Fallos de integridad de software y datos».

Cómo prevenirla

  • No deserializar datos de fuentes no confiables con formatos nativos de objetos; usar formatos simples como JSON con un esquema estricto.
  • Si la deserialización nativa es inevitable, usar listas de clases permitidas y comprobaciones de integridad (firmas).
  • Eliminar las bibliotecas no usadas que aportan gadget chains y mantener actualizados los frameworks.
  • Vigilar las excepciones de deserialización y los procesos hijo inusuales.
Sinónimos:
deserialización insegura, insecure deserialization