SOC Prime Bias: Crítico

05 Dic 2025 16:35

CVE-2025-55182 y CVE-2025-66478: Detección de Alta Fidelidad para RSC/Next.js RCE

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
CVE-2025-55182 y CVE-2025-66478: Detección de Alta Fidelidad para RSC/Next.js RCE
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Una falla de ejecución remota de código afecta a las aplicaciones Next.js que utilizan Componentes del Servidor en React. El problema se puede activar sin acceso previo enviando una solicitud HTTP multipart especialmente diseñada. Aunque existen múltiples exploits de prueba de concepto públicos, muchos son poco fiables o incorrectos. El artículo introduce una técnica de detección de alta fidelidad que se basa en una respuesta de error característica del servidor.

Investigación

Los investigadores examinaron la lógica de análisis de los Componentes del Servidor en React y encontraron que una referencia de propiedad delimitada por dos puntos puede producir un error 500 cuando el objeto de destino falta. Luego construyeron una carga multipart que activa de manera fiable esta condición y confirmaron un patrón de respuesta repetible. La regla de detección propuesta señala las respuestas HTTP 500 que contienen el fragmento E{"digest" en el cuerpo.

Mitigación

Los pasos de mitigación incluyen actualizar las versiones afectadas de Next.js a aquellas que incorporan salvaguardas adicionales alrededor de la notación de dos puntos. Las organizaciones deben implementar reglas de WAF para bloquear la estructura multipart maliciosa y asegurarse de que todas las solicitudes entrantes que tocan los Componentes del Servidor en React sean validadas y saneadas.

Respuesta

Los equipos de seguridad deben escanear las aplicaciones web expuestas en busca de la firma de solicitud-respuesta descrita y priorizar las correcciones para las instancias vulnerables de Next.js. Si se sospecha de una explotación, aísle el servidor afectado, preserve y revise los registros para buscar evidencia de ejecución de código y aplique los parches pertinentes sin demora.

Flujo del Ataque

Todavía estamos actualizando esta parte. Regístrate para recibir una notificación

Notificarme

Ejecución de Simulación

Prerequisito: La Verificación Previa de Telemetría y Base debe haber sido aprobada.

Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y pretender generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.

    • Narrativa del Ataque y Comandos:
      El atacante, habiendo identificado que el objetivo ejecuta una versión vulnerable de Next.js, crea una solicitud multipart maliciosa que imita un flujo legítimo de carga de activos. Al configurar elAgente-UsuarioaAssetnote/1.0.0e inyectando los encabezados internos de Next.jsNext-Action: xyX-Nextjs-Request-Id: b5dce965, la carga útil activa el componente en el lado del servidor que deserializa datos no confiables, provocando una excepción en tiempo de ejecución. El servidor responde con HTTP 500 e incluye el digest serializado (E{"digest), que la regla de detección supervisa.

    • Script de Prueba de Regresión:

      #!/usr/bin/env bash
      #
      # Simulación de exploit para la regla de detección de RCE de Next.js (T1595.002)
      # Genera el patrón de paquete exacto que la regla Sigma espera.
      #
      TARGET="http://127.0.0.1"
      ENDPOINT="/"
      USER_AGENT="Assetnote/1.0.0"
      BOUNDARY="----WebKitFormBoundary$(date +%s)"
      
      # Cuerpo multipart mínimo; el contenido es irrelevante para la detección.
      read -r -d '' PAYLOAD <

      Ejecute el script en una máquina que pueda alcanzar el servidor web objetivo. El estado HTTP esperado es500y el registro de errores del servidor contendrá la cadenaE{"digest.

  • Comandos de Limpieza:

    # Sin cambios persistentes en el objetivo; simplemente elimine cualquier archivo temporal local
    rm -f /tmp/exploit_payload.tmp 2>/dev/null || true