El 14 de octubre Next.js publicó 16.4.1 y 15.5.28 con dos correcciones críticas de ejecución remota de código y una de denegación de servicio, y PgBouncer 1.26.1 corrigió una omisión de autenticación SCRAM; si usas cualquiera de los dos, revisa tu versión hoy.
1. Next.js: la actualización fuera de ciclo del 14 de octubre#
El 14 de octubre de 2026 Next.js publicó una actualización de seguridad fuera de ciclo con dos correcciones aplazadas de la versión de septiembre por retrasos en dependencias de terceros. Las versiones corregidas son la 16.4.1 (línea de soporte activo) y la 15.5.28 (línea de mantenimiento). Para instalarlas: npm install [email protected] o npm install [email protected].
| Hallazgo | Gravedad | Quién queda expuesto | Identificador |
|---|---|---|---|
| Ejecución remota de código sin autenticación en funciones use cache que devuelven arreglos tipados | Crítica | App Router con Cache Components; sin solución alternativa | GHSA-673q-mjm6-r5xr |
| Ejecución remota de código en la API de optimización de imágenes con SVG | Crítica | Next.js sobre Linux con glibc; solución alternativa: sharp 0.35.5 o superior | CVE-2026-96889 |
| Denegación de servicio en el App Router con Server Actions | Alta | Apps con al menos una Server Action; el Pages Router no se ve afectado | GHSA-p3m5-59mp-jv5r |
Para la ejecución remota de código en use cache, Next.js indica que no hay solución alternativa y que hay que actualizar aunque tu aplicación no tenga funciones parecidas. Para la de imágenes con SVG, la solución alternativa es usar sharp 0.35.5 o superior; actualizar Next.js hace que el gestor de paquetes instale una versión corregida.
Documentación: Next.js: actualización de seguridad del 14 de octubre de 2026 ↗
2. Next.js: la versión de septiembre#
El 30 de septiembre de 2026 Next.js ya había publicado correcciones en las versiones 16.3.8 y 15.5.27. Los hallazgos son en su mayoría de gravedad media y dependen de configuraciones concretas. La tabla indica a quién afecta cada uno.
| Hallazgo | Gravedad | Quién queda expuesto |
|---|---|---|
| SSRF en la optimización de imágenes (CVE-2026-94483) | Alta | Apps con images.remotePatterns configurado |
| Envenenamiento de caché SSG/ISR en Pages Router autoalojado (CVE-2026-94543) | Media | Autoalojado; Vercel no se ve afectado |
| Envenenamiento de caché con página comodín en la raíz (CVE-2026-94484) | Media | Páginas SSG/ISR con ruta comodín en la raíz |
| Fuga en rutas de imágenes de metadatos (CVE-2026-94485) | Media | App Router compilado con webpack; Turbopack no se ve afectado |
| Fuga entre valores de parámetros raíz en use cache anidado (GHSA-h694-7cp9-m8p3) | Media | Con Cache Components |
| Contenido de Draft Mode filtrado desde use cache (CVE-2026-94544) | Media | Con Cache Components y vistas previas en Draft Mode |
| Fuga en el endpoint MCP del servidor de desarrollo (CVE-2026-94486) | Baja | Solo con next dev |
Quien esté en la 16.3.8 tiene las correcciones de septiembre pero no las de octubre, que solo se publicaron en la 16.4.1 y la 15.5.28.
Documentación: Next.js: versión de seguridad de septiembre de 2026 ↗
3. PgBouncer 1.26.1#
PgBouncer 1.26.1 se publicó el 14 de octubre de 2026 y corrige tres vulnerabilidades. La más seria es una omisión de autenticación: un cliente que conoce la contraseña de un usuario del archivo de autenticación puede iniciar sesión como otro usuario SCRAM, incluidos administradores. El registro de cambios no indica puntuación de gravedad.
| CVE | Tipo | Versiones afectadas | Condición |
|---|---|---|---|
| CVE-2026-107350 | Omisión de autenticación | 1.17.0 a 1.26.0 | Ambos usuarios usan SCRAM; el atacante conoce la contraseña de un usuario de auth_file |
| CVE-2026-107349 | Denegación de servicio | 1.20.0 a 1.26.0 | ignore_startup_parameters no vacío y sin options |
| CVE-2026-107348 | Denegación de servicio | 1.21.0 a 1.26.0 | max_packet_size de 2147483649 o más; el valor por defecto no se ve afectado |
Si usas PgBouncer con SCRAM para varios usuarios, prioriza esta actualización. La versión 1.26.1 es la más reciente según el registro de cambios.
Documentación: PgBouncer: registro de cambios ↗ · PostgreSQL: noticias ↗
4. Verifica tus versiones#
El script compara una versión de Next.js con las versiones corregidas de los avisos y una de PgBouncer con los rangos afectados que publica su registro de cambios. Una línea de Next.js sin versión corregida en los avisos (por ejemplo la 16.2) se trata como «actualiza a la 16.4.1», porque los avisos no listan una versión corregida para ella.
import re
L = {"ok": "al día", "next": "actualiza a %s", "newer": "línea más nueva que las corregidas: revisa los avisos"}
def parse(version):
return tuple(int(n) for n in re.findall(r"\d+", version)[:3])
def next_action(version):
major, minor, patch = parse(version)
if (major, minor) > (16, 4):
return L["newer"]
if (major, minor) == (16, 4):
return L["ok"] if patch >= 1 else L["next"] % "16.4.1"
if (major, minor) == (15, 5):
return L["ok"] if patch >= 28 else L["next"] % "15.5.28"
return L["next"] % "16.4.1" # líneas sin versión corregida en los avisos
PGBOUNCER = { # CVE: (primera versión afectada, última afectada)
"CVE-2026-107350": ((1, 17, 0), (1, 26, 0)),
"CVE-2026-107349": ((1, 20, 0), (1, 26, 0)),
"CVE-2026-107348": ((1, 21, 0), (1, 26, 0)),
}
def pgbouncer_cves(version):
v = parse(version)
return [cve for cve, (first, last) in PGBOUNCER.items() if first <= v <= last]
for v in ["16.2.12", "16.3.8", "16.4.0", "16.4.1", "15.5.27", "15.5.28"]:
print("next", v, "->", next_action(v))
for v in ["1.19.1", "1.22.0", "1.26.0", "1.26.1"]:
print("pgbouncer", v, "->", pgbouncer_cves(v))5. Qué hacer hoy#
- Revisa la versión de Next.js en cada proyecto con npm ls next y actualiza a la 16.4.1 o la 15.5.28.
- Si no puedes actualizar de inmediato y usas next/image con SVG, fija sharp en 0.35.5 o superior.
- Revisa si usas use cache (Cache Components) o Server Actions: son las superficies de los hallazgos más graves.
- Actualiza PgBouncer a 1.26.1, sobre todo si autentica con SCRAM a varios usuarios.
- Reconstruye y vuelve a desplegar: actualizar package.json no basta hasta que la imagen o el servidor use la nueva versión.
- Anota en tu inventario qué proyectos quedaron parchados y la fecha.
Nosotros lo aplicamos en Codifly: el sitio estaba en la 16.2.12 y lo subimos a la 16.4.1 tras pasar las pruebas y la compilación.
Para profundizarPor qué tu build funciona en local pero falla en el deploy
6. Mantén tus cifras al día#
Las versiones y los identificadores son los de los avisos publicados hasta el 19 de octubre de 2026. Pueden aparecer nuevas correcciones; revisa los avisos oficiales de Next.js y PostgreSQL con regularidad.
- Suscríbete a los avisos de seguridad de Next.js y de PgBouncer.
- Automatiza una alerta cuando tu versión quede por debajo de la corregida.
- Prueba en un entorno de pruebas antes de promover a producción.
Fuentes y alcance
Documentación consultada el 19 de octubre de 2026. Los ejemplos y criterios de decisión son propuestas editoriales; adáptalos al contrato de tu aplicación y valídalos en tu entorno de pruebas autorizado.