Skip to content
h0km4
Go back

Deserialization RCE en React Server Components

Updated:
Edit page

CVE-2025-55182 – Deserialization RCE en React Server Components (Next.js)

1. Contexto técnico

CVE-2025-55182 es una vulnerabilidad de deserialización que afecta implementaciones de React Server Components (RSC) en entornos Next.js.

El problema surge en la forma en que el servidor interpreta datos serializados enviados por el cliente hacia Server Actions. Cuando el backend procesa estructuras manipuladas, se produce una condición donde código arbitrario puede ser evaluado dentro del runtime de Node.js.

No es un bug superficial. Es un fallo de diseño en el manejo de datos confiados en un canal que debería ser estrictamente tipado y validado.

2. Raíz del problema: deserialización insegura

En arquitecturas modernas con RSC, el cliente envía estructuras serializadas que el servidor reconstruye dinámicamente. Si el mecanismo de reconstrucción no valida correctamente:

entonces se abre la puerta a invocar constructores inesperados o funciones dinámicas.

La clave aquí es el abuso de referencias internas como:

#constructor

y la posibilidad de inducir la evaluación de contenido dinámico en el contexto del servidor.

En entornos Node.js, cualquier punto que permita ejecución dinámica termina interactuando indirectamente con:

Y ahí es donde el riesgo escala a RCE.

3. ¿Por qué es/fue crítica?

Porque:

Si el servidor corre como www-data, ese es el nivel inicial. Si corre con permisos elevados en contenedores mal configurados, el impacto es mayor. Si existe mala segmentación, puede convertirse en pivot lateral.

Este tipo de vulnerabilidad no es solo “ejecución remota”. Es ruptura del modelo de confianza de Server Components.

4. Superficie técnica afectada

Requisitos típicos para que sea explotable:

En términos arquitectónicos, el problema ocurre en el boundary entre cliente y servidor donde se asume que el payload serializado respeta el contrato interno.

Cuando ese contrato se rompe, el servidor termina ejecutando lógica que nunca debió estar expuesta.

5. Análisis del vector

El patrón observado consiste en:

Aquí el verdadero problema no es child_process. El problema es permitir que datos controlados por el usuario influyan en qué código se ejecuta.

Eso es textbook deserialización insegura.

6. Cierre

Este tipo de vulnerabilidad demuestra algo interesante: Las arquitecturas modernas abstraen complejidad, pero cada capa de abstracción introduce un nuevo límite de confianza.

React Server Components prometen eficiencia y simplicidad pero si el modelo de serialización no está blindado, se convierte en un canal de ejecución. El aprendizaje no fue “Node es inseguro” mas bien cualquier sistema que reconstruya objetos dinámicamente desde datos externos debe asumir hostilidad por defecto.

Deserialización insegura no es un bug raro. Es una categoría recurrente en la historia de la seguridad desde 2016-2017.

7. Agradecimiento

Como lo hemos visto en todos mis post’s honor a quien honor merece.

Primero los que publicaron deserializacion por primera vez, me refiero a deserialization - Alvaro Muñoz, PDF.

Como lo puse en mi publicacion Repositorio con codigo automatizado, yo solo aporte a mi amigo Emiyelbarto, gracias a el tuvimos la primera PoC completa.

Tambien desarrolle una herramienta para automatizar la busqueda de deserializacion, recordemos que la premisa de estas vulnerabilidades dependen de alguna lectura de archivos o una prueba de caja blanca-gris que te permita ver el codigo Tool Desearch.

Muchas gracias ala persona que lo encontro sobre todo.

hacktheplanet


Edit page
Share this post on:

Previous Post
Token Stealing en Windows de Administrador a NT AUTHORITY\SYSTEM
Next Post
EDR Internals-> Telemetría, Kernel y Evasión