undici: DoS por error no manejado en la descompresión permessage-deflate de WebSocket
Un frame WebSocket comprimido mal formado dispara un error que undici no atrapa y tira el proceso (CVE-2026-85024, medium). Afecta a 6.25.0–6.28.0, 7.28.0–7.29.0 y 8.1.0–8.10.1; fixes en 6.28.1, 7.29.1 y 8.10.2. Ojo: undici es el motor del fetch y del WebSocket global de Node, así que revisá también cuándo tu versión de Node trae el bump. Si tu backend abre WebSockets contra servidores de terceros, esto te pega.
Hono 4.13.10: los adapters de runtime pasan a paquetes @hono/*
Los adapters ahora se publican aparte: @hono/bun, @hono/deno (también en JSR), @hono/cloudflare-workers, @hono/aws-lambda, @hono/lambda-edge, @hono/netlify, @hono/vercel y @hono/service-worker. Los imports hono/<adapter> siguen andando en v4 pero están deprecados y se van en v5; hono/cloudflare-pages queda deprecado sin reemplazo. La migración es cambiar un import, así que hacela ahora y no el día que salga v5.
Prisma 8.0.0-rc.13: más tipos de MongoDB, orderBy por relaciones y prisma contract print
Un schema de Mongo ahora puede declarar Int64, Decimal128, Binary, Json y Bson con timestamps automáticos, y un proyecto Prisma 6 sobre MongoDB puede usar su schema.prisma existente como fuente del contract. El client ordena por columnas de una relación, por conteo de relaciones y con posición explícita de nulls. Nuevo comando prisma contract print. Ojo: cambian las keys de defaults en contract.json, así que re-emití el contract al actualizar.
NestJS 12.1.1: tanda de fixes de reconexión en microservices y del logger JSON
El patch arregla el logger (salida JSON, cambios de nivel, logs fatal y buffereados) y una serie de bugs de reconexión en @nestjs/microservices: el cliente MQTT ahora reintenta tras un connect fallido, TCP conserva sus listeners entre reconexiones e ignora eventos de sockets reemplazados, y NATS/Kafka ya no pisan una conexión nueva cuando falla una vieja. Si corrés transports con redes inestables, actualizá.
Amazon DocumentDB 8.0.2: retryable writes, $facet, $graphLookup e index-only scans
DocumentDB suma cinco stages de agregación ($setWindowFields, $bucketAuto, $facet, $graphLookup y $lookup correlacionado), mejoras en change streams e index-only scans para find y agregaciones. Y en un anuncio aparte llegan las retryable writes: el driver de MongoDB reintenta una vez ante un error transitorio, algo clave durante failovers. Menos excusas para no migrar workloads Mongo compatibles.
Uber separa la intención de escalar de su ejecución en Kubernetes
El controller ServiceScale deja que varios orquestadores (su plataforma Up y los sistemas de failover) influyan en el escalado sin pisarse, sobre 100+ clusters, 3 millones de cores y 1,5 millones de pods por día. Tuvieron que meter chequeos read-your-own-write contra caches de informers desactualizados y healing automático del drift entre metadata y spec. Resultado: el aprovisionamiento steady-state para failover active-active baja de 2x a 1,3x. Lección para cualquier operator: lo difícil no son las APIs, es lo que pasa entre escrituras.
Meta ZGateway: un proxy stateless que baja 19x las conexiones a ZippyDB
ZGateway maneja más de 1.000 millones de ops/s (~40% del tráfico de ZippyDB) y centraliza auth, admission control por tenant, resolución de shards, cache local y batching/coalescing de requests. Reduce 19x las conexiones persistentes y ~97–98% las conexiones por host. El tradeoff es explícito: suman un hop de red para sacarle a los nodos de la base el costo de gestionar conexiones, y la latencia total mejora igual. Es el mismo razonamiento que PgBouncer o RDS Proxy, llevado a escala Meta.
multer: DoS por escrituras huérfanas en disco al abortar uploads
Cuando un cliente aborta un upload, multer deja archivos a medio escribir en disco; repetido en loop, llena el volumen (CVE-2026-88932, medium). Afecta a 2.2.0–2.3.x, fix en 2.4.0. Si usás diskStorage en Express, actualizá y poné límites de tamaño y rate limiting en el endpoint.
morgan: log injection por comillas sin escapar en campos entrecomillados
Un User-Agent o Referer con comillas dobles rompe el formato combined de morgan y permite falsificar campos en la línea de log (CVE-2026-87859, medium). Fix en 1.12.1. Parece menor, pero si tu SIEM parsea esos logs, un atacante puede plantar entradas falsas. Mismo día que multer: tarde movida para el middleware clásico de Express.
Nodemailer: el cache DNS global reutiliza el servername TLS entre transports
En apps multi-tenant con varios transports SMTP, el cache DNS de proceso puede mandar la conexión de un tenant con el servername de otro y exponer credenciales SMTP entre tenants (medium). Afecta de 5.0.0 a 10.0.1; fix en 10.0.2. Si armás transports por cliente en un SaaS, actualizá ya.
ip-address: isLinkLocal() solo reconoce fe80::/64 y abre bypass de SSRF
Address6.isLinkLocal() chequea fe80::/64 en vez de fe80::/10, así que un filtro anti-SSRF basado en esta lib deja pasar direcciones link-local (CVE-2026-101913, CVSS 6.3). Un segundo advisory: ningún clasificador reconoce el rango NAT64 local 64:ff9b:1::/48. Fix en 10.5.1. Si tu guard de SSRF confía en clasificar IPs, revisalo con IPv6.
pnpm 12.8.0: aviso si pack/publish van a subir un .env
pnpm pack y pnpm publish ahora avisan cuando el tarball incluye un .env o .env.* que no está listado en files (los templates como .env.example no cuentan). También instala en paralelo los workspaces con sharedWorkspaceLockfile: false, aplica todos los --config.<name> y pack respeta --silent. Un guardrail chiquito que evita filtrar secretos a npm: golazo.
Tendencias Destacadas
El 28 de septiembre fue día de advisories para el stack Node clásico: fast-uri (Fastify/Ajv), undici, multer, morgan, nodemailer, ip-address y Angular SSR en la misma tanda. Varios son de parsing y clasificación (URIs, IPv6, logs), justo las piezas en las que confiamos para validar input. Si tu defensa contra SSRF depende de una lib que parsea URLs o clasifica IPs, testeala con casos raros de IPv6 y authorities malformadas.
Meta y Uber cuentan la misma historia desde lados distintos: sacar el estado de conexión de la base (ZGateway) y separar la intención de la ejecución (ServiceScale). Agregar una capa de indirección cuesta un hop, pero compra consistencia y capacidad.
undici: DoS via unhandled error in WebSocket permessage-deflate decompression
A malformed compressed WebSocket frame triggers an error undici doesn't catch, crashing the process (CVE-2026-85024, medium). Affects 6.25.0–6.28.0, 7.28.0–7.29.0 and 8.1.0–8.10.1; fixed in 6.28.1, 7.29.1 and 8.10.2. undici powers Node's global fetch and WebSocket, so also track when your Node line picks up the bump. Backends opening WebSockets to third-party servers are exposed.
Hono 4.13.10: runtime adapters move to @hono/* packages
Adapters are now published separately: @hono/bun, @hono/deno (also on JSR), @hono/cloudflare-workers, @hono/aws-lambda, @hono/lambda-edge, @hono/netlify, @hono/vercel and @hono/service-worker. hono/<adapter> imports still work in v4 but are deprecated and go away in v5; hono/cloudflare-pages is deprecated with no replacement. Migration is a one-line import change.
Prisma 8.0.0-rc.13: richer MongoDB types, relation orderBy and prisma contract print
A Mongo schema can now declare Int64, Decimal128, Binary, Json and Bson fields with automatic timestamps, and a Prisma 6 MongoDB project can use its existing schema.prisma as the contract source. The client can order by a related row's column, by relation count, and with explicit null placement. New prisma contract print command. Default keys in contract.json changed, so re-emit your contract after upgrading.
NestJS 12.1.1: reconnection fixes across microservices and JSON logger fixes
The patch fixes the logger (JSON output, level changes, fatal and buffered logs) and a series of reconnection bugs in @nestjs/microservices: the MQTT client now retries after a failed connect, TCP keeps its listeners across reconnects and ignores events from replaced sockets, and NATS/Kafka no longer drop a newer connection when a stale one fails.
Amazon DocumentDB 8.0.2: retryable writes, $facet, $graphLookup and index-only scans
DocumentDB adds five aggregation stages ($setWindowFields, $bucketAuto, $facet, $graphLookup and correlated $lookup), change stream improvements and index-only scans for find and aggregations. A separate announcement adds retryable writes: the MongoDB driver retries once on transient errors, which matters during failovers.
Uber separates scaling intent from execution on Kubernetes
The ServiceScale controller lets multiple orchestrators (the Up platform and failover systems) influence scaling without conflicts, across 100+ clusters, 3 million cores and 1.5 million daily pod launches. Uber added read-your-own-write checks against stale informer caches and automated healing for metadata/spec drift. Steady-state provisioning for active-active failover dropped from 2x to 1.3x.
Meta ZGateway: a stateless proxy that cuts ZippyDB connections 19x
ZGateway serves over 1 billion ops/s (~40% of ZippyDB traffic) and centralizes auth, per-tenant admission control, shard resolution, local caching and request batching/coalescing. It cuts persistent connections 19x and per-host connections by ~97–98%. The tradeoff is deliberate: an extra network hop moves connection management off the database nodes, and overall latency still improves. Same reasoning as PgBouncer or RDS Proxy, at Meta scale.
multer: DoS via orphaned disk writes on aborted uploads
When a client aborts an upload, multer leaves half-written files on disk; repeated in a loop, it fills the volume (CVE-2026-88932, medium). Affects 2.2.0–2.3.x, fixed in 2.4.0. If you use diskStorage in Express, upgrade and add size limits and rate limiting on the endpoint.
morgan: log injection via unescaped double quotes in quoted fields
A User-Agent or Referer containing double quotes breaks morgan's combined format and lets attackers forge fields in the log line (CVE-2026-87859, medium). Fixed in 1.12.1. It looks minor, but if a SIEM parses those logs, attackers can plant fake entries.
Nodemailer: process-global DNS cache reuses TLS servername across transports
In multi-tenant apps with several SMTP transports, the process-wide DNS cache can send one tenant's connection with another tenant's servername, exposing SMTP credentials across tenants (medium). Affects 5.0.0 through 10.0.1; fixed in 10.0.2.
ip-address: isLinkLocal() only matches fe80::/64, enabling SSRF bypass
Address6.isLinkLocal() checks fe80::/64 instead of fe80::/10, so SSRF filters built on this library let link-local addresses through (CVE-2026-101913, CVSS 6.3). A second advisory: no classifier recognizes the NAT64 local-use range 64:ff9b:1::/48. Fixed in 10.5.1.
pnpm 12.8.0: warns when pack/publish would ship a .env file
pnpm pack and pnpm publish now warn when the tarball includes a .env or .env.* file not listed in files (templates like .env.example are ignored). It also installs sharedWorkspaceLockfile: false workspaces concurrently, applies every --config.<name> flag, and pack honors --silent. A small guardrail against leaking secrets to npm.
Notable Trends
September 28 was advisory day for the classic Node stack: fast-uri (Fastify/Ajv), undici, multer, morgan, nodemailer, ip-address and Angular SSR in one batch. Several are parsing and classification bugs (URIs, IPv6, logs), the very pieces we trust to validate input. If your SSRF defense relies on a library that parses URLs or classifies IPs, test it with odd IPv6 cases and malformed authorities.
Meta and Uber tell the same story from different angles: pull connection state off the database (ZGateway) and separate intent from execution (ServiceScale). An indirection layer costs a hop but buys consistency and capacity.
undici : DoS via une erreur non gérée dans la décompression WebSocket permessage-deflate
Une trame WebSocket compressée malformée déclenche une erreur non capturée qui fait tomber le processus (CVE-2026-85024, medium). Corrigé en 6.28.1, 7.29.1 et 8.10.2. undici alimente fetch et WebSocket globaux de Node.
Hono 4.13.10 : les adapters de runtime passent dans des paquets @hono/*
Les adapters sont désormais publiés à part (@hono/bun, @hono/deno, @hono/cloudflare-workers, @hono/aws-lambda, etc.). Les imports hono/<adapter> fonctionnent encore en v4 mais seront retirés en v5 ; hono/cloudflare-pages est déprécié sans remplaçant.
Prisma 8.0.0-rc.13 : types MongoDB enrichis, orderBy par relation et prisma contract print
Un schéma Mongo peut déclarer Int64, Decimal128, Binary, Json et Bson avec timestamps automatiques. Le client trie par colonne d'une relation, par nombre de relations et avec placement explicite des nulls. Nouvelle commande prisma contract print ; ré-émettez le contract après mise à jour.
NestJS 12.1.1 : correctifs de reconnexion des microservices et du logger JSON
Ce patch corrige le logger (sortie JSON, niveaux, logs fatal et bufferisés) et plusieurs bugs de reconnexion de @nestjs/microservices : MQTT réessaie après un échec, TCP conserve ses listeners, NATS/Kafka ne remplacent plus une connexion récente par une ancienne.
Amazon DocumentDB 8.0.2 : retryable writes, $facet, $graphLookup et index-only scans
DocumentDB ajoute cinq stages d'agrégation ($setWindowFields, $bucketAuto, $facet, $graphLookup, $lookup corrélé), des améliorations des change streams et des index-only scans. Les retryable writes arrivent aussi, utiles lors des failovers.
Uber sépare l'intention de scaling de son exécution sur Kubernetes
Le controller ServiceScale permet à plusieurs orchestrateurs d'agir sur le scaling sans conflit, sur 100+ clusters et 3 millions de cœurs. Uber a ajouté des contrôles read-your-own-write face aux caches d'informers périmés. Le provisionnement pour le failover active-active passe de 2x à 1,3x.
Meta ZGateway : un proxy stateless qui divise par 19 les connexions à ZippyDB
ZGateway traite plus d'un milliard d'ops/s (~40 % du trafic ZippyDB) et centralise auth, admission control par tenant, résolution de shards, cache local et batching. Il réduit les connexions persistantes par 19. Le compromis est assumé : un saut réseau de plus pour décharger les nœuds de la base.
multer : DoS via des écritures disque orphelines lors d'uploads interrompus
Quand un client interrompt un upload, multer laisse des fichiers partiels sur le disque, ce qui peut saturer le volume (CVE-2026-88932, medium). Corrigé en 2.4.0.
morgan : injection de logs via des guillemets non échappés
Un User-Agent ou Referer contenant des guillemets casse le format combined de morgan et permet de forger des champs de log (CVE-2026-87859, medium). Corrigé en 1.12.1.
Nodemailer : le cache DNS global réutilise le servername TLS entre transports
Dans les apps multi-tenant avec plusieurs transports SMTP, le cache DNS global peut réutiliser le servername d'un autre tenant et exposer des identifiants SMTP (medium). Corrigé en 10.0.2.
ip-address : isLinkLocal() ne reconnaît que fe80::/64, ouvrant un contournement SSRF
Address6.isLinkLocal() teste fe80::/64 au lieu de fe80::/10, ce qui permet de contourner les filtres anti-SSRF (CVE-2026-101913, CVSS 6.3). La plage NAT64 64:ff9b:1::/48 n'est pas non plus reconnue. Corrigé en 10.5.1.
pnpm 12.8.0 : avertit quand pack/publish embarquerait un fichier .env
pnpm pack et pnpm publish avertissent désormais quand le tarball contient un .env non listé dans files. Installation concurrente des workspaces avec sharedWorkspaceLockfile: false et prise en compte de tous les --config.<name>.
Tendances Notables
Le 28 septembre a été un jour d'advisories pour la stack Node classique : fast-uri (Fastify/Ajv), undici, multer, morgan, nodemailer, ip-address et Angular SSR. Plusieurs sont des bugs de parsing et de classification (URI, IPv6, logs), précisément les briques utilisées pour valider les entrées.
Meta et Uber racontent la même histoire : sortir l'état de connexion de la base (ZGateway) et séparer intention et exécution (ServiceScale). Une couche d'indirection coûte un saut réseau mais apporte cohérence et capacité.