Backend & Fullstack Daily — 7 oct. 2026 : Payload CMS publie 15 advisories (SQLi critique), shell-quote et le SDK MCP
Socket.IO: prototype pollution en @socket.io/cluster-engine vía lookup de sesión del cliente (high)
El engine para correr Socket.IO en cluster (Node cluster o multi-proceso) buscaba la sesión del cliente con una clave controlada por el request sin protegerse de __proto__. Si escalás websockets horizontalmente con @socket.io/cluster-engine, subí a 0.1.1. Usá Map u objetos con Object.create(null) para cualquier lookup por clave del cliente: es la regla de siempre.
pbkdf2: re-hashea passwords largos en cada iteración y abre la puerta a DoS
El polyfill pbkdf2 (el que usa crypto-browserify y mucho bundling legacy) re-hasheaba la password en cada iteración cuando superaba el block size del HMAC. Con passwords gigantes y muchas iteraciones, un endpoint de login se convierte en un ventilador de CPU. Fix en 3.1.7. Igual, poné un límite de longitud a la password antes de hashear — siempre.
Spanner Omni llega a GA: Spanner on-prem, en otras clouds o en tu laptop, sin relojes atómicos
Google sacó a GA la versión deploy-anywhere de Spanner: corre en un solo server, una zona, multi-zona o multi-cluster. Reemplazaron TrueTime por sincronización de tiempo por software con error acotado y Colossus por file systems locales expuestos por red, con splitting y rebalanceo de shards automático. Soporta PostgreSQL además de GoogleSQL y Spanner Graph. Hay Developer Edition gratis para no-producción y una Commercial Edition por vCPU. Para quien necesitaba consistencia externa fuera de GCP, esto cambia la conversación frente a CockroachDB y YugabyteDB.
OpenTelemetry: el Kubernetes Attributes Processor llega a v1.0.0 y renombra atributos
El processor que enriquece logs, métricas y traces con metadata de pods, namespaces, nodos y workloads es estable. El precio: adoptar las semantic conventions nuevas, con breaking changes como k8s.pod.labels → k8s.pod.label (y equivalentes en node y namespace). Revisá dashboards, alertas y queries ANTES de actualizar el Collector; hay feature gates para emitir ambos nombres durante la transición.
AWS Certificate Manager: emisión ACME por PrivateLink
El tráfico ACME hacia ACM ahora puede ir por VPC interface endpoints, sin tocar la config de tus clientes ACME existentes. Útil para workloads en subredes privadas sin salida a internet que renuevan certificados solos.
Cloudflare mete modelos frontier en un harness para atacar su propio WAF: 49 hallazgos validados
1.107 intentos de mutación sobre 45 escenarios, 49 hallazgos validados por humanos y tres detecciones nuevas en el Managed Ruleset (SSRF ofuscado, manejo de protocolos restringidos). Lo valioso es el diseño: un harness en Python se queda con todo lo que no querían delegar — estado del escenario, límites de ejecución, construcción del request, reproducibilidad — y el modelo solo propone mutaciones. Separar exploración probabilística de validación determinística es el patrón que tenés que copiar si metés agentes en tu pipeline de seguridad.
simple-git: el guard de operaciones inseguras no bloquea trailer.<token>.cmd ni includes de config (CVSS 9.2)
Cuatro advisories para simple-git y @simple-git/argv-parser: trailer.<token>.cmd no se considera inseguro, los includes de config de Git tampoco, VISUAL se escapa de la detección de editores y abreviaturas de long options (--receive-p) saltean el plugin — residuo de CVE-2026-28291. Si tu backend o tu CI deja que valores no confiables lleguen a SimpleGitOptions.config o a -c key=value, tenés RCE. Fix en 4.0.1. Una denylist sobre argv de Git es una batalla perdida: no le pases config del usuario, punto.
OpenTelemetry JS 2.12: StackContextManager en @opentelemetry/sdk-trace
Release chica pero útil: StackContextManager pasa a vivir en @opentelemetry/sdk-trace, y el proyecto ahora puede publicar desde ramas de mantenimiento sin pisar la documentación de main. Salió junto con los paquetes experimentales 0.223.0.
Tendencias Destacadas
Día de advisories masivos: Payload, simple-git y vm2 ayer muestran el mismo patrón — fixes publicados hace semanas, CVEs cargados todos juntos. Si dependés de Dependabot para enterarte, llegás tarde.
Los fixes residuales (shell-quote, simple-git) confirman que las denylists sobre strings de shell o argv de Git no cierran nunca. Array de args y nada de input del usuario en la config.
Socket.IO: prototype pollution in @socket.io/cluster-engine via client session lookup (high)
The engine for running Socket.IO in a cluster (Node cluster or multi-process) looked up client sessions with a request-controlled key without guarding against __proto__. If you scale websockets horizontally with @socket.io/cluster-engine, upgrade to 0.1.1. Use Map or Object.create(null) for any client-keyed lookup — the usual rule.
pbkdf2: rehashes long passwords on every iteration, enabling DoS
The pbkdf2 polyfill (used by crypto-browserify and plenty of legacy bundling) rehashed the password on every iteration when it exceeded the HMAC block size. With huge passwords and high iteration counts, a login endpoint becomes a CPU heater. Fixed in 3.1.7. Regardless, cap password length before hashing — always.
Spanner Omni reaches GA: Spanner on-prem, on other clouds, or on your laptop, without atomic clocks
Google made the deploy-anywhere Spanner generally available: it runs on a single server, single zone, multi-zone, or multi-cluster. TrueTime is replaced with software error-bounded time synchronization and Colossus with network-exposed local file systems, with automatic shard splitting and rebalancing. It supports PostgreSQL alongside GoogleSQL and Spanner Graph. There is a free Developer Edition for non-production and a vCPU-priced Commercial Edition. For teams needing external consistency outside GCP, it changes the comparison with CockroachDB and YugabyteDB.
OpenTelemetry: the Kubernetes Attributes Processor reaches v1.0.0 and renames attributes
The processor that enriches logs, metrics, and traces with pod, namespace, node, and workload metadata is now stable. The cost: adopting newer semantic conventions, with breaking changes such as k8s.pod.labels → k8s.pod.label (and equivalents for node and namespace). Audit dashboards, alerts, and queries before upgrading the Collector; feature gates let you emit both names during the transition.
AWS Certificate Manager: ACME issuance over PrivateLink
ACME traffic to ACM can now flow through VPC interface endpoints, without reconfiguring existing ACME clients. Useful for workloads in private subnets with no internet egress that renew certificates automatically.
Cloudflare puts frontier models in a harness to attack its own WAF: 49 validated findings
1,107 mutation attempts across 45 scenarios, 49 human-validated findings, and three new detections in the Managed Ruleset (obfuscated SSRF, restricted protocol handling). The valuable part is the design: a Python harness keeps everything they did not want to delegate — scenario state, execution limits, request construction, reproducibility — while the model only proposes mutations. Separating probabilistic exploration from deterministic validation is the pattern to copy if you put agents in your security pipeline.
simple-git: the unsafe-operations guard misses trailer.<token>.cmd and config includes (CVSS 9.2)
Four advisories for simple-git and @simple-git/argv-parser: trailer.<token>.cmd is not treated as unsafe, neither are Git config includes, VISUAL escapes editor detection, and long-option abbreviations (--receive-p) bypass the plugin — a residual of CVE-2026-28291. If your backend or CI lets untrusted values reach SimpleGitOptions.config or -c key=value, that is RCE. Fixed in 4.0.1. A denylist over Git argv is a losing battle: do not pass user-controlled config at all.
OpenTelemetry JS 2.12: StackContextManager in @opentelemetry/sdk-trace
Small but useful: StackContextManager now ships in @opentelemetry/sdk-trace, and the project can release from maintenance branches without overwriting the main API docs. Released alongside experimental packages 0.223.0.
Notable Trends
Mass-advisory days: Payload, simple-git, and yesterday's vm2 share the same pattern — fixes shipped weeks ago, CVEs loaded all at once. If Dependabot is how you find out, you find out late.
Residual fixes (shell-quote, simple-git) confirm that denylists over shell strings or Git argv never close. Use args arrays and keep user input out of config.
Socket.IO : prototype pollution dans @socket.io/cluster-engine via le lookup de session client (high)
Le moteur pour faire tourner Socket.IO en cluster recherchait les sessions client avec une clé contrôlée par la requête, sans protection contre __proto__. Si vous utilisez @socket.io/cluster-engine, passez en 0.1.1. Utilisez Map ou Object.create(null) pour tout lookup par clé client.
pbkdf2 : re-hache les mots de passe longs à chaque itération, ouvrant la voie à un DoS
Le polyfill pbkdf2 (utilisé par crypto-browserify) re-hachait le mot de passe à chaque itération quand il dépassait la taille de bloc HMAC. Avec des mots de passe énormes, un endpoint de login devient un radiateur CPU. Corrigé en 3.1.7. Limitez toujours la longueur du mot de passe avant hachage.
Spanner Omni en GA : Spanner on-prem, sur d'autres clouds ou sur votre laptop, sans horloges atomiques
Google a rendu disponible la version deploy-anywhere de Spanner : un serveur, une zone, multi-zone ou multi-cluster. TrueTime est remplacé par une synchronisation logicielle à erreur bornée et Colossus par des file systems locaux exposés sur le réseau, avec splitting et rééquilibrage automatiques. PostgreSQL est supporté aux côtés de GoogleSQL et Spanner Graph. Developer Edition gratuite hors production, Commercial Edition facturée au vCPU.
OpenTelemetry : le Kubernetes Attributes Processor passe en v1.0.0 et renomme des attributs
Le processor qui enrichit logs, métriques et traces avec les métadonnées de pods, namespaces, nœuds et workloads est stable. Le prix : adopter les nouvelles semantic conventions, avec des breaking changes comme k8s.pod.labels → k8s.pod.label. Vérifiez dashboards, alertes et requêtes avant de mettre à jour le Collector ; des feature gates permettent d'émettre les deux noms pendant la transition.
AWS Certificate Manager : émission ACME via PrivateLink
Le trafic ACME vers ACM peut désormais passer par des VPC interface endpoints, sans reconfigurer les clients ACME existants. Utile pour les workloads en sous-réseaux privés sans accès internet.
Cloudflare place des modèles frontier dans un harness pour attaquer son propre WAF : 49 découvertes validées
1 107 tentatives de mutation sur 45 scénarios, 49 découvertes validées par des humains et trois nouvelles détections dans le Managed Ruleset. L'essentiel est le design : un harness Python garde tout ce qui n'est pas délégué — état du scénario, limites d'exécution, construction des requêtes, reproductibilité — et le modèle ne propose que des mutations. Séparer exploration probabiliste et validation déterministe est le pattern à reprendre.
simple-git : le garde-fou des opérations dangereuses ignore trailer.<token>.cmd et les includes de config (CVSS 9.2)
Quatre advisories pour simple-git et @simple-git/argv-parser : trailer.<token>.cmd n'est pas considéré comme dangereux, pas plus que les includes de config Git, VISUAL échappe à la détection d'éditeurs et les abréviations d'options longues contournent le plugin — résidu de CVE-2026-28291. Si des valeurs non fiables atteignent SimpleGitOptions.config, c'est une RCE. Corrigé en 4.0.1.
OpenTelemetry JS 2.12 : StackContextManager dans @opentelemetry/sdk-trace
Petite release utile : StackContextManager arrive dans @opentelemetry/sdk-trace, et le projet peut publier depuis des branches de maintenance sans écraser la doc de main. Publiée avec les paquets expérimentaux 0.223.0.
Tendances Notables
Jours d'advisories massifs : Payload, simple-git et vm2 hier suivent le même schéma — fixes publiés il y a des semaines, CVE chargées d'un coup. Si Dependabot est votre seule alerte, vous arrivez tard.
Les fixes résiduels (shell-quote, simple-git) confirment que les denylists sur chaînes shell ou argv Git ne se referment jamais. Tableaux d'arguments, et pas d'input utilisateur dans la config.