workerd 1.20260917.1: node:fs más fiel a POSIX y backpressure de pipes arreglada
El runtime de Cloudflare Workers sigue con cadencia diaria. Hoy: open sin O_CREAT ahora devuelve ENOENT si el path no existe, rename y copyFile reemplazan el destino existente, fixes en streams BYOB y tee, y manejo correcto del drenaje de pipes con backpressure. Suma el conteo de WebSockets hibernables expuesto y los tipos del binding de Browser Run.
tRPC 11.19.0: los links ahora sí abortan el request al desuscribirse
Primer minor desde junio y viene a tapar fugas: httpLink, httpBatchLink y httpBatchStreamLink abortan de verdad al desuscribirse, el link de WebSocket ahora cablea el AbortSignal de la operación, y se limpia la entrada vieja de clientSubscriptions cuando una subscription falla. También arreglan el matching de routers lazy por límite de path en getProcedureAtPath y subscriptionOptions(skipToken).enabled, que devolvía true cuando no correspondía. De paso, el repo ya buildea con TypeScript 7.
Valkey 9.2.0-rc1: tipo Path Hash, snapshots RDB sin fork y roles de ACL
El primer RC de 9.2 trae cosas gordas: Path Hash, un tipo nuevo sobre radix tree con comandos PH* para lookup exacto, longest-prefix y traversal por prefijo; snapshots RDB sin fork (opt-in, con el método y el progreso reportados en INFO persistence); roles de ACL reutilizables vía ACL SETROLE; detección de hot keys server-side con HOTKEYS GET; y los sorted sets grandes pasan de skiplist a B+ tree. Suma XACKDEL/XDELEX para streams, throttling de replicación y certificado TLS secundario para convivir con post-cuántica.
Amazon ECS extiende S3 Files al compute type EC2
Lo que ya estaba en Fargate llega a EC2: montar S3 como filesystem compartido directamente en el container, sin sidecar ni sincronización manual. Para workloads que leen datasets grandes de solo lectura — modelos, assets, fixtures — te ahorra el patrón de copiar al arranque.
Lyft jubila su operator propio de Flink y ahorra millones al año
Caso de estudio para cualquiera que mantenga infra propia por inercia. Lyft migró al Apache Flink Kubernetes Operator y ganó tres cosas: upgrades por last-state desde metadata de HA aunque el JobManager esté enfermo (adiós timeouts de savepoint), FlinkBlueGreenDeployment que reemplaza los 3 a 20 minutos de downtime del esquema anterior, y autoscaling in-place con autotuning que recuperó varios millones de dólares al año de infra sobreprovisionada. El detalle fino: separaron features por criticidad — los jobs críticos escalan sin restart, los demás aceptan restart.
Pinterest: de HNSW en RAM a SPANN cuantizado en SSD, con 20-30% menos de costo
Lectura obligada si estás peleando con búsqueda vectorial a escala. Sobre decenas de miles de millones de embeddings, el índice HNSW base pesaba 121 GB con 93,72% de Recall@100; con Scalar Quantization bajó a 50 GB manteniendo 92,92%. Product Quantization recortó 74% del índice con 70-80% de recall. Y el combo SPANN + PQ servido desde SSD logró 3x el QPS de DiskANN con un tercio de la latencia, perdiendo apenas 5% de recall. Traducción: 20-30% de ahorro de costo de serving en producción. La lección no es el algoritmo, es medir recall contra memoria antes de elegir.
OpenFGA: ListUsers devuelve un usuario explícitamente excluido
Bug de autorización, no de crash. Cuando una exclusión but not bajo un wildcard ligado a tipo se intersecta con and contra otra relación que también otorga a ese usuario, ListUsers lo devuelve igual. O sea: tu modelo dice «todos menos Juan» y la API te lista a Juan. Afecta hasta 1.18.0, parcheado en 1.18.1. Si construís listados de acceso sobre ListUsers, esto es un leak de datos con cara de feature.
@nuxtjs/mdc: XSS desde markdown no confiable en la configuración por defecto
Severidad alta. El sanitizador de URLs del renderer de markdown de Nuxt no cubre xlink:href en SVG ni data:text/html, así que cualquier contenido markdown que venga de un usuario puede ejecutar script — sin configuración especial, con los defaults. Afecta < 0.22.1. Si tu blog, docs o CMS renderiza markdown de terceros con Nuxt Content, subí ya.
@zereight/mcp-gitlab: lectura arbitraria de archivos sin auth y exfiltración del PAT
Crítico, y el tercero de la misma semana para este servidor MCP. La herramienta upload_markdown permite leer cualquier archivo del host sin autenticar, lo que incluye el propio Personal Access Token de GitLab: toma de cuenta completa. Parcheado en 2.1.27. Moraleja general: un servidor MCP corriendo local no es un binario inofensivo, es un endpoint HTTP con tus credenciales adentro. Tratalo como tal.
OpenTelemetry.Resources.Host: ejecución de código por PATH hijacking en macOS
Severidad alta. El detector de recursos de host invoca un binario externo sin path absoluto, así que en macOS un atacante local que controle el PATH logra ejecución arbitraria dentro de tu proceso instrumentado. Afecta < 1.16.0-beta.2. Es el recordatorio de siempre: tu stack de observabilidad corre con los mismos privilegios que la app.
Tendencias Destacadas
Los servidores MCP se consolidaron como la nueva superficie de ataque del backend: tres advisories críticos en una semana sobre el mismo servidor de GitLab, todos por tratar un proceso local como si fuera confiable. Si corrés MCP en tu máquina de trabajo, auditá qué tokens tiene en memoria.
Node.js 26 está absorbiendo herramientas que hasta ayer eran dependencias: test runner, watch mode y ahora benchmarking con node:bench. La pregunta ya no es qué librería usar sino cuántas podés borrar del package.json.
El caso Shopify y el de Lyft cuentan la misma historia desde dos ángulos: con agentes de IA capaces, el costo de una reescritura greenfield cayó lo suficiente como para que mantener una capa de abstracción propia deje de compensar. Ojo, eso no significa reescribir todo — significa recalcular el trade-off que congelaste en 2020.
workerd 1.20260917.1: more POSIX-faithful node:fs and fixed pipe backpressure
The Cloudflare Workers runtime keeps its daily cadence. Today: open without O_CREAT now returns ENOENT for a missing path, rename and copyFile replace an existing destination, fixes for BYOB streams and tee, and correct pipe-drain backpressure handling. It also exposes the hibernatable WebSocket count and adds Browser Run binding types.
tRPC 11.19.0: links finally abort the request on unsubscribe
First minor since June, and it's mostly leak plugging: httpLink, httpBatchLink and httpBatchStreamLink now genuinely abort on unsubscribe, the WebSocket link wires the operation's AbortSignal, and stale clientSubscriptions entries are deleted when a subscription task rejects. Also fixed: lazy router key matching on a path boundary in getProcedureAtPath, and subscriptionOptions(skipToken).enabled incorrectly returning true. The repo itself now builds with TypeScript 7.
Valkey 9.2.0-rc1: Path Hash type, forkless RDB snapshots and ACL roles
The first 9.2 RC is loaded: Path Hash, a new radix-tree-backed type with PH* commands for exact lookup, longest-prefix matching and prefix traversal; forkless RDB snapshots (opt-in, with method and progress reported in INFO persistence); reusable ACL roles via ACL SETROLE; server-side hot key detection with HOTKEYS GET; and large sorted sets moving from skiplist to a B+ tree. Plus XACKDEL/XDELEX for streams, replication throttling, and a secondary TLS certificate so a post-quantum cert can sit alongside RSA.
Amazon ECS extends S3 Files support to the EC2 compute type
What already worked on Fargate now reaches EC2: mounting S3 as a shared file system directly in the container, with no sidecar and no manual sync. For workloads reading large read-only datasets — models, assets, fixtures — it removes the copy-on-startup pattern.
Lyft retires its homegrown Flink operator and reclaims millions a year
A case study for anyone maintaining homegrown infra out of inertia. Lyft moved to the Apache Flink Kubernetes Operator and got three things: last-state upgrades restoring from HA metadata even when the JobManager is unhealthy (no more savepoint timeouts), FlinkBlueGreenDeployment replacing the previous 3-to-20-minute downtime, and in-place autoscaling with autotuning that reclaimed a few million dollars a year of overprovisioned infrastructure. The nuance: they split features by criticality — critical jobs scale without restarts, the rest accept them.
Pinterest: from memory-hungry HNSW to quantized SPANN on SSD, at 20-30% lower cost
Required reading if you're fighting vector search at scale. Over tens of billions of embeddings, the baseline HNSW index was 121 GB at 93.72% Recall@100; Scalar Quantization brought it to 50 GB while holding 92.92%. Product Quantization cut the index by 74% at 70-80% recall. And SPANN + PQ served from SSD hit 3x DiskANN's QPS at a third of the latency for a 5% recall drop — 20-30% serving cost savings in production. The lesson isn't the algorithm, it's measuring recall against memory before you pick one.
OpenFGA: ListUsers returns a deliberately excluded user
An authorization bug, not a crash. When a but not exclusion under a type-bound wildcard is intersected via and with another relation that also grants that user, ListUsers returns them anyway. Your model says «everyone except Juan» and the API lists Juan. Affects up to 1.18.0, patched in 1.18.1. If you build access listings on ListUsers, this is a data leak wearing a feature's face.
@nuxtjs/mdc: XSS from untrusted markdown at the default configuration
High severity. The URL sanitizer in Nuxt's markdown renderer misses SVG xlink:href and data:text/html, so any user-supplied markdown can execute script — with no special configuration, at the defaults. Affects < 0.22.1. If your blog, docs or CMS renders third-party markdown through Nuxt Content, upgrade now.
@zereight/mcp-gitlab: unauthenticated arbitrary file read and PAT exfiltration
Critical, and the third one this week for this MCP server. The upload_markdown tool allows unauthenticated arbitrary file read on the host, including the GitLab Personal Access Token itself: full account takeover. Patched in 2.1.27. The broader lesson: a locally running MCP server is not a harmless binary, it's an HTTP endpoint holding your credentials. Treat it that way.
OpenTelemetry.Resources.Host: code execution via local PATH hijacking on macOS
High severity. The host resource detector invokes an external binary without an absolute path, so on macOS a local attacker controlling PATH gets arbitrary execution inside your instrumented process. Affects < 1.16.0-beta.2. The usual reminder: your observability stack runs with the same privileges as the app.
Notable Trends
MCP servers have settled in as the backend's new attack surface: three critical advisories in one week on the same GitLab server, all from treating a local process as trusted. If you run MCP on your work machine, audit which tokens it holds in memory.
Node.js 26 keeps absorbing tooling that used to be dependencies: test runner, watch mode, and now benchmarking with node:bench. The question is no longer which library to pick but how many you can delete from package.json.
The Shopify and Lyft stories tell the same thing from two angles: with capable AI agents, the cost of a greenfield rewrite dropped far enough that maintaining your own abstraction layer stops paying off. That doesn't mean rewrite everything — it means recompute the trade-off you froze in 2020.
workerd 1.20260917.1 : node:fs plus fidèle à POSIX et backpressure des pipes corrigée
Le runtime Cloudflare Workers garde sa cadence quotidienne. Aujourd'hui : open sans O_CREAT renvoie ENOENT pour un chemin absent, rename et copyFile remplacent une destination existante, corrections des streams BYOB et tee, et gestion correcte du drainage des pipes. S'ajoutent le compteur de WebSockets hibernables et les types du binding Browser Run.
tRPC 11.19.0 : les links annulent enfin la requête au désabonnement
Premier minor depuis juin, surtout des fuites colmatées : httpLink, httpBatchLink et httpBatchStreamLink annulent vraiment au désabonnement, le link WebSocket câble l'AbortSignal de l'opération, et les entrées obsolètes de clientSubscriptions sont supprimées quand une subscription échoue. Corrigés aussi : le matching des routers lazy dans getProcedureAtPath et subscriptionOptions(skipToken).enabled. Le repo builde désormais avec TypeScript 7.
Valkey 9.2.0-rc1 : type Path Hash, snapshots RDB sans fork et rôles ACL
Le premier RC de 9.2 est chargé : Path Hash, un nouveau type basé sur radix tree avec les commandes PH* pour lookup exact, longest-prefix et traversée par préfixe ; snapshots RDB sans fork (opt-in, méthode et progression dans INFO persistence) ; rôles ACL réutilisables via ACL SETROLE ; détection de hot keys côté serveur avec HOTKEYS GET ; et les grands sorted sets passent du skiplist au B+ tree. S'ajoutent XACKDEL/XDELEX, le throttling de réplication et un certificat TLS secondaire.
Amazon ECS étend S3 Files au compute type EC2
Ce qui existait sur Fargate arrive sur EC2 : monter S3 comme système de fichiers partagé directement dans le conteneur, sans sidecar ni synchronisation manuelle. Pour les workloads qui lisent de gros datasets en lecture seule, cela supprime la copie au démarrage.
Lyft abandonne son operator Flink maison et récupère des millions par an
Étude de cas pour qui maintient une infra maison par inertie. Lyft est passé à l'Apache Flink Kubernetes Operator et y gagne trois choses : upgrades last-state depuis les métadonnées HA même si le JobManager est malade, FlinkBlueGreenDeployment qui remplace les 3 à 20 minutes d'indisponibilité précédentes, et autoscaling in-place avec autotuning qui a récupéré plusieurs millions de dollars par an d'infrastructure surprovisionnée.
Pinterest : de HNSW en RAM à SPANN quantifié sur SSD, 20-30% moins cher
Lecture obligatoire si vous affrontez la recherche vectorielle à grande échelle. Sur des dizaines de milliards d'embeddings, l'index HNSW de base pesait 121 Go à 93,72% de Recall@100 ; la Scalar Quantization l'a ramené à 50 Go en conservant 92,92%. SPANN + PQ servi depuis SSD atteint 3x le QPS de DiskANN avec un tiers de la latence pour 5% de recall perdu, soit 20-30% d'économies de serving en production.
OpenFGA : ListUsers renvoie un utilisateur explicitement exclu
Un bug d'autorisation, pas un crash. Quand une exclusion but not sous un wildcard lié au type est intersectée via and avec une autre relation qui accorde aussi cet utilisateur, ListUsers le renvoie quand même. Affecte jusqu'à 1.18.0, corrigé en 1.18.1.
@nuxtjs/mdc : XSS depuis du markdown non fiable en configuration par défaut
Sévérité haute. Le sanitizer d'URL du renderer markdown de Nuxt ignore xlink:href dans les SVG et data:text/html, donc tout markdown fourni par un utilisateur peut exécuter du script — sans configuration particulière, par défaut. Affecte < 0.22.1.
@zereight/mcp-gitlab : lecture arbitraire de fichiers non authentifiée et exfiltration du PAT
Critique, et le troisième de la semaine pour ce serveur MCP. L'outil upload_markdown permet la lecture arbitraire de fichiers sans authentification, y compris le Personal Access Token GitLab : prise de contrôle complète du compte. Corrigé en 2.1.27. La leçon : un serveur MCP local est un endpoint HTTP qui détient vos credentials.
OpenTelemetry.Resources.Host : exécution de code par PATH hijacking sur macOS
Sévérité haute. Le détecteur de ressources host invoque un binaire externe sans chemin absolu : sur macOS, un attaquant local contrôlant le PATH obtient une exécution arbitraire dans votre process instrumenté. Affecte < 1.16.0-beta.2.
Tendances Notables
Les serveurs MCP se sont imposés comme la nouvelle surface d'attaque du backend : trois advisories critiques en une semaine sur le même serveur GitLab, tous parce qu'un process local était considéré comme fiable.
Node.js 26 continue d'absorber l'outillage qui était hier des dépendances : test runner, watch mode, et maintenant le benchmarking avec node:bench.
Shopify et Lyft racontent la même chose sous deux angles : avec des agents IA performants, le coût d'une réécriture greenfield a assez baissé pour que maintenir sa propre couche d'abstraction cesse d'être rentable.