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.
const serialize = require('node-serialize');
app.post('/api/session', (req, res) => {
const sessionData = serialize.unserialize(req.cookies.session);
res.json(sessionData);
});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
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Cadena de Conexion Expuesta
criticalURLs de conexion a base de datos con usuario y password hardcodeadas en el codigo fuente, dejando las credenciales accesibles a cualquiera con acceso al repositorio.
Backup de Base de Datos Expuesto
highArchivos de dump de base de datos (.sql, .dump, .bak) commiteados al repositorio exponen el esquema completo y datos, incluyendo credenciales de usuarios y registros sensibles.
Queries Crudos en ORMs
highUsar metodos de SQL crudo como $queryRaw de Prisma o query() de Sequelize con interpolacion de strings bypasea la proteccion contra SQL injection del ORM.
Queries N+1 Explotables
lowLa expansion de relaciones sin limites en queries de ORM permite a los atacantes disparar miles de queries a la base de datos con un solo request de API, causando denegacion de servicio.