<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>SSRF on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/ssrf/</link>
        <description>Recent content in SSRF on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sun, 17 May 2026 17:27:13 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/ssrf/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>SSRF de alta gravedad en Next.js CVE-2026-44578: alcance e indicaciones de actualización</title>
        <link>https://www.knightli.com/es/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</link>
        <pubDate>Sun, 17 May 2026 17:27:13 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</guid>
        <description>&lt;p&gt;Next.js divulgó en mayo de 2026 una vulnerabilidad SSRF de alta gravedad: CVE-2026-44578.&lt;/p&gt;
&lt;p&gt;Según el aviso de seguridad de GitHub / Vercel &lt;code&gt;GHSA-c4j6-fc7j-m34r&lt;/code&gt; y el registro de NVD, el problema afecta a aplicaciones Next.js autoalojadas que usan el servidor Node.js integrado y están expuestas a solicitudes WebSocket upgrade maliciosas. Un atacante podría hacer que el servidor proxifique solicitudes hacia destinos internos o externos arbitrarios, exponiendo servicios internos o endpoints de metadata en la nube.&lt;/p&gt;
&lt;p&gt;Los despliegues alojados en Vercel no están afectados. Las versiones corregidas son &lt;code&gt;15.5.16&lt;/code&gt; y &lt;code&gt;16.2.5&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;resumen-rápido&#34;&gt;Resumen rápido
&lt;/h2&gt;&lt;p&gt;Si ejecutas Next.js en tus propios servidores, contenedores, Kubernetes, ECS, VPS, bare metal o PaaS autogestionado, revisa esto primero.&lt;/p&gt;
&lt;p&gt;Rangos afectados:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 13.4.13 &amp;lt; 15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 16.0.0 &amp;lt; 16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Casos no afectados o de menor riesgo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aplicaciones desplegadas en Vercel.&lt;/li&gt;
&lt;li&gt;Aplicaciones actualizadas a &lt;code&gt;15.5.16&lt;/code&gt;, &lt;code&gt;16.2.5&lt;/code&gt; o versiones posteriores.&lt;/li&gt;
&lt;li&gt;Escenarios donde no se expone el servidor Node.js integrado.&lt;/li&gt;
&lt;li&gt;Entornos donde el proxy inverso o balanceador ya bloquea WebSocket upgrades innecesarios y el tráfico saliente está restringido.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Orden recomendado de respuesta:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirmar la versión de &lt;code&gt;next&lt;/code&gt; que realmente corre en producción.&lt;/li&gt;
&lt;li&gt;Actualizar las aplicaciones autoalojadas a una versión corregida cuanto antes.&lt;/li&gt;
&lt;li&gt;Si no puedes actualizar de inmediato, bloquear WebSocket upgrades innecesarios en el proxy inverso o balanceador.&lt;/li&gt;
&lt;li&gt;Restringir el acceso de los servidores de aplicación a metadata cloud, paneles internos y servicios internos sensibles.&lt;/li&gt;
&lt;li&gt;Revisar solicitudes WebSocket upgrade recientes y logs de acceso interno.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;qué-es-la-vulnerabilidad&#34;&gt;Qué es la vulnerabilidad
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 es una vulnerabilidad Server-Side Request Forgery, o SSRF.&lt;/p&gt;
&lt;p&gt;El riesgo central de SSRF es que el atacante no accede directamente a sistemas internos, sino que induce a tu servidor a enviar solicitudes en su nombre. Los servidores suelen estar más cerca de redes privadas, plataformas cloud y servicios internos, por lo que si se convierten en proxy pueden alcanzar recursos que el atacante no podría tocar desde fuera.&lt;/p&gt;
&lt;p&gt;En este caso de Next.js, el problema está en la ruta de manejo de WebSocket upgrade. El aviso indica que aplicaciones autoalojadas que usan el servidor Node.js integrado pueden ser forzadas, mediante solicitudes WebSocket upgrade construidas especialmente, a proxificar solicitudes hacia destinos internos o externos arbitrarios.&lt;/p&gt;
&lt;p&gt;Los puntos de riesgo incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servicios HTTP internos.&lt;/li&gt;
&lt;li&gt;Paneles de administración.&lt;/li&gt;
&lt;li&gt;Direcciones de metadata cloud.&lt;/li&gt;
&lt;li&gt;Servicios internos de contenedores o clústeres.&lt;/li&gt;
&lt;li&gt;APIs internas accesibles solo desde el servidor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La puntuación CVSS v3.1 es &lt;code&gt;8.6 High&lt;/code&gt;, con este vector:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto significa que el ataque es de red, de baja complejidad, no requiere privilegios ni interacción del usuario, y afecta principalmente a la confidencialidad.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-el-autoalojamiento-es-más-peligroso&#34;&gt;Por qué el autoalojamiento es más peligroso
&lt;/h2&gt;&lt;p&gt;El aviso afirma explícitamente que los despliegues alojados en Vercel no están afectados.&lt;/p&gt;
&lt;p&gt;El foco real son los despliegues autoalojados. La razón es simple: sus entornos de red varían mucho. Algunos exponen directamente el origin server; otros están detrás de Nginx, Traefik, Ingress, Cloudflare, ALB o gateways propios; otros corren en VMs cloud, redes de contenedores o clústeres Kubernetes.&lt;/p&gt;
&lt;p&gt;Si esos entornos no restringen el tráfico saliente, el proceso Next.js podría alcanzar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Direcciones de metadata cloud como &lt;code&gt;169.254.169.254&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rangos de IP privados.&lt;/li&gt;
&lt;li&gt;Servicios expuestos solo dentro de una VPC.&lt;/li&gt;
&lt;li&gt;Redis, Elasticsearch, Prometheus, Grafana y otros componentes internos.&lt;/li&gt;
&lt;li&gt;Kubernetes Services, Pods o endpoints de administración.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso el peligro de SSRF no está solo en Next.js, sino en qué puede alcanzar desde la red donde vive.&lt;/p&gt;
&lt;h2 id=&#34;cómo-saber-si-estás-afectado&#34;&gt;Cómo saber si estás afectado
&lt;/h2&gt;&lt;p&gt;Primer paso: revisar la versión de &lt;code&gt;next&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En el directorio del proyecto:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm ls next
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm why next
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;También puedes inspeccionar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package-lock.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat pnpm-lock.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat yarn.lock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si la versión cae dentro de estos rangos, hay que actuar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 13.4.13 &amp;lt; 15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 16.0.0 &amp;lt; 16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Segundo paso: revisar el modelo de despliegue.&lt;/p&gt;
&lt;p&gt;Presta atención a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servicios de producción iniciados con &lt;code&gt;next start&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Servidores Node.js personalizados que alojan Next.js.&lt;/li&gt;
&lt;li&gt;Imágenes Docker que arrancan directamente un servidor Next.js.&lt;/li&gt;
&lt;li&gt;Autoalojamiento en Kubernetes / ECS / VPS / bare metal.&lt;/li&gt;
&lt;li&gt;Un origin de Next.js todavía accesible detrás de un proxy inverso.&lt;/li&gt;
&lt;li&gt;Redes de aplicación que pueden acceder a servicios internos o metadata cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si la aplicación está desplegada en Vercel, el aviso oficial indica que no está afectada por esta vulnerabilidad. Aun así, conviene mantener Next.js actualizado, porque versiones cercanas pueden incluir otros parches de seguridad.&lt;/p&gt;
&lt;h2 id=&#34;a-qué-versión-actualizar&#34;&gt;A qué versión actualizar
&lt;/h2&gt;&lt;p&gt;Las versiones corregidas oficiales son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ejemplo de actualización:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install next@15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O si usas 16.x:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install next@16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;pnpm:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add next@15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add next@16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después, reconstruye y publica:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O sigue tu flujo CI/CD para reconstruir y publicar la imagen Docker.&lt;/p&gt;
&lt;p&gt;Si tu proyecto está fijado en 14.x o 15.x, no conviene saltar apresuradamente a 16.x solo por este parche. Es más seguro actualizar primero a la línea &lt;code&gt;15.5.16&lt;/code&gt;, probar y publicar, y luego planificar una migración de versión mayor.&lt;/p&gt;
&lt;h2 id=&#34;mitigaciones-temporales&#34;&gt;Mitigaciones temporales
&lt;/h2&gt;&lt;p&gt;Si no puedes actualizar de inmediato, la idea principal del aviso es: no exponer el origin server directamente a redes no confiables; si WebSocket upgrade no es necesario, bloquearlo en el proxy inverso o balanceador; y restringir en lo posible el tráfico saliente del origin.&lt;/p&gt;
&lt;p&gt;Medidas posibles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No exponer directamente el origin server de Next.js.&lt;/li&gt;
&lt;li&gt;Filtrar WebSocket upgrades innecesarios en Nginx, Ingress, ALB, Cloudflare u otros puntos de entrada.&lt;/li&gt;
&lt;li&gt;Si el negocio no usa WebSocket, rechazar solicitudes con semántica de upgrade.&lt;/li&gt;
&lt;li&gt;Aplicar restricciones de egress para impedir acceso a metadata cloud y rangos internos sensibles.&lt;/li&gt;
&lt;li&gt;Usar modos de metadata más seguros ofrecidos por la nube, por ejemplo servicios de metadata que requieren token.&lt;/li&gt;
&lt;li&gt;Añadir autenticación y aislamiento de red a paneles administrativos, bases de datos, cachés y sistemas de monitoreo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Las reglas de proxy inverso son mitigaciones temporales, no sustituyen la actualización. Una vulnerabilidad del framework debe resolverse finalmente con una versión corregida.&lt;/p&gt;
&lt;h2 id=&#34;revisión-operativa&#34;&gt;Revisión operativa
&lt;/h2&gt;&lt;p&gt;Como este problema afecta sobre todo a la confidencialidad, la pregunta clave es si el servidor fue usado para alcanzar recursos internos.&lt;/p&gt;
&lt;p&gt;Revisa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logs web con &lt;code&gt;Upgrade&lt;/code&gt;, &lt;code&gt;Connection&lt;/code&gt;, &lt;code&gt;Host&lt;/code&gt;, rutas o IPs de origen anómalas.&lt;/li&gt;
&lt;li&gt;Logs del proxy inverso o balanceador con WebSocket upgrades inusuales.&lt;/li&gt;
&lt;li&gt;Conexiones salientes anómalas cerca del servicio Next.js.&lt;/li&gt;
&lt;li&gt;Logs de acceso a metadata cloud o uso de credenciales.&lt;/li&gt;
&lt;li&gt;Accesos anómalos a servicios internos de administración, monitoreo, caché o búsqueda.&lt;/li&gt;
&lt;li&gt;Uso inusual de credenciales temporales IAM, access keys o tokens.&lt;/li&gt;
&lt;li&gt;Procesos, descargas o movimientos laterales sospechosos en contenedores o hosts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si sospechas explotación:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conserva logs y evidencia.&lt;/li&gt;
&lt;li&gt;Rota credenciales cloud, API keys, contraseñas de bases de datos y session secrets que pudieran haberse expuesto.&lt;/li&gt;
&lt;li&gt;Revisa llamadas API recientes en la cuenta cloud.&lt;/li&gt;
&lt;li&gt;Comprueba registros de acceso a servicios internos.&lt;/li&gt;
&lt;li&gt;Reconstruye contenedores o hosts afectados.&lt;/li&gt;
&lt;li&gt;Revisa controles de egress y protección de metadata.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;no-es-lo-mismo-que-el-rce-de-reactnextjs&#34;&gt;No es lo mismo que el RCE de React/Next.js
&lt;/h2&gt;&lt;p&gt;Un punto fácil de confundir: CVE-2026-44578 es un SSRF en WebSocket upgrade de Next.js, no el RCE previo relacionado con React Server Components.&lt;/p&gt;
&lt;p&gt;Su impacto central es hacer que el servidor solicite direcciones internas o externas elegidas por el atacante. El riesgo principal es exposición de información y exploración de recursos internos.&lt;/p&gt;
&lt;p&gt;Los problemas RCE de React Server Components son riesgos de ejecución de código, con consecuencias y rangos de parche distintos.&lt;/p&gt;
&lt;p&gt;Por eso no basta con leer &amp;ldquo;Next.js tiene una vulnerabilidad&amp;rdquo;. Hay que mapear el CVE concreto con versiones afectadas, modelo de despliegue y versiones corregidas.&lt;/p&gt;
&lt;h2 id=&#34;equipos-que-deben-priorizarlo&#34;&gt;Equipos que deben priorizarlo
&lt;/h2&gt;&lt;p&gt;Prioridad máxima:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sitios Next.js de producción autoalojados.&lt;/li&gt;
&lt;li&gt;Despliegues en VMs cloud, contenedores, Kubernetes o redes internas.&lt;/li&gt;
&lt;li&gt;Servidores de aplicación que pueden acceder a servicios de metadata cloud.&lt;/li&gt;
&lt;li&gt;Servidores de aplicación que alcanzan paneles internos, bases de datos, cachés o monitoreo.&lt;/li&gt;
&lt;li&gt;Origin servers &lt;code&gt;next start&lt;/code&gt; expuestos directamente.&lt;/li&gt;
&lt;li&gt;Versiones antiguas de &lt;code&gt;next&lt;/code&gt; sin proceso claro de actualización.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prioridad relativamente menor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aplicaciones desplegadas completamente en Vercel.&lt;/li&gt;
&lt;li&gt;Aplicaciones ya actualizadas a versiones corregidas.&lt;/li&gt;
&lt;li&gt;Origins no expuestos directamente, con la capa de entrada bloqueando WebSocket upgrades innecesarios.&lt;/li&gt;
&lt;li&gt;Control estricto de salida que impide alcanzar recursos internos sensibles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero &amp;ldquo;menor prioridad&amp;rdquo; no significa que no haya que actualizar. Next.js es un componente muy expuesto, y mantener versiones antiguas del framework acumula riesgo.&lt;/p&gt;
&lt;h2 id=&#34;checklist-para-equipos-de-desarrollo&#34;&gt;Checklist para equipos de desarrollo
&lt;/h2&gt;&lt;p&gt;Puedes seguir esta lista:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Confirmar la versión de &lt;code&gt;next&lt;/code&gt; en todos los repositorios.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Identificar todos los despliegues autoalojados, no solo los proyectos en Vercel.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Marcar servicios que usan &lt;code&gt;next start&lt;/code&gt; o el servidor Node.js integrado.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Actualizar a &lt;code&gt;15.5.16&lt;/code&gt;, &lt;code&gt;16.2.5&lt;/code&gt; o posterior.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Reconstruir y publicar imágenes de producción.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Bloquear WebSocket upgrades innecesarios en la capa de entrada.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Restringir acceso de servidores de aplicación a metadata cloud y rangos internos sensibles.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Revisar solicitudes upgrade anómalas recientes y acceso saliente.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Rotar credenciales que pudieran haberse expuesto.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Incluir actualizaciones de seguridad de Next.js en el proceso de actualización de dependencias.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 es una vulnerabilidad SSRF de alta gravedad en Next.js que merece atención rápida.&lt;/p&gt;
&lt;p&gt;No afecta a despliegues alojados en Vercel, pero sí cubre muchas aplicaciones Next.js autoalojadas: desde &lt;code&gt;13.4.13&lt;/code&gt; hasta antes de &lt;code&gt;15.5.16&lt;/code&gt;, y desde &lt;code&gt;16.0.0&lt;/code&gt; hasta antes de &lt;code&gt;16.2.5&lt;/code&gt;. El punto de activación está en el manejo de WebSocket upgrade. Un atacante puede hacer que el servidor proxifique solicitudes hacia direcciones internas o externas, exponiendo servicios internos o endpoints de metadata cloud.&lt;/p&gt;
&lt;p&gt;La corrección directa es actualizar a &lt;code&gt;15.5.16&lt;/code&gt; o &lt;code&gt;16.2.5&lt;/code&gt;. Las mitigaciones temporales son no exponer directamente el origin server, bloquear WebSocket upgrades innecesarios y restringir el tráfico saliente del servidor de aplicación.&lt;/p&gt;
&lt;p&gt;Para equipos de operaciones, lo importante no es solo la puntuación CVE, sino qué puede alcanzar tu servidor Next.js desde su posición en la red. En SSRF, el impacto real suele depender de los recursos internos y permisos cloud detrás del servidor.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Advisory: GHSA-c4j6-fc7j-m34r&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-44578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD: CVE-2026-44578&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security.snyk.io/vuln/SNYK-JS-NEXT-16638682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snyk: SNYK-JS-NEXT-16638682&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
