Dos CVE recién divulgados —CVE-2025-55182 en React Server Components y CVE-2025-29927 en el middleware de Next.js— abren una vía para la ejecución remota de código y la omisión de autenticación en stacks modernos de JavaScript. Una sola solicitud puede activar las fallas; la configuración por sí sola no puede detenerlas. Los equipos que dependen de React Server Components o del middleware de Next.js deben tratar estos errores como urgentes y aplicar parches de inmediato.
Por qué el ruido en los logs es engañoso
Extrajimos un mes de logs de borde de un sitio de Next.js en producción. El conjunto contenía 8,900 solicitudes marcadas como maliciosas. Casi todas fallaron en el primer salto. La URL más común fue /wp-admin/install.php, con 518 impactos, a pesar de que el sitio no ejecuta WordPress, no usa PHP y no tiene archivos de WordPress.
Los escáneres automatizados generan este tráfico. Saturan internet con conjeturas, buscando:
- Archivos de secretos y configuración – 64 % de los intentos
- Paneles y shells de PHP – 22 %
- Rutas de WordPress – 11 %
- Herramientas de bases de datos – 1 %
Un alto recuento de solicitudes bloqueadas solo indica que no estás ejecutando el software que los bots esperan. No garantiza que la aplicación que sí estás ejecutando sea segura.
Los ataques silenciosos a nivel de framework
Cuando un atacante apunta a una aplicación Next.js, el tráfico parece el de solicitudes de usuarios ordinarios, utilizando los propios mecanismos del framework contra él.
React2Shell (CVE-2025-55182)
Un fallo en React Server Components permite a un atacante inyectar un payload especialmente diseñado que el servidor evalúa como código. El resultado es una ejecución remota de código completa sin necesidad de evadir un firewall o un filtro de aplicaciones web. La vulnerabilidad reside dentro del framework; el único remedio es actualizar a una versión que contenga la corrección.
Bypass de autorización en el middleware (CVE-2025-29927)
El middleware de Next.js puede aplicar controles de seguridad basados en los encabezados de la solicitud. Este CVE muestra que un atacante puede proporcionar un encabezado interno particular y hacer que el middleware omita esos controles por completo. Desde el exterior, la solicitud parece ordinaria, lo que dificulta su detección.
Ambos errores demuestran que el tráfico más peligroso puede mezclarse con el tráfico cotidiano, evadiendo las alarmas que detectan las ruidosas sondas de WordPress.
Lo que está en juego
- Los desarrolladores que tratan las actualizaciones del framework como opcionales se arriesgan a que sus servidores sean tomados por completo.
- Los equipos de operaciones que confían en configuraciones estáticas para endurecer un stack no pueden protegerse contra código que se ejecuta dentro del propio framework.
Una lista de verificación de defensa práctica
- Higiene de despliegue – No envíes secretos en archivos como
.env. Almacénalos en variables de entorno suministradas en tiempo de ejecución o en un sistema dedicado de gestión de secretos. - Superficie de ataque mínima – Desactiva las funciones del framework que no utilices. Aplica una
Content-Security-Policyestricta que bloquee la carga de scripts no autorizados. - Parcheo rápido – Automatiza el pipeline de construcción para que una nueva versión del framework pueda ser probada y desplegada a las pocas horas de su lanzamiento. Trata las actualizaciones de seguridad como una parte regular de la cadencia de lanzamientos, no como algo secundario.
Qué vigilar a continuación
- Suscríbete a los feeds oficiales de avisos de seguridad de React, Next.js y cualquier otra librería de tiempo de ejecución de la que dependas.
- Integra escáneres de vulnerabilidades que comprendan los metadatos de los paquetes de JavaScript, de modo que un CVE recién publicado active una alerta automática.
- Construye un pipeline de despliegue preparado para rollback; si un parche introduce regresiones, podrás revertir rápidamente sin dejar el sistema expuesto.
La lección es clara: los ataques más ruidosos en tus logs suelen ser una distracción. El peligro real se esconde en el framework en el que tu código confía. Mantén el stack ligero, almacena los secretos de forma segura y trata los parches como algo rutinario, y convertirás las amenazas silenciosas a nivel de framework en riesgos manejables.
