compression: cada respuesta abortada filtra memoria de zlib (DoS, alta)
El middleware compression de Express no destruía el stream de zlib cuando el cliente cortaba la conexión antes de terminar la respuesta. Un atacante que abre y corta requests en loop te agota la memoria nativa. Afecta a todas las apps con compression < 1.8.2; actualizá, y si podés, delegá la compresión al reverse proxy o CDN.
@fastify/busboy: tres advisories en una semana (2 DoS + CRLF injection en multipart)
El parser multipart que usan @fastify/multipart y undici recibió dos DoS el 2 de octubre (header de parte con nombre de prototipo y boundary gigante, fix en 3.2.1) y una CRLF injection en filename/name de Content-Disposition el 5 (fix en 3.2.2). Si aceptás uploads, subí a 3.2.2 directamente.
GraphQL Tools: prototype pollution en mergeDeep (CVSS 8.2)
mergeDeep de @graphql-tools/utils (base de Yoga, Mesh y medio ecosistema de schema stitching) permitía polucionar el prototipo. Fix en 12.0.1. Combinalo con el caso tinypool de arriba y entendés por qué la prototype pollution nunca es un bug menor.
Hono 4.13.13: app.mount() pasa a ser middleware hono/mount y queda deprecado
Para montar otro router (itty-router, etc.) ahora se usa app.all('/x/*', mount(handler)). app.mount() sigue andando en v4 pero se va en v5: migración de una línea, hacela ahora y te ahorrás el susto.
DynamoDB: export filtrado a S3 con key conditions, filtros y projections
Los exports a S3 (full e incrementales) ahora aceptan KeyConditionExpression, FilterExpression y ProjectionExpression. Para single-table design esto es un golazo: exportás solo una entidad o un tenant sin pipelines intermedios, y sacás PII del dataset antes de que llegue al lake. Disponible en todas las regiones salvo GovCloud.
Cloudflare lanza cf, un CLI pensado para agentes, y anuncia el fin de Wrangler
cf entra en beta abierta: escrito en TypeScript, generado desde los schemas OpenAPI de Cloudflare, con más de 3.000 operaciones (Wrangler cubre ~280), salida JSON por defecto, config tipada en cloudflare.config.ts y Vite como entorno de dev. Wrangler tendrá una última major que te manda a migrar y 18 meses de mantenimiento después de la beta. Si tenés scripts de CI atados a Wrangler, empezá a planificar.
Cloudflare Containers: bloques de disco sin zerear exponían datos de otros tenants
El thin provisioning de device mapper corría con skip_block_zeroing, así que clientes pagos podían leer bloques residuales con páginas de base de datos y SQLite de otros clientes. El límite de Firecracker aguantó: el agujero estaba debajo, en storage. Cloudflare sacó la optimización y purgó discos e image caches entre el 4 y el 19 de septiembre, sin evidencia de explotación. Lección de arquitectura: la isolation es tan fuerte como la capa más baja que compartís.
GitLab CVE-2026-85706 (CVSS 10) bajo explotación activa: path traversal sin auth
En instancias self-managed con al menos un proyecto público, un atacante sin login lee archivos arbitrarios: variables de CI/CD, tokens de runners, llaves SSH. Afecta 18.7 a 19.3.1; fixes en 19.3.2, 19.2.6, 19.1.8 y backports a 19.0.9/18.11.12. Si no parchaste desde el 11 de septiembre, actualizá y rotá todos los secretos de CI.
Docker Compose 5.6: soporte parcial de jobs y relay de red para provider services
Llegan los jobs (por ahora solo disparados a mano; los programados esperan soporte en Docker Engine), provider services con relay de red dedicado y distribución de imágenes on demand, y warnings para atributos no soportados del compose file. Ideal para migraciones y seeds como jobs de primera clase.
Uber Eats corta 50% la latencia de búsqueda haciendo menos trabajo, no más rápido
Primero cambiaron la métrica: de latencia de API a Above-the-Fold completion (cuando la primera pantalla renderiza con imágenes). Después sumaron ganancias chicas: sacar estrategias de retrieval de bajo valor (~120 ms), embeddings a nivel producto (100x menos lookups), separar hydration de ranking de la de presentación (>100 ms), request hedging, y datos de bids en formato columnar en memoria (~130 ms). Si optimizás la métrica equivocada, optimizás lo equivocado.
Nx: command injection vía refs de git en affected y nx import (CVSS 8.5)
Nx armaba comandos de git como strings de shell: defaultBase, NX_BASE/NX_HEAD o un nombre de branch de un remote en nx import terminaban parseados por /bin/sh. En el mismo lote: sockets del daemon accesibles a otros usuarios locales y path traversal en nx migrate. Fix en 22.7.8 y 23.1.1. Recordatorio eterno: execFile con array de argumentos, nunca interpolación en shell.
SvelteKit 3.0 GA: Node 22, TypeScript 6, cookie v2 y getRequest/setResponse síncronos
La major sale con breaking changes que tocan el backend: Node 22+, TypeScript 6 mínimo, tipos de remote functions movidos a $app/server, cookie v2 (nombres solo ASCII, path por defecto '/'), adiós a @sveltejs/kit/node/polyfills y preloadStrategy, y error explícito cuando el server no respeta una single-flight mutation pedida por el cliente. Los adapters (node 6, vercel 7, static 4) salieron el mismo día; ya hay 3.0.1.
pnpm 12.9: networkConcurrency por registry y fix de credenciales en pnpm login
Cada entrada de registries puede fijar networkConcurrency (útil con registries corporativos que hacen rate limiting), pnpm corre con WebAssembly en WebContainers de StackBlitz y el store registra todos los proyectos instalados. Ojo con el patch: pnpm login ya no reenvía credenciales a otro origen en redirects. Ya está 12.9.1.
Tendencias Destacadas
El 5 de octubre GitHub publicó de golpe decenas de advisories npm cuyos fixes ya estaban en septiembre (vm2, proxy-addr, compression, tinypool). Esperá una ola de PRs de Dependabot esta semana: priorizá lo que está en el camino del request.
Prototype pollution sigue siendo el gadget favorito: graphql-tools la habilita, tinypool la convierte en RCE. Object.create(null) y Map para datos de usuario, siempre.
Los frameworks se desacoplan de su capa de server (nuxt/server) y las herramientas se rediseñan para agentes (cf de Cloudflare, lock file de nuxt dev): la DX ahora también es AX.
compression: every aborted response leaks zlib memory (DoS, high)
The Express compression middleware never destroyed the zlib stream when a client disconnected mid-response, so an attacker opening and aborting requests in a loop exhausts native memory. Affects every app on compression < 1.8.2; upgrade, and consider offloading compression to your reverse proxy or CDN.
@fastify/busboy: three advisories in a week (2 DoS + multipart CRLF injection)
The multipart parser behind @fastify/multipart and undici got two DoS advisories on October 2 (prototype-named part header and oversized boundary, fixed in 3.2.1) and a CRLF injection in the Content-Disposition filename/name on October 5 (fixed in 3.2.2). If you accept uploads, go straight to 3.2.2.
GraphQL Tools: prototype pollution in mergeDeep (CVSS 8.2)
mergeDeep in @graphql-tools/utils (the base of Yoga, Mesh, and much of the schema-stitching ecosystem) allowed prototype pollution. Fixed in 12.0.1. Pair it with the tinypool gadget above and it is clear why prototype pollution is never a minor bug.
Hono 4.13.13: app.mount() becomes the hono/mount middleware and is deprecated
Mounting another router (itty-router, etc.) now uses app.all('/x/*', mount(handler)). app.mount() still works in v4 but goes away in v5; it is a one-line migration.
DynamoDB: filtered export to S3 with key conditions, filters, and projections
S3 exports (full and incremental) now accept KeyConditionExpression, FilterExpression, and ProjectionExpression. For single-table designs you can export one entity type or one tenant without an intermediate pipeline, and strip PII before it reaches the lake. Available in all regions except GovCloud.
Cloudflare launches cf, an agent-first CLI, and announces the end of Wrangler
cf enters open beta: written in TypeScript, generated from Cloudflare's OpenAPI schemas, with over 3,000 operations (Wrangler covers ~280), JSON output by default, typed config in cloudflare.config.ts, and Vite as the dev environment. Wrangler gets a final major pointing users to migrate and 18 months of maintenance after the beta ends. If your CI scripts depend on Wrangler, start planning.
Cloudflare Containers: un-zeroed disk blocks exposed other tenants' data
Device mapper thin provisioning ran with skip_block_zeroing, so paid customers could read residual blocks holding other customers' database pages and SQLite files. The Firecracker boundary held; the hole was beneath it, in storage. Cloudflare removed the optimization and purged affected disks and image caches between September 4 and 19, with no evidence of exploitation. Isolation is only as strong as the lowest shared layer.
GitLab CVE-2026-85706 (CVSS 10) under active exploitation: unauthenticated path traversal
On self-managed instances with at least one public project, an unauthenticated attacker can read arbitrary files: CI/CD variables, runner tokens, SSH keys. Affects 18.7 through 19.3.1; fixed in 19.3.2, 19.2.6, 19.1.8, with backports to 19.0.9/18.11.12. If you have not patched since September 11, upgrade and rotate every CI secret.
Docker Compose 5.6: partial jobs support and a network relay for provider services
Jobs arrive (manually triggered only for now; scheduled jobs await Docker Engine support), plus provider services with a dedicated network relay and on-demand image distribution, and warnings for unsupported compose-file attributes. Handy for migrations and seeds as first-class jobs.
Uber Eats halves search latency by doing less work, not faster work
They first changed the metric: from API latency to Above-the-Fold completion (when the first screen renders with images). Then they stacked small wins: dropping low-value retrieval strategies (~120 ms), product-level embeddings (100x fewer lookups), separating ranking hydration from presentation data (>100 ms), request hedging, and in-memory columnar bid data (~130 ms). Optimize the wrong metric and you optimize the wrong thing.
Nx: command injection via git refs in affected and nx import (CVSS 8.5)
Nx built git commands as shell strings: defaultBase, NX_BASE/NX_HEAD, or a branch name from a remote in nx import got parsed by /bin/sh. Same batch: daemon sockets reachable by other local users and a path traversal in nx migrate. Fixed in 22.7.8 and 23.1.1. Evergreen reminder: execFile with an argument array, never shell interpolation.
SvelteKit 3.0 GA: Node 22, TypeScript 6, cookie v2, and synchronous getRequest/setResponse
The major ships breaking changes that touch the backend: Node 22+, TypeScript 6 minimum, remote function types moved to $app/server, cookie v2 (ASCII-only names, path defaults to '/'), removal of @sveltejs/kit/node/polyfills and preloadStrategy, and an explicit error when the server ignores a client-requested single-flight mutation. Adapters (node 6, vercel 7, static 4) shipped the same day; 3.0.1 is already out.
pnpm 12.9: per-registry networkConcurrency and a pnpm login credential fix
Each registries entry can set networkConcurrency (useful for rate-limited corporate registries), pnpm runs via WebAssembly in StackBlitz WebContainers, and the store now records every installed project. Security patch: pnpm login no longer forwards credentials to another origin on redirects. 12.9.1 is already out.
Notable Trends
On October 5 GitHub published dozens of npm advisories whose fixes shipped in September (vm2, proxy-addr, compression, tinypool). Expect a wave of Dependabot PRs this week; prioritize whatever sits on the request path.
Prototype pollution remains the favorite gadget: graphql-tools enables it, tinypool turns it into RCE. Use Object.create(null) and Map for user-controlled data.
Frameworks are decoupling from their server layer (nuxt/server) and tooling is being redesigned for agents (Cloudflare cf, the nuxt dev lock file): DX now includes agent experience.
compression : chaque réponse interrompue fait fuir de la mémoire zlib (DoS, élevée)
Le middleware compression d'Express ne détruisait pas le flux zlib quand le client coupait la connexion en cours de réponse ; un attaquant qui ouvre et interrompt des requêtes en boucle épuise la mémoire native. Toutes les apps en compression < 1.8.2 sont concernées ; mettez à jour, ou déléguez la compression au reverse proxy ou au CDN.
@fastify/busboy : trois advisories en une semaine (2 DoS + injection CRLF multipart)
Le parser multipart derrière @fastify/multipart et undici a reçu deux advisories DoS le 2 octobre (en-tête de partie nommé comme un prototype et boundary surdimensionné, corrigés en 3.2.1) et une injection CRLF dans filename/name de Content-Disposition le 5 (corrigée en 3.2.2). Si vous acceptez des uploads, passez directement en 3.2.2.
GraphQL Tools : prototype pollution dans mergeDeep (CVSS 8.2)
mergeDeep dans @graphql-tools/utils (base de Yoga, Mesh et d'une grande partie du schema stitching) permettait une prototype pollution. Corrigé en 12.0.1. Combiné au gadget tinypool ci-dessus, on voit pourquoi la prototype pollution n'est jamais un bug mineur.
Hono 4.13.13 : app.mount() devient le middleware hono/mount et est déprécié
Pour monter un autre routeur (itty-router, etc.), on utilise désormais app.all('/x/*', mount(handler)). app.mount() fonctionne encore en v4 mais disparaîtra en v5 ; migration d'une ligne.
DynamoDB : export filtré vers S3 avec key conditions, filtres et projections
Les exports vers S3 (complets et incrémentaux) acceptent désormais KeyConditionExpression, FilterExpression et ProjectionExpression. En single-table design, on exporte un seul type d'entité ou un seul tenant sans pipeline intermédiaire, et on retire les données personnelles avant le lake. Disponible partout sauf GovCloud.
Cloudflare lance cf, un CLI pensé pour les agents, et annonce la fin de Wrangler
cf passe en bêta ouverte : écrit en TypeScript, généré depuis les schémas OpenAPI de Cloudflare, avec plus de 3 000 opérations (Wrangler en couvre ~280), sortie JSON par défaut, configuration typée dans cloudflare.config.ts et Vite comme environnement de dev. Wrangler aura une dernière version majeure incitant à migrer, puis 18 mois de maintenance après la bêta.
Cloudflare Containers : des blocs disque non remis à zéro exposaient les données d'autres tenants
Le thin provisioning de device mapper tournait avec skip_block_zeroing : des clients payants pouvaient lire des blocs résiduels contenant des pages de base de données et des fichiers SQLite d'autres clients. La frontière Firecracker a tenu ; la faille était en dessous, dans le stockage. Cloudflare a retiré l'optimisation et purgé disques et caches d'images entre le 4 et le 19 septembre, sans preuve d'exploitation.
GitLab CVE-2026-85706 (CVSS 10) activement exploitée : path traversal sans authentification
Sur les instances self-managed avec au moins un projet public, un attaquant non authentifié lit des fichiers arbitraires : variables CI/CD, tokens de runners, clés SSH. Versions 18.7 à 19.3.1 ; corrigé en 19.3.2, 19.2.6, 19.1.8, avec backports en 19.0.9/18.11.12. Si vous n'avez pas patché depuis le 11 septembre, mettez à jour et faites tourner tous les secrets CI.
Docker Compose 5.6 : support partiel des jobs et relais réseau pour les provider services
Arrivée des jobs (déclenchement manuel uniquement pour l'instant ; les jobs planifiés attendent le support du Docker Engine), des provider services avec relais réseau dédié et distribution d'images à la demande, et d'avertissements pour les attributs non supportés.
Uber Eats divise par deux la latence de recherche en travaillant moins, pas plus vite
D'abord, changer la métrique : de la latence API à l'Above-the-Fold completion (rendu du premier écran avec images). Ensuite, cumuler de petits gains : retirer les stratégies de retrieval peu utiles (~120 ms), embeddings au niveau produit (100x moins de lookups), séparer l'hydratation du ranking de celle de la présentation (>100 ms), request hedging et données d'enchères en colonnes en mémoire (~130 ms).
Nx : injection de commandes via les refs git dans affected et nx import (CVSS 8.5)
Nx construisait les commandes git comme des chaînes shell : defaultBase, NX_BASE/NX_HEAD ou un nom de branche distant dans nx import étaient interprétés par /bin/sh. Même lot : sockets du daemon accessibles aux autres utilisateurs locaux et path traversal dans nx migrate. Corrigé en 22.7.8 et 23.1.1. Rappel : execFile avec un tableau d'arguments, jamais d'interpolation shell.
SvelteKit 3.0 GA : Node 22, TypeScript 6, cookie v2 et getRequest/setResponse synchrones
La version majeure apporte des breaking changes côté backend : Node 22+, TypeScript 6 minimum, types des remote functions déplacés vers $app/server, cookie v2 (noms ASCII uniquement, path par défaut à '/'), suppression de @sveltejs/kit/node/polyfills et de preloadStrategy, et erreur explicite quand le serveur ignore une single-flight mutation demandée par le client. Les adapters (node 6, vercel 7, static 4) sont sortis le même jour ; 3.0.1 est déjà disponible.
pnpm 12.9 : networkConcurrency par registry et correctif d'identifiants dans pnpm login
Chaque entrée registries peut définir networkConcurrency (utile pour les registries d'entreprise limités en débit), pnpm tourne en WebAssembly dans les WebContainers StackBlitz et le store enregistre chaque projet installé. Correctif de sécurité : pnpm login ne transmet plus les identifiants à une autre origine lors des redirections.
Tendances Notables
Le 5 octobre, GitHub a publié d'un coup des dizaines d'advisories npm dont les correctifs datent de septembre (vm2, proxy-addr, compression, tinypool). Attendez-vous à une vague de PRs Dependabot cette semaine ; priorisez ce qui est sur le chemin des requêtes.
La prototype pollution reste le gadget favori : graphql-tools la permet, tinypool la transforme en RCE. Utilisez Object.create(null) et Map pour les données utilisateur.
Les frameworks se découplent de leur couche serveur (nuxt/server) et l'outillage est repensé pour les agents (cf de Cloudflare, lock file de nuxt dev) : la DX inclut désormais l'expérience des agents.