CVE-2026-113872: multer con fileFilter async se cae con un request abortado
Si un request se aborta mientras otro fileFilter asíncrono sigue pendiente, el callback reanuda un stream ya destruido y busboy emite un 'error' sin listener: proceso muerto. Un request sin auth alcanza. Actualizá a multer 2.5.0 o pasá a un fileFilter síncrono.
fast-uri: cuatro advisories, incluido scheme spoofing con percent-encoding
normalize('%6Aavascript:alert(1)') devolvía javascript:alert(1): si validás el input crudo y después guardás o renderizás el normalizado, el filtro no sirve. Los otros tres cubren host confusion, equivalencia de paths y scheme injection. Es dependencia transitiva de Fastify y Ajv; subí a 4.2.3 / 3.1.9 / 2.4.8 y revisá el lockfile.
Echo (Go): el proxy WebSocket se saltea los middlewares de ruta (CVSS 9.1)
El Proxy middleware abría un túnel crudo antes de saber si el upstream aceptaba el upgrade; si el upstream respondía HTTP normal con keep-alive, los requests siguientes iban directo, sin pasar por tu auth. Parte de un batch de seis advisories de Echo (gzip sin límite, BodyDump, X-Real-IP). Fix en v4.16.1 y v5.4.1.
CVE-2026-109461: MSAL Node puede filtrar parámetros del auth code flow
Falta de validación de origen en @azure/msal-node permite que parámetros del authorization code flow lleguen a un endpoint del atacante. Severidad alta; fix en 7.1.0. Mientras tanto, pasale a acquireTokenByCode solo el code, no el objeto entero del callback.
NestJS 11.2.8: validación más estricta y rutas excluidas como el router
Un patch con olor a hardening: los errores de validación ya no exponen el objeto validado y limitan su largo, ParseArrayPipe rechaza items no numéricos y arrays anidados, y las rutas excluidas de middleware matchean igual que el router (nunca targets con # o en forma absoluta). Si dependés de exclusiones de middleware para auth, probá antes y después.
Hono 4.13.14: serve-static solo GET/HEAD y peer range listo para v5
serve-static ahora solo atiende GET y HEAD y respeta los q-values de Accept-Encoding; el trie-router se queda con el primer valor en params duplicados y bearer-auth permite devolver un Response propio. Los adapters ya aceptan prereleases de Hono v5: señal de que la major está cerca.
Amazon EMR on EKS baja un 30% su cargo de EMR
La rebaja aplica tanto al cargo por vCPU-hora como al de GB-hora. Si corrés Spark sobre tus clusters de Kubernetes en AWS, es plata gratis sin tocar una línea.
Cloudflare recupera más de 100 TB de RAM optimizando consistent hashing
En pingora-ketama usaron teoría de probabilidad para calcular el mínimo de puntos de hash que mantiene la distribución de carga: ~90% menos hashes por backend y cada punto de 8 a 6 bytes. Lección para llevarse: los últimos 90.000 hashes mejoraban el error apenas 0,7%, y cambiar el ring de golpe invalida caché, así que lo rotaron en paralelo con el viejo. Medí antes de sumar réplicas virtuales.
CSIRO: consultas genómicas serverless sin base central, indexando en vez de copiar
Los VCF comprimidos se quedan en S3; API Gateway y Lambda ubican la región y leen solo lo necesario con byte-range requests, con metadata aparte en Athena y DynamoDB. Una consulta de 10.000 pares de bases tarda 1,52 s y cuesta USD 0,00013. El patrón vale para cualquier dataset gigante: indexá en lugar de mover, consultá comprimido y separá datos de metadata.
Nx 24.0.1: primer patch de la 24 con fixes de daemon y pnpm
Resuelve dependencias con alias de pnpm a su propio snapshot, mantiene vivo el daemon cuando falla PROCESS_IN_BACKGROUND, deja fuera de los commits de migrate el migrations.json y sale con 1 (no 130) cuando se saltean dependientes de una tarea fallida. Si migraste a la 24, este patch va sí o sí.
better-auth 1.7.13: private key JWT para Vercel y Stripe SDK v23
El provider de Vercel suma autenticación del token endpoint con tokens OIDC dinámicos y client assertions private_key_jwt; Cloudflare pasa a tokenEndpointAuth: { method } (el viejo campo queda deprecado). Además, los exports type-only ya no figuran como valores, así que un import erróneo falla en el type check y no en runtime.
pnpm 10.34.9: el pin de packageManager ya no rompe --frozen-lockfile
Cuando pnpm 10 cambiaba a la versión fijada en packageManager, el lockfile nuevo no registraba ese pin y el pnpm install --frozen-lockfile siguiente fallaba en CI. Arreglado: si te pasaba esto en pipelines, actualizá.
Tendencias Destacadas
El viernes fue día de DoS en el stack HTTP de Node: body-parser, multer y undici comparten la misma raíz, streams que emiten errores sin listener. Revisá tus pipes.
Los bypass de auth vienen de los bordes: proxy WebSocket en Echo, credenciales no-string en Laravel, exclusiones de middleware en NestJS. Autorizá también en el upstream.
PingCAP y php2shell recuerdan lo de siempre: rotá credenciales y parcheá rápido; la explotación arrancó días antes del fix.
CVE-2026-113872: multer with an async fileFilter crashes on an aborted request
If a request is aborted while another async fileFilter is still pending, the callback resumes a torn-down stream and busboy emits an unhandled 'error': the process exits. One unauthenticated request is enough. Upgrade to multer 2.5.0 or switch to a synchronous fileFilter.
fast-uri: four advisories, including scheme spoofing via percent-encoding
normalize('%6Aavascript:alert(1)') returned javascript:alert(1): if you screen the raw input and then store or render the normalized value, the filter is useless. The other three cover host confusion, path equivalence and scheme injection. It's a transitive dependency of Fastify and Ajv; move to 4.2.3 / 3.1.9 / 2.4.8 and check your lockfile.
Echo (Go): the WebSocket proxy skips route middleware (CVSS 9.1)
The Proxy middleware opened a raw tunnel before checking whether the upstream accepted the upgrade; if the upstream answered plain HTTP with keep-alive, subsequent requests went straight through, skipping your auth. Part of a six-advisory Echo batch (unbounded gzip, BodyDump, X-Real-IP). Fixed in v4.16.1 and v5.4.1.
CVE-2026-109461: MSAL Node can leak auth code flow parameters
Missing origin validation in @azure/msal-node lets authorization code flow parameters reach an attacker-controlled endpoint. High severity; fixed in 7.1.0. Until then, pass only the code to acquireTokenByCode, not the whole callback object.
NestJS 11.2.8: stricter validation and excluded routes matched like the router
A patch that smells like hardening: validation errors no longer expose the validated object and are length-limited, ParseArrayPipe rejects non-numeric items and nested arrays, and middleware-excluded routes now match like the router does (never targets with # or in absolute form). If auth relies on middleware exclusions, test before and after.
Hono 4.13.14: serve-static limited to GET/HEAD and a peer range ready for v5
serve-static now only serves GET and HEAD and honors Accept-Encoding q-values; the trie router keeps the first value for duplicate params and bearer-auth can return a custom Response. Adapters now accept Hono v5 prereleases, a sign the major is close.
Amazon EMR on EKS cuts its EMR charge by 30 percent
The cut applies to both the per-vCPU-hour and the per-GB-hour charge. If you run Spark on your Kubernetes clusters in AWS, it's free money without touching a line.
Cloudflare reclaims over 100 TB of RAM by optimizing consistent hashing
In pingora-ketama they used probability theory to compute the minimum number of hash points that keeps load distribution: ~90% fewer hashes per backend and each point down from 8 to 6 bytes. Takeaway: the last 90,000 hashes improved error by just 0.7%, and switching the ring at once invalidates cache, so they rolled it out alongside the old one. Measure before adding virtual nodes.
CSIRO: serverless genomic queries without a central database, indexing instead of copying
Compressed VCF files stay in S3; API Gateway and Lambda locate the region and read only what's needed via byte-range requests, with metadata indexed separately in Athena and DynamoDB. A 10,000 base-pair query takes 1.52 s and costs USD 0.00013. The pattern fits any huge dataset: index instead of moving, query compressed data and separate data from metadata.
Nx 24.0.1: first 24.x patch with daemon and pnpm fixes
Resolves pnpm-aliased dependencies to their own snapshot, keeps the daemon alive when PROCESS_IN_BACKGROUND fails, keeps migrations.json out of migrate commits and exits 1 (not 130) when dependents of a failed task are skipped. If you moved to 24, take this patch.
better-auth 1.7.13: private key JWT for Vercel and Stripe SDK v23
The Vercel provider adds token endpoint authentication with dynamic OIDC tokens and private_key_jwt client assertions; Cloudflare moves to tokenEndpointAuth: { method } (the old field is deprecated). Type-only exports are no longer listed as values, so a bad import fails type checking instead of at runtime.
pnpm 10.34.9: the packageManager pin no longer breaks --frozen-lockfile
When pnpm 10 switched to the version pinned in packageManager, the fresh lockfile didn't record that pin and the next pnpm install --frozen-lockfile failed in CI. Fixed: if you hit this in pipelines, upgrade.
Notable Trends
Friday was DoS day for the Node HTTP stack: body-parser, multer and undici share the same root cause, streams emitting errors with no listener. Audit your pipes.
Auth bypasses come from the edges: Echo's WebSocket proxy, non-string credentials in Laravel, middleware exclusions in NestJS. Authorize at the upstream too.
PingCAP and php2shell repeat the old lesson: rotate credentials and patch fast; exploitation started days before the fix.
CVE-2026-113872 : multer avec un fileFilter asynchrone plante sur une requête interrompue
Si une requête est interrompue pendant qu'un fileFilter asynchrone est en attente, le callback reprend un flux déjà détruit et busboy émet un 'error' non géré : le processus s'arrête. Passez à multer 2.5.0 ou à un fileFilter synchrone.
fast-uri : quatre avis, dont l'usurpation de schéma par percent-encoding
normalize('%6Aavascript:alert(1)') renvoyait javascript:alert(1) : filtrer l'entrée brute puis stocker la valeur normalisée ne protège plus. Les trois autres avis touchent la confusion d'hôte, l'équivalence de chemins et l'injection de schéma. Dépendance transitive de Fastify et Ajv ; passez à 4.2.3 / 3.1.9 / 2.4.8.
Echo (Go) : le proxy WebSocket contourne les middlewares de route (CVSS 9.1)
Le middleware Proxy ouvrait un tunnel brut avant de vérifier que l'upstream acceptait l'upgrade ; avec une réponse HTTP keep-alive, les requêtes suivantes passaient sans votre auth. Fait partie d'un lot de six avis Echo. Corrigé en v4.16.1 et v5.4.1.
CVE-2026-109461 : MSAL Node peut divulguer des paramètres du flux auth code
Un défaut de validation d'origine dans @azure/msal-node peut envoyer des paramètres du flux authorization code vers un endpoint contrôlé par l'attaquant. Corrigé en 7.1.0 ; d'ici là, ne passez que le code à acquireTokenByCode.
NestJS 11.2.8 : validation plus stricte et routes exclues alignées sur le routeur
Un patch de durcissement : les erreurs de validation n'exposent plus l'objet validé et sont limitées en taille, ParseArrayPipe rejette les éléments non numériques et les tableaux imbriqués, et les routes exclues du middleware sont désormais résolues comme par le routeur.
Hono 4.13.14 : serve-static limité à GET/HEAD et peer range prêt pour v5
serve-static ne sert plus que GET et HEAD et respecte les q-values de Accept-Encoding ; bearer-auth peut renvoyer une Response personnalisée. Les adapters acceptent déjà les préversions de Hono v5.
Amazon EMR on EKS réduit de 30 % ses frais EMR
La baisse s'applique au tarif par vCPU-heure et par Go-heure. Pour Spark sur vos clusters Kubernetes AWS, c'est une économie immédiate.
Cloudflare récupère plus de 100 To de RAM en optimisant le consistent hashing
Dans pingora-ketama, Cloudflare a calculé le nombre minimal de points de hash qui préserve la répartition : ~90 % de hashes en moins par backend et des points de 8 à 6 octets. Les 90 000 derniers hashes n'amélioraient l'erreur que de 0,7 %, et le nouvel anneau a été déployé en parallèle de l'ancien pour ne pas invalider le cache.
CSIRO : requêtes génomiques serverless sans base centrale, en indexant au lieu de copier
Les fichiers VCF compressés restent dans S3 ; API Gateway et Lambda lisent uniquement la région utile via des requêtes byte-range, la métadonnée étant indexée à part dans Athena et DynamoDB. Une requête de 10 000 paires de bases prend 1,52 s pour 0,00013 USD.
Nx 24.0.1 : premier patch de la 24 avec correctifs daemon et pnpm
Résout les dépendances pnpm aliasées vers leur propre snapshot, garde le daemon actif si PROCESS_IN_BACKGROUND échoue et renvoie 1 (et non 130) quand des dépendants d'une tâche échouée sont ignorés.
better-auth 1.7.13 : private key JWT pour Vercel et Stripe SDK v23
Le provider Vercel ajoute l'authentification du token endpoint avec des tokens OIDC dynamiques et des assertions private_key_jwt ; Cloudflare passe à tokenEndpointAuth: { method }. Les exports purement typés ne sont plus listés comme valeurs.
pnpm 10.34.9 : l'épinglage packageManager ne casse plus --frozen-lockfile
Quand pnpm 10 basculait vers la version épinglée dans packageManager, le nouveau lockfile ne l'enregistrait pas et pnpm install --frozen-lockfile échouait en CI. Corrigé.
Tendances Notables
Vendredi, journée DoS pour la pile HTTP de Node : body-parser, multer et undici partagent la même cause, des flux qui émettent des erreurs sans écouteur.
Les contournements d'auth viennent des bords : proxy WebSocket d'Echo, identifiants non textuels dans Laravel, exclusions de middleware dans NestJS.
PingCAP et php2shell rappellent la leçon : changez les identifiants et corrigez vite ; l'exploitation a commencé avant le correctif.