<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Security on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/security/</link>
        <description>Recent content in Security 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://knightli.com/es/tags/security/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://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://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>
        <item>
        <title>Dirty Frag, Copy Fail y Fragnesia: comparación de tres fallos recientes de escalada local en Linux</title>
        <link>https://knightli.com/es/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</link>
        <pubDate>Fri, 15 May 2026 13:24:04 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</guid>
        <description>&lt;p&gt;En las últimas semanas han aparecido varias vulnerabilidades de escalada local de privilegios en el kernel de Linux: Dirty Frag, Copy Fail y Fragnesia. Parecen parte de una misma familia porque el resultado final es parecido: un usuario local con pocos privilegios podría convertirse en root.&lt;/p&gt;
&lt;p&gt;Pero desde el punto de vista operativo no conviene tratarlas como una sola vulnerabilidad. Sus módulos de entrada, rutas de activación, mitigaciones y ritmos de parcheo son distintos. Una lectura más precisa es que exponen un riesgo común en la frontera compleja entre la caché de páginas de Linux, &lt;code&gt;splice&lt;/code&gt;, socket buffers y rutas criptográficas.&lt;/p&gt;
&lt;p&gt;Este artículo solo analiza riesgos y respuesta. No incluye pasos reproducibles de explotación.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-cada-vulnerabilidad&#34;&gt;Qué Es Cada Vulnerabilidad
&lt;/h2&gt;&lt;h3 id=&#34;dirty-frag-cve-2026-43284&#34;&gt;Dirty Frag: CVE-2026-43284
&lt;/h3&gt;&lt;p&gt;Dirty Frag apunta principalmente a un problema de escritura en la caché de páginas dentro de la ruta de red del kernel de Linux. En los análisis públicos suele aparecer junto con dos problemas: el lado &lt;code&gt;xfrm-ESP&lt;/code&gt;, CVE-2026-43284, y el lado &lt;code&gt;rxrpc&lt;/code&gt;, CVE-2026-43500.&lt;/p&gt;
&lt;p&gt;CVE-2026-43284 está relacionado con el descifrado in-place cuando ESP maneja fragmentos &lt;code&gt;skb&lt;/code&gt; compartidos. La clave no es que el atacante modifique directamente un archivo en disco, sino que el kernel escribe en páginas compartidas que no debería modificar y termina afectando el contenido del archivo en la caché de páginas.&lt;/p&gt;
&lt;p&gt;Desde operaciones, lo importante es recordar que Dirty Frag toca &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;, un conjunto de módulos del kernel y rutas del subsistema de red. Está ligado a IPsec, ESP y RxRPC, por lo que la mitigación temporal también gira alrededor de esos módulos.&lt;/p&gt;
&lt;h3 id=&#34;copy-fail-cve-2026-31431&#34;&gt;Copy Fail: CVE-2026-31431
&lt;/h3&gt;&lt;p&gt;Copy Fail es una vulnerabilidad de escalada local de privilegios en el kernel de Linux divulgada por Theori / Xint Code. Su entrada no está en la ruta de red de IPsec, sino en la API criptográfica de espacio de usuario del kernel alrededor de &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Las explicaciones públicas la atribuyen a una optimización in-place introducida en 2017. En algunos casos, el kernel no copiaba datos como se esperaba y colocaba páginas de la caché en una ruta de destino escribible. Un atacante puede combinar &lt;code&gt;AF_ALG&lt;/code&gt; con &lt;code&gt;splice()&lt;/code&gt; para realizar una pequeña escritura controlada sobre páginas respaldadas por la caché.&lt;/p&gt;
&lt;p&gt;Su riesgo está en la alta explotabilidad y en el impacto sobre varias distribuciones principales. A diferencia de Dirty Frag, la mitigación temporal de Copy Fail se centra en restringir o desactivar &lt;code&gt;algif_aead&lt;/code&gt;, y en limitar la creación de sockets &lt;code&gt;AF_ALG&lt;/code&gt; en entornos de contenedores y CI.&lt;/p&gt;
&lt;h3 id=&#34;fragnesia-cve-2026-46300&#34;&gt;Fragnesia: CVE-2026-46300
&lt;/h3&gt;&lt;p&gt;Fragnesia es otra vulnerabilidad de escalada local de privilegios en el kernel de Linux divulgada por V12 Security, dentro de una superficie de ataque parecida a Dirty Frag. No es el mismo bug que Dirty Frag, pero sigue girando alrededor de módulos relacionados con IPsec ESP / &lt;code&gt;rxrpc&lt;/code&gt; y efectos de escritura en la caché de páginas.&lt;/p&gt;
&lt;p&gt;AlmaLinux la describe como el tercer problema de local-root en la misma zona amplia del código. El punto clave es que &lt;code&gt;skb_try_coalesce()&lt;/code&gt; no conservaba correctamente el marcador de fragment compartido al combinar fragmentos de socket buffer, lo que podía permitir que la ruta de recepción XFRM ESP-in-TCP descifrara in-place sobre páginas externas de la caché.&lt;/p&gt;
&lt;p&gt;En resumen, Fragnesia está más cerca de Dirty Frag. Ambas giran alrededor de &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, &lt;code&gt;rxrpc&lt;/code&gt;, fragmentos &lt;code&gt;skb&lt;/code&gt; y rutas de descifrado ESP. Sus mitigaciones temporales también se solapan bastante.&lt;/p&gt;
&lt;h2 id=&#34;similitudes-por-qué-son-peligrosas&#34;&gt;Similitudes: Por Qué Son Peligrosas
&lt;/h2&gt;&lt;p&gt;El punto común no es que el código exacto esté en el mismo lugar, sino que el resultado del ataque y el modelo de riesgo son muy parecidos.&lt;/p&gt;
&lt;p&gt;Primero, las tres son escaladas locales de privilegios. Normalmente el atacante necesita primero ejecutar código local como usuario normal y luego intentar convertirse en root. En un escritorio de un solo usuario no es una intrusión remota de un clic; en servidores multiusuario, CI runners, hosts de contenedores, máquinas de desarrollo compartidas y VPS con SSH expuesto, las entradas de bajo privilegio no son raras.&lt;/p&gt;
&lt;p&gt;Segundo, las tres se relacionan con escrituras en la caché de páginas. El atacante no siempre modifica de forma permanente el archivo en disco; puede afectar la copia en memoria. Esto reduce la fiabilidad de las revisiones tradicionales de integridad: el hash del disco puede parecer normal mientras la ruta de ejecución lee contenido contaminado desde la caché.&lt;/p&gt;
&lt;p&gt;Tercero, se parecen más a bugs lógicos deterministas que a condiciones de carrera sensibles al tiempo. Los materiales públicos insisten en que no requieren ganar una race condition. Los defensores no deberían subestimar la fiabilidad de explotación por experiencia con fallos más antiguos.&lt;/p&gt;
&lt;p&gt;Cuarto, amplifican el riesgo en entornos de contenedores y automatización. Código de bajo privilegio dentro de contenedores, jobs de CI, scripts de compilación o plugins de terceros puede convertir un &amp;ldquo;problema local&amp;rdquo; en un problema de plataforma si alcanza las interfaces relevantes del kernel del host.&lt;/p&gt;
&lt;h2 id=&#34;diferencias-una-mitigación-no-cubre-todo&#34;&gt;Diferencias: Una Mitigación No Cubre Todo
&lt;/h2&gt;&lt;p&gt;La mayor diferencia está en el módulo de entrada.&lt;/p&gt;
&lt;p&gt;La entrada crítica de Copy Fail es &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;, parte de la API criptográfica de espacio de usuario del kernel. Su defensa temporal se centra en desactivar o restringir &lt;code&gt;algif_aead&lt;/code&gt;, y usar seccomp para impedir que los contenedores creen sockets &lt;code&gt;AF_ALG&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;La entrada crítica de Dirty Frag está en &lt;code&gt;xfrm-ESP&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;. Está más cerca de las rutas de protocolo y manejo de socket buffers. La defensa temporal suele considerar desactivar &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;, pero eso puede afectar IPsec, VPN, túneles o capacidades de red relacionadas.&lt;/p&gt;
&lt;p&gt;Fragnesia también está en una zona cercana a Dirty Frag, pero el problema concreto es que &lt;code&gt;skb_try_coalesce()&lt;/code&gt; no conservaba el marcador de fragment compartido. Es más bien otra rama de la superficie de riesgo de Dirty Frag, no un problema de la API criptográfica de Copy Fail.&lt;/p&gt;
&lt;p&gt;Por eso, haber tratado Copy Fail no significa que Dirty Frag y Fragnesia estén cubiertas. Del mismo modo, desactivar &lt;code&gt;esp4&lt;/code&gt; / &lt;code&gt;esp6&lt;/code&gt; no elimina automáticamente Copy Fail. Hay que confirmar por separado el estado de parches y la estrategia de mitigación.&lt;/p&gt;
&lt;h2 id=&#34;cómo-evaluar-la-exposición&#34;&gt;Cómo Evaluar la Exposición
&lt;/h2&gt;&lt;p&gt;Para estas vulnerabilidades no basta con mirar el nombre de la distribución ni la versión mayor del kernel. Las distribuciones hacen backport de correcciones, los proveedores cloud mantienen ramas propias del kernel y las distribuciones empresariales pueden llevar parches adicionales.&lt;/p&gt;
&lt;p&gt;Un orden más seguro es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Revisar el aviso de seguridad de la distribución y el changelog del paquete del kernel.&lt;/li&gt;
&lt;li&gt;Confirmar si el paquete de kernel actual corrige el CVE correspondiente.&lt;/li&gt;
&lt;li&gt;En servidores cloud, hosts de contenedores y nodos de CI, revisar también avisos del proveedor o de la plataforma.&lt;/li&gt;
&lt;li&gt;Para mitigaciones temporales, confirmar si el negocio depende del módulo afectado.&lt;/li&gt;
&lt;li&gt;Después de actualizar el kernel, programar reinicio y comprobar que el kernel en ejecución cambió.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La trampa más común es &amp;ldquo;el paquete está actualizado, pero la máquina no se reinició&amp;rdquo;. Las vulnerabilidades del kernel no son como actualizaciones de servicios de espacio de usuario. Hasta arrancar con el nuevo kernel, el kernel viejo puede seguir ejecutándose.&lt;/p&gt;
&lt;h2 id=&#34;prioridad-operativa&#34;&gt;Prioridad Operativa
&lt;/h2&gt;&lt;p&gt;Los sistemas más urgentes no son todas las máquinas Linux por igual. Hay que empezar donde es más probable que exista ejecución de código con pocos privilegios.&lt;/p&gt;
&lt;p&gt;Entornos de prioridad alta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servidores de login multiusuario&lt;/li&gt;
&lt;li&gt;CI / CD runners&lt;/li&gt;
&lt;li&gt;Máquinas de compilación y empaquetado de artefactos&lt;/li&gt;
&lt;li&gt;Hosts de contenedores y nodos Kubernetes&lt;/li&gt;
&lt;li&gt;Máquinas de desarrollo compartidas&lt;/li&gt;
&lt;li&gt;Servidores cloud y VPS con SSH expuesto&lt;/li&gt;
&lt;li&gt;Plataformas que ejecutan scripts, plugins o colas de tareas de terceros&lt;/li&gt;
&lt;li&gt;Máquinas con vulnerabilidades web, contraseñas débiles o señales históricas de compromiso&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las máquinas cerradas, de un solo usuario y sin entrada externa de ejecución de código siguen teniendo riesgo si son vulnerables, pero normalmente pueden ir después.&lt;/p&gt;
&lt;h2 id=&#34;cómo-entender-la-mitigación-temporal&#34;&gt;Cómo Entender la Mitigación Temporal
&lt;/h2&gt;&lt;p&gt;La mitigación temporal no reemplaza al parche. Su valor es reducir la exposición cuando no se puede reiniciar de inmediato o mientras se esperan paquetes de la distribución.&lt;/p&gt;
&lt;p&gt;Para Copy Fail, el foco está en &lt;code&gt;algif_aead&lt;/code&gt; y &lt;code&gt;AF_ALG&lt;/code&gt;. Si el negocio no usa la interfaz criptográfica AF_ALG del kernel, se puede evaluar desactivar el módulo relacionado. En contenedores, conviene revisar primero las políticas seccomp para que cargas no confiables no puedan crear libremente el socket correspondiente.&lt;/p&gt;
&lt;p&gt;Para Dirty Frag y Fragnesia, el foco está en &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;. Si el sistema no depende de IPsec ESP, VPN relacionadas, túneles o RxRPC, se puede evaluar una desactivación temporal. No debe hacerse a ciegas en producción porque esos módulos pueden sostener cargas de red reales.&lt;/p&gt;
&lt;p&gt;El camino final sigue siendo actualizar el kernel. La mitigación temporal reduce superficie de ataque, pero no demuestra que el sistema sea completamente seguro.&lt;/p&gt;
&lt;h2 id=&#34;qué-nos-dicen-estos-tres-fallos&#34;&gt;Qué Nos Dicen Estos Tres Fallos
&lt;/h2&gt;&lt;p&gt;La advertencia importante no es solo el número de CVE. Estos fallos se concentran en rutas del kernel muy complejas: zero-copy, &lt;code&gt;splice&lt;/code&gt;, socket buffers, caché de páginas, interfaces criptográficas y optimizaciones de pila de protocolos.&lt;/p&gt;
&lt;p&gt;Estas rutas dan grandes beneficios de rendimiento, pero también vuelven más difícil mantener los límites de propiedad. Si un fragment está compartido, si una página puede escribirse in-place o si una optimización realmente solo reduce copias se convierte en parte del límite de seguridad.&lt;/p&gt;
&lt;p&gt;Para equipos de seguridad y operaciones, las conclusiones son prácticas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tratar la escalada local de privilegios como un amplificador de entradas ya existentes de bajo privilegio.&lt;/li&gt;
&lt;li&gt;Los contenedores no son una frontera natural de aislamiento frente a vulnerabilidades del kernel.&lt;/li&gt;
&lt;li&gt;Las revisiones de integridad no pueden mirar solo el contenido del disco.&lt;/li&gt;
&lt;li&gt;CI, máquinas de compilación y plataformas de plugins deben ser activos de alta prioridad.&lt;/li&gt;
&lt;li&gt;En parches de kernel hay que verificar tanto &amp;ldquo;instalado&amp;rdquo; como &amp;ldquo;en ejecución&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Dirty Frag, Copy Fail y Fragnesia son eventos recientes de alta prioridad en la escalada local de privilegios de Linux, pero no son tres nombres del mismo fallo.&lt;/p&gt;
&lt;p&gt;Copy Fail pasa por la ruta criptográfica &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;. Dirty Frag pasa por &lt;code&gt;xfrm-ESP&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;. Fragnesia, en una superficie cercana a Dirty Frag, vuelve a disparar riesgo de escritura en la caché de páginas por el manejo de marcadores de fragmentos &lt;code&gt;skb&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;La respuesta más sólida es actualizar el kernel según los avisos de la distribución y reiniciar. En sistemas que no puedan actualizarse de inmediato, evaluar la desactivación temporal de módulos o reglas seccomp más estrictas según la entrada real de cada vulnerabilidad. Priorizar entornos multi-tenant, CI, hosts de contenedores y desarrollo compartido.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notas de Theori sobre Copy Fail: &lt;a class=&#34;link&#34; href=&#34;https://github.com/theori-io/copy-fail-CVE-2026-31431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/theori-io/copy-fail-CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Aviso de CERT-EU sobre Copy Fail: &lt;a class=&#34;link&#34; href=&#34;https://cert.europa.eu/publications/security-advisories/2026-005/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cert.europa.eu/publications/security-advisories/2026-005/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Notas de AlmaLinux sobre Dirty Frag: &lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-07-dirty-frag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-07-dirty-frag/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Notas de AlmaLinux sobre Fragnesia: &lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Notas del PoC de V12 Security sobre Fragnesia: &lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/tree/main/fragnesia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/tree/main/fragnesia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Fragnesia (CVE-2026-46300): impacto y mitigación de una escalada local de privilegios en el kernel de Linux</title>
        <link>https://knightli.com/es/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</link>
        <pubDate>Fri, 15 May 2026 13:18:01 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</guid>
        <description>&lt;p&gt;El kernel de Linux acaba de sumar otra vulnerabilidad de escalada local de privilegios en una superficie de ataque cercana a Dirty Frag: Fragnesia (CVE-2026-46300).&lt;/p&gt;
&lt;p&gt;Según la divulgación de V12 Security, Fragnesia es una vulnerabilidad local de Linux. El atacante no necesita privilegios elevados previos en el host. Si puede ejecutar código local, podría aprovechar un fallo lógico en el subsistema XFRM ESP-in-TCP del kernel para modificar, byte a byte, contenido de archivos de solo lectura a través de la caché de páginas y terminar obteniendo un root shell.&lt;/p&gt;
&lt;p&gt;Fuente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notas del PoC de V12 Security: &lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este artículo no cubre pasos reproducibles de explotación. Se centra en los riesgos y la respuesta operativa.&lt;/p&gt;
&lt;h2 id=&#34;relación-con-dirty-frag&#34;&gt;Relación con Dirty Frag
&lt;/h2&gt;&lt;p&gt;V12 Security clasifica Fragnesia dentro de la familia de vulnerabilidades Dirty Frag. No es el mismo bug que Dirty Frag, sino otro problema en una superficie de ataque relacionada: XFRM ESP-in-TCP en el kernel de Linux.&lt;/p&gt;
&lt;p&gt;XFRM es el marco del kernel de Linux para procesar IPsec. ESP-in-TCP está relacionado con transportar tráfico ESP cifrado sobre TCP. El problema de Fragnesia está en la lógica de fragmentos de página compartidos y la combinación de socket buffers: en ciertas condiciones, el kernel puede perder la pista de que un fragment sigue compartido y dejar una zona de escritura controlable.&lt;/p&gt;
&lt;p&gt;Este tipo de fallo recuerda a Dirty Pipe / Dirty Frag y otros problemas de escritura en la caché de páginas. El código concreto no es el mismo, pero el efecto vuelve a caer sobre la copia en caché de un archivo de solo lectura.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-es-grave&#34;&gt;Por Qué Es Grave
&lt;/h2&gt;&lt;p&gt;Fragnesia es peligrosa por tres razones.&lt;/p&gt;
&lt;p&gt;Primero, es una escalada local de privilegios. Si un atacante ya puede ejecutar código como usuario normal, podría elevarse a root. Esto es especialmente sensible en servidores multiusuario, hosts de contenedores, CI runners, máquinas de desarrollo compartidas, VPS y entornos que exponen acceso shell.&lt;/p&gt;
&lt;p&gt;Segundo, no depende de una condición de carrera tradicional. Las notas de V12 describen una ruta que fuerza el procesamiento ESP-in-TCP sobre páginas de archivo ya incorporadas a un socket buffer mediante &lt;code&gt;splice&lt;/code&gt;, lo que permite influir byte a byte en el contenido de la caché de páginas. Eso hace que el riesgo sea práctico, no solo teórico.&lt;/p&gt;
&lt;p&gt;Tercero, modifica la caché de páginas, no el archivo en disco. El ejemplo público usa &lt;code&gt;/usr/bin/su&lt;/code&gt; como objetivo. Tras una explotación correcta, el archivo en disco no queda modificado de forma permanente; el cambio vive en la memoria. Las revisiones que solo comparan hashes o integridad del disco pueden no ver nada extraño.&lt;/p&gt;
&lt;p&gt;Ese es el punto incómodo para los administradores: el archivo parece intacto, pero al ejecutar la copia contaminada desde la caché de páginas puede activarse la escalada.&lt;/p&gt;
&lt;h2 id=&#34;alcance-conocido&#34;&gt;Alcance Conocido
&lt;/h2&gt;&lt;p&gt;V12 Security indica que los kernels afectados por Dirty Frag y sin los parches relevantes del 13 de mayo de 2026 también están afectados por Fragnesia. Los entornos verificados públicamente incluyen Ubuntu 22.04, Ubuntu 24.04 y kernels como &lt;code&gt;6.8.0-111-generic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Hay dos matices importantes.&lt;/p&gt;
&lt;p&gt;Primero, no basta con mirar la versión mayor de la distribución. Que Ubuntu 22.04 / 24.04 esté afectado depende del estado real de parches del kernel, no solo del nombre de la distribución.&lt;/p&gt;
&lt;p&gt;Segundo, no conviene confiar únicamente en las restricciones predeterminadas de AppArmor para namespaces de usuario sin privilegios. En Ubuntu pueden elevar la barrera, pero la divulgación las trata como un problema adicional de bypass, no como una corrección del fallo.&lt;/p&gt;
&lt;p&gt;La forma fiable de decidir sigue siendo revisar los avisos de seguridad de la distribución y las actualizaciones del paquete del kernel.&lt;/p&gt;
&lt;h2 id=&#34;mitigación-temporal&#34;&gt;Mitigación Temporal
&lt;/h2&gt;&lt;p&gt;Si un sistema no puede actualizar el kernel de inmediato, primero hay que evaluar si depende de los módulos de protocolo relacionados.&lt;/p&gt;
&lt;p&gt;La mitigación indicada por V12 es la misma que para Dirty Frag: si el sistema no depende de IPsec ESP ni de RxRPC, se puede evaluar desactivar módulos como &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;. Esto puede afectar capacidades de red, así que no debe aplicarse a ciegas en producción. Antes hay que confirmar si el negocio usa IPsec, VPN, túneles o funciones relacionadas del kernel.&lt;/p&gt;
&lt;p&gt;Un orden de respuesta más seguro es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirmar si la distribución ya publicó una actualización de seguridad del kernel.&lt;/li&gt;
&lt;li&gt;Instalar primero el parche del kernel y programar el reinicio.&lt;/li&gt;
&lt;li&gt;Si no se puede actualizar de inmediato, evaluar la desactivación temporal de módulos.&lt;/li&gt;
&lt;li&gt;Priorizar sistemas multiusuario y entornos de CI / compilación.&lt;/li&gt;
&lt;li&gt;Revisar cuentas locales innecesarias, shell, superficie de escape de contenedores y entradas de ejecución de bajo privilegio.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No hay que tratar la desactivación de módulos como corrección final. Es una reducción temporal de exposición.&lt;/p&gt;
&lt;h2 id=&#34;si-se-sospecha-explotación&#34;&gt;Si Se Sospecha Explotación
&lt;/h2&gt;&lt;p&gt;Una característica de Fragnesia es la contaminación de la caché de páginas. V12 señala que, tras la explotación, la copia del archivo objetivo en la caché puede contener contenido inyectado, y ejecuciones posteriores pueden seguir comportándose de forma anómala hasta que la página sea expulsada o el sistema se reinicie.&lt;/p&gt;
&lt;p&gt;Si se sospecha que el sistema fue explotado, conviene al menos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preservar logs y registros de auditoría cuanto antes.&lt;/li&gt;
&lt;li&gt;Revisar inicios de sesión locales anómalos, actividad de usuarios de bajo privilegio, procesos sospechosos y rastros de root shell.&lt;/li&gt;
&lt;li&gt;Limpiar la caché de páginas relevante o reiniciar directamente.&lt;/li&gt;
&lt;li&gt;Actualizar a un kernel corregido.&lt;/li&gt;
&lt;li&gt;Verificar binarios críticos, pero sin depender solo de hashes del disco.&lt;/li&gt;
&lt;li&gt;Rotar credenciales y claves potencialmente expuestas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En servidores de producción, es mejor tratarlo como un posible incidente de escalada local de privilegios, no solo como una actualización rutinaria.&lt;/p&gt;
&lt;h2 id=&#34;qué-máquinas-priorizar&#34;&gt;Qué Máquinas Priorizar
&lt;/h2&gt;&lt;p&gt;La prioridad no debe repartirse por igual entre todas las máquinas Linux. Hay que empezar por los lugares donde un atacante tiene más probabilidades de obtener ejecución de código con pocos privilegios.&lt;/p&gt;
&lt;p&gt;Entornos de mayor prioridad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servidores de login multiusuario&lt;/li&gt;
&lt;li&gt;CI / CD runners&lt;/li&gt;
&lt;li&gt;Máquinas de compilación&lt;/li&gt;
&lt;li&gt;Máquinas de desarrollo compartidas&lt;/li&gt;
&lt;li&gt;Hosts de contenedores&lt;/li&gt;
&lt;li&gt;VPS y servidores cloud&lt;/li&gt;
&lt;li&gt;Nodos de borde con SSH expuesto&lt;/li&gt;
&lt;li&gt;Plataformas que ejecutan scripts o plugins de terceros&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las máquinas cerradas, de un solo usuario y sin entrada externa de ejecución de código siguen teniendo riesgo si son vulnerables, pero la urgencia puede ser menor.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Fragnesia merece atención no por tener un nombre nuevo, sino porque vuelve a llevar la escalada local de privilegios en Linux a una frontera compleja: la caché de páginas y los subsistemas de red del kernel.&lt;/p&gt;
&lt;p&gt;Para administradores, lo importante no es estudiar los detalles de explotación, sino confirmar el estado de parches del kernel, evaluar si se depende de ESP / RxRPC, actualizar primero las máquinas más expuestas y entender que &amp;ldquo;el archivo en disco no cambió&amp;rdquo; no significa &amp;ldquo;el sistema no fue afectado&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Si el sistema está afectado, la respuesta final sigue siendo instalar cuanto antes la actualización del kernel ofrecida por la distribución. Desactivar módulos temporalmente es solo una medida puente, no un reemplazo del parche.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
