Backend & Fullstack Daily — 1 Oct 2026: critical better-auth takeover, Fastify batch and next/og RCE
@nestjs/platform-fastify: un request target absoluto saltea el middleware con scope de path
Advisory high en el adapter de Fastify de NestJS: un request con target absoluto (GET http://host/path HTTP/1.1 en vez de GET /path) llega al handler sin pasar por el middleware de Nest bindeado a esa ruta. Si hacés auth o rate limiting con consumer.apply(...).forRoutes(...), es un bypass directo. Parcheado en 12.0.2 y 11.2.4; el advisory recomienda ir a 12.0.3 / 11.2.5. Moraleja de arquitectura: la auth va en guards, no en middleware por path.
@grpc/grpc-js: getAuthContext no distingue certificados autorizados de no autorizados
CVE-2026-101916 (high): con requireClientCertificate: false, getAuthContext devuelve lo mismo para certificados válidos y no válidos. Si autenticás en base a eso — y @grpc/grpc-js-xds lo hace — un cliente con un cert no autorizado pasa. Parcheado en 1.13.6 y 1.14.5.
Axios: doce advisories el mismo día — gadgets de prototype pollution, ReDoS y bypass de proxy
Barrido grande sobre axios: varios gadgets de prototype pollution (por ejemplo CVE-2026-101909, CVSS 8.3, en las opciones de toFormData) que convierten una contaminación existente en requests alterados, dos ReDoS que congelan el event loop (parser de data: URIs y normalización de NO_PROXY), el adapter HTTP/2 que ignora tu DNS lookup y proxy, y maxRedirects: 0 que el adapter fetch no respeta. Fix en 1.20.0 (y 0.34.0 para la rama vieja). Axios está en casi todo backend Node: pnpm why axios y actualizá.
hono/jsx: strings planos sin escapar en Suspense, ErrorBoundary y renderToString (XSS)
CVE-2026-93981: un string plano como hijo o fallback de Suspense/ErrorBoundary, como único hijo de un Context.Provider, o como raíz de renderToString() se emite como markup en vez de texto. Si ahí cae input del usuario, tenés XSS. Fix en 4.13.7; la latest es 4.13.12.
Angular SSR: DoS con matrix params numéricos en la URL (CVSS 8.2)
CVE-2026-101896 en @angular/router con SSR sobre Node: nombres numéricos de matrix params u outlets (/a;990;2522) hacen que V8 los trate como índices de array y el server se cae. Fix en 22.2.0, 21.2.24 y 20.3.32; la 19 no tiene parche.
Prisma 8.0.0-rc.14: el cliente serverless de Postgres iguala la API de postgres()
connect() en el cliente serverless de Postgres ahora devuelve db.orm, db.transaction(...) y db.prepare(...), igual que un cliente postgres(). Los defaults de fecha/hora se guardan en un texto canónico (el hash de storage ya no depende de cómo los escribiste), el ORM de Mongo pasa todo por el codec de cada campo, y los comandos CLI de Postgres funcionan con defaults de fecha en Node 24, que no trae Temporal. Seguimos en RC: probalo en staging, no en prod.
Aurora PostgreSQL consulta Apache Iceberg y Parquet en S3 con foreign tables, sin ETL
GA en Aurora PostgreSQL 17.11, 18.6 y superiores, en todas las regiones comerciales y GovCloud, sin costo extra. Consultás datos Iceberg/Parquet en S3 o en el Glue Data Catalog (o cualquier catálogo compatible con Iceberg REST) con SQL estándar, o los materializás en tablas nativas. Para el clásico «necesito joinear la tabla transaccional con el data lake» te ahorra un pipeline entero. Ojo con la latencia: no es un reemplazo de tu warehouse.
Aurora Serverless escala hasta 16 ACUs en un segundo
Escala en saltos más grandes — hasta 16 ACUs en un segundo, con tope de 256 — y viene activado solo en platform versions 3 y 4. Si estás en 1 o 2, podés saltar directo a la 4. Para picos bruscos de tráfico es una mejora real sobre el escalado gradual de antes.
Cloudflare soporta el header Vary en el edge, con controles para evitar cache thrashing
Soporte nativo de Vary en todos los planes vía Cache Rules, con tres acciones — normalize, pass through y bypass — para decidir cómo cada header del request impacta en la cache key. Por fin podés negociar idioma o formato de imagen desde el origin sin que el hit ratio se desplome por la variedad infinita de Accept y Accept-Language.
Cursor Continuity: Git sobre un write-ahead log en S3, más de 300 pushes por segundo
En vez de coordinar réplicas, Cursor usa un WAL respaldado en S3 como fuente de verdad y trata los repos en NVMe local como simple cache. Resultado: lecturas que escalan linealmente hasta 100 réplicas y más de 300 pushes/s sobre S3 Express One Zone, donde el cuello de botella pasa a ser la compactación de Git. El trade-off es clásico y vale estudiarlo: movés el límite de consistencia de la sincronización entre réplicas al object storage durable, y pagás en ancho de banda lo que ahorrás en coordinación. Patrón aplicable a cualquier sistema con estado que quiera escalar lecturas sin Raft.
Tendencias Destacadas
La capa de auth es el blanco de la semana: better-auth (Magic Link), Fastify (preHandler salteado), NestJS (middleware por path) y grpc-js (getAuthContext). Patrón común: la autorización depende de que el request siga el camino «feliz» del router. Poné auth en el punto más cercano al handler — guards, hooks por ruta — no en capas que un request malformado puede esquivar.
Segundo día seguido de barridos masivos en npm: después de undici y compañía, ahora Axios (12), Fastify (5) y los parsers de Python (urllib3, tornado, PyJWT, GitPython). Esto ya parece auditoría asistida por IA a escala — preparate para que las tandas de advisories sean la norma.
@nestjs/platform-fastify: an absolute-form request target skips path-scoped middleware
High-severity advisory in NestJS's Fastify adapter: a request with an absolute-form target (GET http://host/path HTTP/1.1 instead of GET /path) reaches the handler without running the Nest middleware bound to that route. If you do auth or rate limiting via consumer.apply(...).forRoutes(...), that is a direct bypass. Fixed in 12.0.2 and 11.2.4; the advisory recommends 12.0.3 / 11.2.5. Architecture lesson: auth belongs in guards, not path-scoped middleware.
@grpc/grpc-js: getAuthContext does not distinguish authorized from unauthorized certificates
CVE-2026-101916 (high): with requireClientCertificate: false, getAuthContext returns the same thing for authorized and unauthorized certificates. If you authenticate based on it — and @grpc/grpc-js-xds does — a client with an unauthorized cert gets through. Fixed in 1.13.6 and 1.14.5.
Axios: twelve advisories in one day — prototype-pollution gadgets, ReDoS and proxy bypasses
Big sweep over axios: several prototype-pollution gadgets (e.g. CVE-2026-101909, CVSS 8.3, in toFormData options) that turn existing pollution into altered requests, two ReDoS bugs that freeze the event loop (data: URI parser and NO_PROXY normalization), the HTTP/2 adapter ignoring your DNS lookup and proxy, and maxRedirects: 0 not enforced by the fetch adapter. Fixed in 1.20.0 (and 0.34.0 for the legacy line). Run pnpm why axios and upgrade.
hono/jsx: plain strings rendered unescaped in Suspense, ErrorBoundary and renderToString (XSS)
CVE-2026-93981: a plain string as the child or fallback of Suspense/ErrorBoundary, the only child of a Context.Provider, or the root of renderToString() is emitted as markup instead of text. If user input lands there, that is XSS. Fixed in 4.13.7; latest is 4.13.12.
Angular SSR: DoS via numeric URL matrix parameters (CVSS 8.2)
CVE-2026-101896 in @angular/router with SSR on Node: numeric matrix-parameter or outlet names (/a;990;2522) make V8 treat them as array indices and take the server down. Fixed in 22.2.0, 21.2.24 and 20.3.32; v19 has no patch.
Prisma 8.0.0-rc.14: the Postgres serverless client matches the postgres() API
connect() on the Postgres serverless client now returns db.orm, db.transaction(...) and db.prepare(...), same as a postgres() client. Date/time defaults are stored in one canonical text (storage hash no longer depends on how you wrote them), the Mongo ORM routes every value through its field codec, and Postgres CLI commands work with date defaults on Node 24, which lacks Temporal. Still an RC: try it in staging.
Aurora PostgreSQL queries Apache Iceberg and Parquet on S3 via foreign tables, no ETL
GA on Aurora PostgreSQL 17.11, 18.6 and later, in all commercial and GovCloud regions, at no extra charge. Query Iceberg/Parquet data in S3 or the Glue Data Catalog (or any Iceberg REST-compatible catalog) with standard SQL, or materialize it into native tables. For the classic join-OLTP-with-the-lake case it removes a whole pipeline — just don't mistake it for a warehouse.
Aurora Serverless now adds up to 16 ACUs within a second
Scales in larger steps — up to 16 ACUs within a second, up to a 256 ACU max — enabled automatically on platform versions 3 and 4. Clusters on 1 or 2 can upgrade straight to 4. A real improvement for spiky traffic.
Cloudflare supports the Vary header at the edge, with controls to prevent cache thrashing
Native Vary support on all plans via Cache Rules, with three actions — normalize, pass through and bypass — controlling how each request header affects the cache key. You can finally negotiate language or image format at the origin without hit ratios collapsing under endless Accept and Accept-Language variants.
Cursor Continuity: Git on an S3 write-ahead log, over 300 pushes per second
Instead of coordinating replicas, Cursor uses an S3-backed WAL as the source of truth and treats local NVMe repos as caches. Result: reads scale linearly to 100 replicas and over 300 pushes/s on S3 Express One Zone, where Git compaction becomes the bottleneck. A classic trade-off worth studying: the consistency boundary moves from replica sync to durable object storage, trading coordination overhead for bandwidth cost. Applicable to any stateful system that wants read scale without Raft.
Notable Trends
The auth layer is this week's target: better-auth (Magic Link), Fastify (skipped preHandler), NestJS (path-scoped middleware) and grpc-js (getAuthContext). Common pattern: authorization relies on the request taking the router's happy path. Put auth as close to the handler as possible — guards, per-route hooks — not in layers a malformed request can route around.
Second straight day of mass sweeps: after undici and friends, now Axios (12), Fastify (5) and the Python parsers (urllib3, tornado, PyJWT, GitPython). This looks like AI-assisted auditing at scale — expect advisory batches to become the norm.
@nestjs/platform-fastify : une cible de requête en forme absolue ignore le middleware lié au chemin
Advisory high dans l'adaptateur Fastify de NestJS : une requête en forme absolue (GET http://host/path) atteint le handler sans exécuter le middleware Nest lié à la route. Corrigé en 12.0.2 et 11.2.4 (recommandé : 12.0.3 / 11.2.5).
@grpc/grpc-js : getAuthContext ne distingue pas les certificats autorisés des non autorisés
CVE-2026-101916 (high) : avec requireClientCertificate: false, getAuthContext ne distingue pas les certificats autorisés. Corrigé en 1.13.6 et 1.14.5.
Axios : douze advisories en un jour — gadgets de prototype pollution, ReDoS et contournements de proxy
Grosse série sur axios : plusieurs gadgets de prototype pollution (dont CVE-2026-101909, CVSS 8.3), deux ReDoS, l'adaptateur HTTP/2 qui ignore DNS et proxy, et maxRedirects: 0 non respecté par l'adaptateur fetch. Corrigé en 1.20.0 et 0.34.0.
hono/jsx : chaînes simples rendues sans échappement dans Suspense, ErrorBoundary et renderToString (XSS)
CVE-2026-93981 : une chaîne simple dans Suspense, ErrorBoundary, un Context.Provider ou renderToString() est émise comme du HTML. Corrigé en 4.13.7 (dernière : 4.13.12).
Angular SSR : DoS via des paramètres matriciels numériques dans l'URL (CVSS 8.2)
CVE-2026-101896 dans @angular/router en SSR sur Node : des noms numériques de paramètres matriciels provoquent un DoS. Corrigé en 22.2.0, 21.2.24 et 20.3.32.
Prisma 8.0.0-rc.14 : le client serverless Postgres aligne son API sur postgres()
connect() du client serverless Postgres renvoie désormais db.orm, db.transaction(...) et db.prepare(...). Defaults de date canoniques, codecs systématiques pour Mongo et CLI Postgres compatible Node 24 sans Temporal.
Aurora PostgreSQL interroge Apache Iceberg et Parquet sur S3 via des foreign tables, sans ETL
GA sur Aurora PostgreSQL 17.11, 18.6 et plus, dans toutes les régions commerciales et GovCloud, sans surcoût. Requêtes SQL sur Iceberg/Parquet dans S3 ou Glue, ou matérialisation en tables natives.
Aurora Serverless ajoute jusqu'à 16 ACU en une seconde
Mise à l'échelle par paliers plus grands — jusqu'à 16 ACU en une seconde, maximum 256 — activée automatiquement sur les versions de plateforme 3 et 4.
Cloudflare prend en charge l'en-tête Vary à l'edge, avec des contrôles contre le cache thrashing
Prise en charge native de Vary sur tous les plans via Cache Rules, avec trois actions — normalize, pass through et bypass — pour contrôler l'impact des en-têtes sur la clé de cache.
Cursor Continuity : Git sur un write-ahead log S3, plus de 300 pushes par seconde
Au lieu de coordonner des réplicas, Cursor utilise un WAL sur S3 comme source de vérité et traite les dépôts NVMe locaux comme des caches : lectures linéaires jusqu'à 100 réplicas et plus de 300 pushes/s sur S3 Express One Zone. La cohérence passe de la synchronisation des réplicas au stockage objet durable.
Tendances Notables
La couche d'auth est la cible de la semaine : better-auth, Fastify, NestJS et grpc-js. Point commun : l'autorisation suppose que la requête suive le chemin nominal du routeur. Placez l'auth au plus près du handler.
Deuxième jour de balayages massifs : Axios (12), Fastify (5) et les parsers Python (urllib3, tornado, PyJWT, GitPython). Attendez-vous à ce que les séries d'advisories deviennent la norme.