[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"seo-verification":3,"blog-nextjs-16-4-1-15-5-28-rce-actualizar-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-nextjs-16-4-1-15-5-28-rce-actualizar-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":148,"ctaBody":149,"ctaButton":150,"ctaUrl":151,"relatedPosts":152},500,"nextjs-16-4-1-15-5-28-rce-actualizar",{"fr":12,"en":13,"ar":14,"es":10},"nextjs-16-4-1-15-5-28-rce-mettre-a-jour","nextjs-16-4-1-15-5-28-rce-update","nextjs-16-4-1-15-5-28-تحديث-ثغرة-rce","Next.js 16.4.1 y 15.5.28: corregir las fallas RCE en un VPS","Dos RCE críticas y un DoS corregidos en Next.js 16.4.1 y 15.5.28. Versiones afectadas, comprobación en un VPS y redespliegue con PM2, Docker y Coolify.",9,0,false,"2026-10-23T00:00:00+00:00","2026-10-23T23:43:01+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fnextjs-16-4-1-15-5-28-rce-mettre-a-jour-poster.svg","El 14 de octubre de 2026, Next.js publicó una actualización fuera de ciclo: 16.4.1 y 15.5.28. Corrige dos ejecuciones remotas de código críticas, explotables sin cuenta, y una denegación de servicio. En un VPS, ninguna plataforma actualiza su aplicación por usted: le toca subir la versión, revisar el lockfile, reconstruir y reiniciar el proceso correcto. Un redespliegue con Docker puede incluso reutilizar una capa en caché y devolver la versión antigua a producción. Así se averigua en diez minutos si está expuesto, cómo actualizar y cómo demostrar que la corrección está realmente en marcha.",[35,39,49,52,83,86,105,108,126,129,138,142,145],{"type":36,"title":37,"body":38},"h2","Qué se publicó el 14 de octubre","El 14 de octubre de 2026, el equipo de Next.js publicó una actualización de seguridad fuera de ciclo: la versión 16.4.1 para la línea Active LTS y la versión 15.5.28 para la línea Maintenance LTS. Corrige tres fallas vinculadas a dependencias de origen: dos ejecuciones remotas de código críticas, sin autenticación, y una denegación de servicio de severidad alta. Dos de estas correcciones se habían aplazado desde la publicación de septiembre por retrasos en los proyectos de origen.\n\nEn un servidor que usted administra, la corrección no llega sola. Hay que subir `next`, comprobar que la biblioteca `sharp` lo sigue, reconstruir la aplicación y reiniciar el proceso que realmente sirve el tráfico. Este artículo recorre ese camino para PM2, Docker y Coolify, sin repetir la instalación de un servidor Next.js.",{"type":40,"title":41,"items":42},"ul","Lo esencial",[43,44,45,46,47,48],"**GHSA-673q-mjm6-r5xr (crítica)** — ejecución remota de código sin autenticación en una aplicación App Router con Cache Components, cuando una función `use cache` devuelve varios arreglos tipados. No se conoce ninguna solución alternativa. El aviso indica el rango 16.0.0 a 16.4.0 y una puntuación CVSS de 9.5.","**CVE-2026-96889 \u002F GHSA-2464-fhr4-w9xw (crítica)** — ejecución remota de código a través de una biblioteca de origen de la API de optimización de imágenes, cuando se usan archivos SVG, en Linux basado en glibc. Puntuación de 9.5. Medida oficial: sharp 0.35.5 o superior.","**GHSA-p3m5-59mp-jv5r (alta)** — denegación de servicio en una aplicación App Router con al menos una Server Action: peticiones manipuladas saturan el procesador y bloquean las siguientes peticiones del mismo proceso. Puntuación de 8.2. El Pages Router, o la ausencia de Server Actions, no está afectado.","**Versiones corregidas** — 16.4.1 para la línea 16 y 15.5.28 para la línea 15, con los comandos oficiales `npm install next@16.4.1` y `npm install next@15.5.28`.","**Sin CVE en dos avisos de tres** — solo la RCE de imágenes lleva un identificador CVE. Los otros dos se siguen por su identificador GHSA: una herramienta que solo busque CVE los pasará por alto.","**Incluso sin uso directo** — para la RCE de `use cache`, Vercel pide actualizar aunque la aplicación no contenga una función similar.",{"type":36,"title":50,"body":51},"Sin use cache ni SVG, por qué no basta","Tres razones para no quedarse en esa objeción. Primero, para la RCE de `use cache` el anuncio es explícito: no existe ninguna solución alternativa y se pide actualizar incluso cuando la aplicación no tiene una función similar. Segundo, la RCE de imágenes depende de una biblioteca de origen, y no siempre se sabe qué archivos SVG llegan al optimizador, sobre todo cuando las imágenes vienen de fuentes remotas. Tercero, la denegación de servicio solo necesita una Server Action, algo que muchos formularios de App Router ya incluyen.\n\nEl riesgo de rotura es limitado: la subida se mantiene dentro de la misma línea, 16.4.x o 15.5.x. Una única restricción que conviene conocer: la versión 16.4.1 declara Node 20.9 o superior, mientras que la 15.5.28 acepta Node 18.18 y posteriores. Si usa una 16.x más antigua, pasar a la 16.4.1 se queda dentro de la misma versión mayor.",{"type":53,"title":54,"headers":55,"rows":59},"comparison","Qué versión instalar según su línea",[56,57,58],"Su versión","Estado","Qué hacer",[60,64,68,72,75,79],[61,62,63],"16.0.0 a 16.4.0","Afectada por los tres avisos","Pasar a la 16.4.1 o a una 16.4.x más reciente",[65,66,67],"16.4.1 y posteriores","Corrección incluida","Revisar sharp y el redespliegue real",[69,70,71],"15.0.0 a 15.5.27","Afectada por la RCE de imágenes y el DoS","Pasar a la 15.5.28 y planificar la migración a 16.4.x",[73,66,74],"15.5.28","Planificar la migración a 16.4.x",[76,77,78],"13.x y 14.x","Afectada, sin corrección publicada para estas líneas","Migrar a la 15.5.28 o a la 16.4.1",[80,81,82],"10.0.0 a 12.x","Afectada por la RCE de imágenes, sin corrección publicada","Migrar a una línea mantenida",{"type":36,"title":84,"body":85},"Saber qué está funcionando realmente","La versión escrita en su repositorio no es la que responde a las peticiones. Un lockfile puede ser anterior a la corrección, una construcción de Docker puede reutilizar una capa en caché, un proceso de PM2 puede apuntar a un directorio de release antiguo. Con la salida `standalone`, Next.js copia en la carpeta de despliegue los archivos de `node_modules` que necesita: el `sharp` incluido es, por tanto, el presente en el momento de la construcción, no el que instaló después. Las comprobaciones siguientes se hacen en la máquina o en el contenedor que sirve el tráfico.",{"type":87,"title":88,"steps":89},"steps","Hacer inventario en cinco comprobaciones",[90,93,96,99,102],{"title":91,"body":92},"Leer las versiones de Next.js y de sharp","Desde la raíz del proyecto: `npm ls next sharp`, o `pnpm why sharp` con pnpm. Para la versión exacta de Next.js: `node -p \"require('next\u002Fpackage.json').version\"`. Un `sharp` inferior a 0.35.5 bajo `next` hay que corregirlo.",{"title":94,"body":95},"Localizar Cache Components y use cache","`grep -rn \"cacheComponents\" next.config.*` y después `grep -rln \"use cache\" app src`. Si `cacheComponents` no aparece, su aplicación no recorre el camino descrito en el aviso. Actualice igualmente: Vercel lo pide en todos los casos.",{"title":97,"body":98},"Localizar el uso de SVG","`grep -rn \"dangerouslyAllowSVG\\|remotePatterns\" next.config.*` y `find public -name \"*.svg\"`. Por defecto, la documentación indica que Next.js no optimiza las imágenes SVG y que `dangerouslyAllowSVG` las permite. La ausencia de este ajuste es buena señal, no una prueba: el aviso no detalla el camino exacto.",{"title":100,"body":101},"Localizar las Server Actions","`grep -rln \"use server\" app src`. Un solo archivo basta para que una aplicación App Router quede expuesta a la denegación de servicio.",{"title":103,"body":104},"Reconocer la biblioteca C del sistema","`ldd --version` muestra GNU libc en Debian, Ubuntu, AlmaLinux o Rocky, y musl libc en Alpine. El aviso solo menciona glibc y no dice nada de musl: no deduzca que Alpine se libra. En un contenedor: `docker exec \u003Ccontenedor> ldd --version`.",{"type":36,"title":106,"body":107},"Actualizar y luego revisar el lockfile","Ejecute el comando de su línea: `npm install next@16.4.1` o `npm install next@15.5.28`. Queda una trampa que el anuncio no detalla. La versión 16.4.1 declara `sharp` como dependencia opcional con el rango `^0.35.5`, pero la 15.5.28 declara `^0.34.3 || ^0.35.5`. Un lockfile que ya contiene una 0.34.x cumple ese rango: el gestor de paquetes no tiene motivo para subirla.\n\nRevise, por tanto, el resultado con `npm ls sharp`. Si muestra una versión inferior a 0.35.5, fuerce la subida con `npm install sharp@^0.35.5` o añada un override en `package.json`, por ejemplo `\"overrides\": { \"sharp\": \"^0.35.5\" }`. Con pnpm o yarn, el equivalente consiste en subir `sharp` o declarar un override. Confirme el lockfile en el repositorio: es el que leerán su CI y su imagen de Docker.",{"type":87,"title":109,"steps":110},"Redesplegar según su entorno",[111,114,117,120,123],{"title":112,"body":113},"Validar la construcción","`npm ci`, después `npm run build` y luego `npm ls next sharp`. Si la construcción falla por Node, compruebe la versión que exige la línea elegida.",{"title":115,"body":116},"PM2","Construya en el directorio que ejecuta PM2 y después `pm2 reload \u003Cnombre>`. Compruebe con `pm2 describe \u003Cnombre>` que el directorio de ejecución es el que acaba de reconstruir: con un esquema de releases, un enlace simbólico olvidado reinicia el código antiguo.",{"title":118,"body":119},"Docker","Reconstruya sin caché: `docker build --no-cache -t miapp:corregida .`, o al menos invalide la capa `npm ci`. Reinicie con `docker compose up -d --force-recreate`. Compare después la imagen del contenedor en marcha (`docker inspect -f '{{.Image}}' \u003Ccontenedor>`) con la que acaba de construir.",{"title":121,"body":122},"Coolify","Lance un redespliegue que ignore la caché de construcción y lea el registro: el paso de instalación de dependencias debe ejecutarse, no figurar como reutilizado. Un simple reinicio no reconstruye nada.",{"title":124,"body":125},"Demostrar la corrección","Lea la versión en el proceso en marcha, no en el repositorio: `docker exec \u003Ccontenedor> node -p \"require('next\u002Fpackage.json').version\"` debe mostrar 16.4.1 o 15.5.28 (o una versión más reciente de la misma línea). Compruebe `sharp` con `docker exec \u003Ccontenedor> grep '\"version\"' node_modules\u002Fsharp\u002Fpackage.json`, que debe mostrar 0.35.5 o superior.",{"type":36,"title":127,"body":128},"Si no puede redesplegar hoy","Para la RCE de `use cache` no existe ninguna medida alternativa: solo la actualización la corrige. Para las otras dos fallas, algunas mitigaciones reducen el riesgo mientras tanto. No sustituyen la corrección, y conviene anotarlas como provisionales en su registro de operaciones.",{"type":40,"title":130,"items":131},"Mitigaciones provisionales, no correcciones",[132,133,134,135,136,137],"**Subir solo sharp** — es la medida oficial para la RCE de imágenes: sharp 0.35.5 o superior. Compruebe que la construcción pasa y que la optimización de imágenes sigue funcionando.","**No servir SVG con el optimizador** — deje `dangerouslyAllowSVG` desactivado y no lo active sin una necesidad demostrada.","**Restringir `images.remotePatterns`** — limite las fuentes remotas que acepta el optimizador a los hosts que usted controla.","**Node como ejecutable PIE** — el aviso de sharp cita este modo para reducir el riesgo de ejecución de código, y precisa que los binarios oficiales de Node.js no son PIE.","**Reducir el daño posible** — proceso sin permisos de root, contenedor de solo lectura (`docker run --read-only`), ningún secreto innecesario en el entorno.","**Limitar el caudal delante de Next.js** — una regla `limit_req` en nginx y una alerta de procesador frenan una denegación de servicio sin impedirla.",{"type":139,"title":140,"body":141},"tip","Ejecute npm audit tras actualizar","`npm audit` se apoya en la base de avisos de GitHub: cubre por tanto los identificadores GHSA, incluidos los que no tienen CVE. Ejecútelo tras subir la versión y añádalo a su CI para que el próximo aviso no dependa de una vigilancia manual.",{"type":36,"title":143,"body":144},"Tras la corrección: vigilar y planificar la línea 15","Los avisos no publican ningún indicador de compromiso, así que no hay una firma precisa que buscar. Vigile las señales generales. Un proceso Node con el procesador saturado de forma sostenida apunta a la denegación de servicio. Reinicios inesperados, procesos hijos que la aplicación nunca lanza o conexiones salientes desde el usuario de la aplicación justifican una investigación. En los registros de nginx, `grep \"_next\u002Fimage\" access.log | grep -i svg` muestra las peticiones de optimización que apuntan a archivos SVG.\n\nEn la línea 15, tenga cuidado con el calendario. Según endoflife.date, el soporte de seguridad de la línea 15 terminó el 21 de octubre de 2026, mientras que la página de política de Next.js no da fecha y fija dos años de Maintenance LTS. La 15.5.28 puede ser, por tanto, la última corrección de esa línea: planifique la migración a la 16.4.x. La 16.4.2, publicada al día siguiente de la 16.4.1, solo contiene según sus notas retroportes sin relación con estos avisos.",{"type":36,"title":146,"body":147},"La documentación oficial","Anuncio de Next.js del 14 de octubre de 2026: https:\u002F\u002Fnextjs.org\u002Fblog\u002Fnextjs-security-update-october-14-2026\n\nAvisos de GitHub: https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Fsecurity\u002Fadvisories\u002FGHSA-673q-mjm6-r5xr, https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Fsecurity\u002Fadvisories\u002FGHSA-2464-fhr4-w9xw y https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Fsecurity\u002Fadvisories\u002FGHSA-p3m5-59mp-jv5r\n\nAviso de sharp: https:\u002F\u002Fgithub.com\u002Flovell\u002Fsharp\u002Fsecurity\u002Fadvisories\u002FGHSA-wq5f-xc86-pv6w\n\nNota de Netlify: https:\u002F\u002Fwww.netlify.com\u002Fchangelog\u002F2026-10-14-nextjs-react-security-vulnerabilities\u002F\n\nPolítica de soporte: https:\u002F\u002Fnextjs.org\u002Fsupport-policy y https:\u002F\u002Fendoflife.date\u002Fnextjs","Conserve el control de sus redespliegues","En un VPS ServOrbit.com tiene acceso root, una IPv4 dedicada y la elección del sistema operativo: Node, Docker y el momento de cada redespliegue quedan en sus manos. También existe una opción de administración del VPS; su alcance se describe en la página de la oferta.","Descubrir los VPS","\u002Fsolutions\u002Fdeveloppeurs",[153,177,200],{"id":154,"slug":155,"slugs":156,"title":160,"excerpt":161,"readTime":162,"views":18,"isPinned":19,"publishedAt":163,"updatedAt":164,"category":165,"categories":171,"featuredImage":30,"bgImage":31,"posterImage":173,"relatedSolution":174},46,"desplegar-nextjs-en-un-vps",{"fr":157,"en":158,"ar":159,"es":155},"deployer-nextjs-vps","deploy-a-nextjs-application-on-a-vps","نشر-تطبيق-nextjs-على-vps","Desplegar una aplicación Next.js en un VPS","Despliegue Next.js en un VPS: Node.js, PM2, Nginx, SSL y SSR. Guía completa para desarrolladores y agencias que quieren autoalojar.",13,"2026-05-05T00:00:00+00:00","2026-09-11T11:34:12+00:00",{"id":166,"name":167,"slug":168,"color":169,"icon":170},4,"Desarrollo","developpement","bg-warning\u002F10 text-warning","dev",[172],{"id":166,"name":167,"slug":168,"color":169,"icon":170},"\u002Fblog\u002Fcovers\u002Fdeployer-nextjs-vps-poster.svg",{"categorySlug":175,"appSlug":176},"desarrollo","nextjs-stack",{"id":178,"slug":179,"slugs":180,"title":184,"excerpt":185,"readTime":186,"views":18,"isPinned":19,"publishedAt":187,"updatedAt":188,"category":189,"categories":194,"featuredImage":30,"bgImage":31,"posterImage":196,"relatedSolution":197},371,"abandonar-heroku-vercel-vps-coolify-2026",{"fr":181,"en":182,"ar":183,"es":179},"quitter-heroku-vercel-vps-coolify-2026","leaving-heroku-vercel-vps-coolify-2026","مغادرة-heroku-vercel-vps-coolify-2026","Dejar Heroku y Vercel por un VPS + Coolify en 2026","Análisis del punto de equilibrio Heroku Pro vs VPS + Coolify en 2026: 5 señales de alerta, guía de migración paso a paso y comparativa Coolify \u002F Dokploy \u002F Kamal.",10,"2026-09-23T00:00:00+00:00","2026-09-23T15:23:17+00:00",{"id":190,"name":191,"slug":192,"color":193,"icon":192},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[195],{"id":190,"name":191,"slug":192,"color":193,"icon":192},"\u002Fblog\u002Fcovers\u002Fquitter-heroku-vercel-vps-coolify-2026-poster.svg",{"categorySlug":198,"appSlug":199},"despliegue-de-aplicaciones-devops","coolify",{"id":201,"slug":202,"slugs":203,"title":207,"excerpt":208,"readTime":209,"views":18,"isPinned":19,"publishedAt":210,"updatedAt":211,"category":212,"categories":213,"featuredImage":30,"bgImage":31,"posterImage":215,"relatedSolution":30},492,"nginx-cve-2026-15176-auditar-y-actualizar-a-1-30-6",{"fr":204,"en":205,"ar":206,"es":202},"nginx-cve-2026-15176-mettre-a-jour","nginx-cve-2026-15176-audit-and-patch-to-1-30-6","ثغرة-nginx-cve-2026-15176-الفحص-والتحديث-إلى-1-30-6","nginx CVE-2026-15176: auditar y actualizar a 1.30.6","nginx 1.30.6 y 1.31.7 corrigen cinco fallos, entre ellos CVE-2026-15176. Versiones afectadas, comandos de auditoría, actualización por sistema y mitigaciones.",12,"2026-10-22T00:00:00+00:00","2026-10-23T13:27:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[214],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fnginx-cve-2026-15176-mettre-a-jour-poster.svg",1792799491007]