highCWE-502A08:2021

Deserializacion Insegura

Deserializar datos no confiables con librerias como node-serialize o yaml.load de Python permite a los atacantes ejecutar codigo arbitrario en el servidor.

Cómo Funciona

La serializacion convierte objetos en un formato para almacenamiento o transmision, y la deserializacion revierte el proceso. Cuando una aplicacion deserializa datos de fuentes no confiables sin validacion, un atacante puede construir payloads maliciosos que ejecutan codigo durante el proceso de deserializacion. En Node.js, la funcion unserialize() de node-serialize puede ejecutar JavaScript via patrones IIFE en strings serializados. En Python, yaml.load() con el Loader por default puede instanciar objetos Python arbitrarios. Estas vulnerabilidades frecuentemente llevan a Remote Code Execution (RCE), la categoria mas severa de vulnerabilidad.

Código Vulnerable
const serialize = require('node-serialize');
app.post('/api/session', (req, res) => {
  const sessionData = serialize.unserialize(req.cookies.session);
  res.json(sessionData);
});
Código Seguro
app.post('/api/session', (req, res) => {
  try {
    const sessionData = JSON.parse(req.cookies.session);
    const validated = sessionSchema.parse(sessionData);
    res.json(validated);
  } catch { res.status(400).json({ error: 'Invalid session' }); }
});

Ejemplo Real

La brecha de Equifax en 2017 que expuso 147 millones de registros fue parcialmente habilitada por una vulnerabilidad de deserializacion en Apache Struts (CVE-2017-5638). Los atacantes enviaron un header Content-Type manipulado que disparo una deserializacion insegura, otorgando ejecucion remota de codigo en los servidores de Equifax.

Cómo Prevenirlo

  • Nunca uses node-serialize — usa JSON.parse() con validacion Zod en su lugar
  • En Python, usa yaml.safe_load() en vez de yaml.load()
  • Nunca deserialices datos de cookies, headers o input del usuario sin validacion
  • Implementa verificaciones de integridad (firmas HMAC) en datos serializados

Tecnologías Afectadas

Node.jsPythonJavaPHPGo

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas