Deno 2.9.7: tanda grande de fixes de compatibilidad con Node y permisos
Patch cargadísimo. Lo que más importa para backend: tcp_wrap ahora verifica la IP resuelta contra la deny-list de red (antes se te escapaba por resolución DNS), se validan los paths de registry en los tarballs del lockfile al instalar, y se chequean permisos para membresías multicast. Tres agujeros de permisos tapados en una sola release.
Del lado de compatibilidad: AsyncLocalStorage preserva el contexto de salida, los prototipos del header map de IncomingMessage quedan alineados con Node, y Deno.serve extrae traceparent sin importar el casing del header — esto último es clave si estás instrumentando con OTel.
Fastify 6.0.0-alpha.4: release de seguridad con dos optimizaciones del hot path
Además del fix del DoS por trailers en HTTP/2, esta alpha trae dos mejoras de performance que tocan el camino crítico de cada request: menos overhead en el parser de content-type y se eliminan lecturas redundantes de las partes del request durante la validación.
Si estás evaluando la migración a la 6.x, esto es señal de que la rama sigue recibiendo trabajo serio de performance y no solo de API. La 5.x recibió el backport de ambas optimizaciones.
Fastify 5.12.5: el parche estable del DoS de HTTP/2
Si estás en producción con la 5.x, esta es la versión a la que tenés que saltar. Corrige GHSA-4mh8-r7rc-xpvc e incluye el backport de las dos optimizaciones de performance de la rama 6.
Es un patch: no hay breaking changes, no hay excusa para dejarlo para la semana que viene.
Karmada se gradúa en la CNCF y llega a la v1.19
Karmada, el orquestador multi-cluster de Kubernetes, alcanzó el nivel de madurez más alto de la CNCF. Entró al Sandbox en septiembre de 2021 y hoy tiene más de 1.214 contribuidores de 292 organizaciones, con Bloomberg, Alibaba Cloud y Trip.com en producción.
Lo que lo distingue: extiende las APIs estándar de Kubernetes entre clusters sin obligarte a aprender APIs federadas nuevas — usás PropagationPolicy y OverridePolicy sobre tus manifests de siempre. La v1.19 mejora el scheduling multi-componente para jobs de entrenamiento y pasa el priority-based scheduling a beta. Comparado con Open Cluster Management, Karmada apunta a colocación de workloads y scheduling dinámico; OCM apunta a governance y distribución de políticas.
AWS Elastic Beanstalk estrena Cluster Mode sobre EKS
Hasta ahora cada aplicación en Beanstalk necesitaba su propio environment dedicado. Cluster Mode te deja correr varias aplicaciones sobre infraestructura compartida en tu cuenta, con Amazon EKS por debajo — lo que baja el costo de cómputo por aplicación a medida que crecés.
Incluye autoscaling por eventos, observabilidad basada en OpenTelemetry integrada con CloudWatch y herramientas de terceros, soporte de Secrets Manager y HTTPS automático vía Certificate Manager. Que Beanstalk — el PaaS más viejo de AWS — termine siendo una capa de abstracción sobre EKS dice bastante de para dónde va la plataforma.
Amazon EC2 estrena instancias T8i en GA
Nueva generación de instancias burstable de propósito general, con hasta 30% mejor relación precio-performance que las T3. Para la mayoría de los workloads de API en Node o Bun que no saturan CPU de forma sostenida, las burstable siguen siendo la opción sensata — y este salto de generación es de los que justifican revisar tu Compute Savings Plan.
Svelte devalue: DoS cuadrático en devalue.parse
devalue.parse antes de la 5.9.2 no rechaza índices fuera de rango. Un payload armado a mano hace que devalue alterne entre representaciones distintas de array, generando trabajo cuadrático respecto del tamaño del input.
Te afecta si le pasás datos no confiables a devalue.parse. Y acá está el detalle que mucha gente no registra: devalue es la capa de serialización de SvelteKit, así que probablemente lo tengas en el árbol de dependencias sin haberlo instalado vos. Fixed en [email protected].
libp2p: el PeerStore acepta PeerRecords firmados por otro peer
@libp2p/peer-store acepta un PeerRecord firmado cuyo sobre está firmado por un peer pero cuyo payload declara un peer ID distinto. consumePeerRecord verifica la firma del sobre, pero nunca comprueba que el firmante sea el mismo peer que el PeerRecord.peerId envuelto.
Resultado: un atacante firma con su propia clave, pone el peer ID de la víctima en el payload, y consigue que se almacenen direcciones suyas como certificadas para esa víctima. Clásico error de validación: verificaste la firma, pero no verificaste a quién pertenece.
AsyncHttpClient reenvía credenciales del cliente a un redirect cross-origin
Un cliente configurado con un realm a nivel de config (no por request) que sigue redirects puede reenviar esas credenciales a un destino de otro origen. El código de redirect sí borra el realm por intercambio, pero cuando el destino responde 401 las credenciales se vuelven a derivar de la config del cliente — y ahí le entregás Basic, Digest, Negotiate o NTLM a un origen controlado por el atacante.
Lo interesante es que es un residuo de advisories anteriores sobre fuga de credenciales cross-origin: el fix previo se saltea por este camino. Es el recordatorio de siempre — un parche puntual sobre una clase de bug rara vez cierra la clase entera.
Grav publica más de quince advisories en un día: el caso de estudio del denylist
Grav CMS publicó una tanda enorme de advisories el 17 de septiembre, y aunque no sea stack TypeScript, el patrón vale oro como material de arquitectura. Casi todas son la misma clase de falla: controles de seguridad basados en denylist.
El crítico de CVSS 9.3 (GHSA-f8wv-xp27-6gq7) es escritura arbitraria de archivos porque la rama de función pelada del blueprint está protegida por denylist y se olvidaron de incluir error_log. Otro: config_denied_paths no incluía system, así que se filtraba system.cache.redis.password. Otro más: un solo byte UTF-8 inválido desactiva todas las reglas de Security::detectXss().
La lección se traslada tal cual a cualquier stack: si tu control de seguridad es una lista de lo prohibido, tu seguridad es exactamente tan buena como tu imaginación el día que la escribiste. Allowlist siempre, y falla cerrado ante entrada inválida — no la ignores.
TanStack Charts: grammar of graphics agnóstica de framework para TypeScript
Nueva pieza del ecosistema TanStack, con el enfoque de grammar of graphics y soporte para React, Vue, Solid, Svelte, Angular, Lit y DOM plano, más server-side rendering. Un line chart básico en React pesa unos 29 KB minificado y gzipeado — menos que Chart.js y que Observable Plot.
Ya va por unas 160.000 descargas semanales en npm estando en alpha, y el proyecto avisa explícitamente que no está listo para producción: pinneá versiones exactas. Dato que va a dar que hablar: Tanner Linsley contó que casi toda la implementación la produjeron agentes de IA bajo su supervisión directa, con review antes del merge. MIT.
Tendencias Destacadas
Tres de los bugs de hoy son la misma historia contada en tres lenguajes distintos: verificaste algo, pero no verificaste lo que importaba. OTel-Go lee los certificados y no los usa; libp2p valida la firma pero no el firmante; Grav filtra XSS con reglas que un byte inválido desactiva por completo. El control existía y estaba desactivado en silencio.
El DoS de Fastify y el de CoreDNS comparten raíz: trabajo hecho antes de validar. CoreDNS reserva memoria según contadores que todavía no validó; Fastify serializa headers que sabe que son ilegales en HTTP/2. Validá primero, asigná recursos después — y envolvé el path de serialización, porque una uncaughtException en Node no es un bug de disponibilidad, es un kill switch.
Beanstalk sobre EKS y la graduación de Karmada apuntan al mismo lugar: Kubernetes dejó de ser la superficie con la que trabajás y pasó a ser el sustrato sobre el que se construyen otras abstracciones. Cada vez más equipos van a correr sobre K8s sin escribir un manifest.
Deno 2.9.7: large batch of Node compatibility and permission fixes
A heavy patch release. The backend-relevant parts: tcp_wrap now checks the resolved IP against the net deny list (DNS resolution used to slip past it), lockfile tarball registry paths are validated on install, and multicast membership now requires permission checks. Three permission holes closed in one release.
On compatibility: AsyncLocalStorage preserves exit context, IncomingMessage header map prototypes align with Node, and Deno.serve extracts traceparent regardless of header case — that last one matters if you instrument with OTel.
Fastify 6.0.0-alpha.4: security release plus two hot-path optimizations
Beyond the HTTP/2 trailer DoS fix, this alpha carries two performance changes on the critical path of every request: reduced content-type parser overhead, and the removal of redundant request-part reads during validation.
If you are evaluating a move to 6.x, this signals the branch is still getting real performance work, not just API churn. Both optimizations were backported to 5.x.
Fastify 5.12.5: the stable patch for the HTTP/2 DoS
If you are on 5.x in production, this is the version to jump to. It fixes GHSA-4mh8-r7rc-xpvc and includes the backport of both performance optimizations from the 6.x branch.
It is a patch release — no breaking changes, no reason to defer it.
Karmada graduates from the CNCF and ships v1.19
Karmada, the multi-cluster Kubernetes orchestrator, reached the CNCF's highest maturity tier. It entered the Sandbox in September 2021 and now counts over 1,214 contributors from 292 organizations, with Bloomberg, Alibaba Cloud and Trip.com running it in production.
What sets it apart: it extends standard Kubernetes APIs across clusters without forcing you to learn new federated resource APIs — you layer PropagationPolicy and OverridePolicy onto your existing manifests. v1.19 improves multi-component scheduling for AI training jobs and promotes priority-based scheduling to beta. Against Open Cluster Management, Karmada targets workload placement and dynamic scheduling; OCM targets governance and policy distribution.
AWS Elastic Beanstalk introduces Cluster Mode, backed by EKS
Until now each Beanstalk application needed its own dedicated environment. Cluster Mode lets you run multiple applications on shared infrastructure in your account, powered by Amazon EKS underneath, which reduces per-application compute cost as deployments grow.
It ships with event-driven autoscaling, OpenTelemetry-based observability wired into CloudWatch and third-party tools, Secrets Manager support, and automatic HTTPS through Certificate Manager. Beanstalk — AWS's oldest PaaS — becoming an abstraction layer over EKS says a lot about where the platform is heading.
Amazon EC2 T8i instances reach GA
A new generation of general-purpose burstable instances, with up to 30% better price-performance than T3. For most Node or Bun API workloads that do not sustain full CPU, burstable remains the sensible choice — and a generation jump this size is worth a pass over your Compute Savings Plan.
Svelte devalue: quadratic DoS in devalue.parse
devalue.parse before 5.9.2 fails to reject out-of-bounds indices. A crafted payload makes devalue alternate between array representations, producing work quadratic in payload size.
You are affected if you call devalue.parse with untrusted data. The detail many teams miss: devalue is SvelteKit's serialization layer, so it is likely in your dependency tree without you installing it directly. Fixed in [email protected].
libp2p: PeerStore accepts PeerRecords signed by a different peer
@libp2p/peer-store accepts a signed PeerRecord whose envelope is signed by one peer but whose payload claims a different peer ID. consumePeerRecord verifies the envelope signature but never checks that the signer matches the wrapped PeerRecord.peerId.
The result: an attacker signs with their own key, puts the victim's peer ID in the payload, and gets attacker-controlled addresses stored as certified for that victim. A textbook validation gap — the signature was verified, the identity behind it was not.
AsyncHttpClient re-sends client-wide credentials to a cross-origin redirect
A client configured with a client-wide realm (set on the config builder rather than per request) that follows redirects can re-send those credentials to a target on a different origin. The redirect code does strip the per-exchange realm, but when the target answers 401 the credentials are re-derived from the client config — handing Basic, Digest, Negotiate or NTLM to an attacker-controlled origin.
What makes it notable: it is a residual of earlier cross-origin credential leak advisories, whose strip this path bypasses. The usual reminder — a point fix on a bug class rarely closes the whole class.
Grav publishes fifteen-plus advisories in one day: a denylist case study
Grav CMS published a large batch of advisories on September 17, and while it is not a TypeScript stack, the pattern is excellent architecture material. Nearly all of them are the same class of failure: denylist-based security controls.
The CVSS 9.3 critical (GHSA-f8wv-xp27-6gq7) is arbitrary file write because the blueprint's bare-function branch is denylist-gated and omits error_log. Another: config_denied_paths did not include system, leaking system.cache.redis.password. Another: a single invalid UTF-8 byte disables every rule in Security::detectXss().
The lesson transfers to any stack: if your security control is a list of what is forbidden, your security is exactly as good as your imagination on the day you wrote it. Allowlist by default, and fail closed on invalid input rather than skipping validation.
TanStack Charts: framework-agnostic grammar of graphics for TypeScript
A new piece of the TanStack ecosystem, taking a grammar-of-graphics approach with support for React, Vue, Solid, Svelte, Angular, Lit and vanilla DOM, plus server-side rendering. A basic React line chart lands around 29 KB minified and gzipped — smaller than Chart.js or Observable Plot.
It is already at roughly 160,000 weekly npm downloads while still in alpha, and the project explicitly warns it is not production-ready: pin exact versions. The detail that will generate discussion: Tanner Linsley stated almost all of the implementation was produced by AI coding agents under his direct supervision, reviewed before merge. MIT licensed.
Notable Trends
Three of today's bugs are the same story told in three languages: something was verified, but not the thing that mattered. OTel-Go reads the certificates and never applies them; libp2p validates the signature but not the signer; Grav filters XSS with rules that a single invalid byte disables wholesale. The control existed and was silently off.
The Fastify and CoreDNS denial-of-service bugs share a root: work performed before validation. CoreDNS allocates memory from counts it has not validated yet; Fastify serializes headers it knows are illegal on HTTP/2. Validate first, allocate second — and guard the serialization path, because an uncaughtException in Node is not an availability bug, it is a kill switch.
Beanstalk on EKS and Karmada's graduation point the same way: Kubernetes has stopped being the surface you work with and become the substrate other abstractions are built on. More teams will run on K8s without writing a manifest.
Deno 2.9.7 : gros lot de correctifs de compatibilité Node et de permissions
Patch très chargé. Côté backend : tcp_wrap vérifie désormais l'IP résolue contre la deny-list réseau, les chemins de registry des tarballs du lockfile sont validés à l'installation, et les adhésions multicast exigent une vérification de permission.
Côté compatibilité : AsyncLocalStorage préserve le contexte de sortie, les prototypes du header map d'IncomingMessage s'alignent sur Node, et Deno.serve extrait traceparent quelle que soit la casse de l'en-tête.
Fastify 6.0.0-alpha.4 : release de sécurité et deux optimisations du hot path
Au-delà du correctif DoS sur les trailers HTTP/2, cette alpha apporte deux gains de performance sur le chemin critique de chaque requête : moins de surcoût dans le parser content-type, et suppression des lectures redondantes des parties de requête pendant la validation.
Les deux optimisations ont été backportées en 5.x.
Fastify 5.12.5 : le correctif stable du DoS HTTP/2
Si vous êtes en 5.x en production, c'est la version à viser. Elle corrige GHSA-4mh8-r7rc-xpvc et inclut le backport des deux optimisations de la branche 6.x.
C'est un patch : aucun breaking change.
Karmada est diplômé de la CNCF et publie la v1.19
Karmada, l'orchestrateur multi-cluster Kubernetes, atteint le plus haut niveau de maturité de la CNCF. Entré au Sandbox en septembre 2021, il compte plus de 1 214 contributeurs issus de 292 organisations, avec Bloomberg, Alibaba Cloud et Trip.com en production.
Sa particularité : il étend les APIs Kubernetes standard entre clusters sans nouvelles APIs fédérées — PropagationPolicy et OverridePolicy se posent sur vos manifests existants. La v1.19 améliore le scheduling multi-composant et passe le scheduling par priorité en beta.
AWS Elastic Beanstalk lance Cluster Mode, propulsé par EKS
Jusqu'ici, chaque application Beanstalk exigeait son propre environnement dédié. Cluster Mode permet d'exécuter plusieurs applications sur une infrastructure partagée, propulsée par Amazon EKS, réduisant le coût de calcul par application.
Au programme : autoscaling événementiel, observabilité OpenTelemetry branchée sur CloudWatch, support de Secrets Manager et HTTPS automatique via Certificate Manager.
Les instances Amazon EC2 T8i sont en GA
Nouvelle génération d'instances burstable généralistes, jusqu'à 30 % de meilleur rapport prix-performance que les T3. Pour la plupart des charges API Node ou Bun, le burstable reste le choix raisonnable — et un tel saut mérite une revue de votre Compute Savings Plan.
Svelte devalue : DoS quadratique dans devalue.parse
devalue.parse avant la 5.9.2 ne rejette pas les indices hors limites. Un payload forgé fait alterner devalue entre plusieurs représentations de tableau, générant un travail quadratique.
Détail souvent manqué : devalue est la couche de sérialisation de SvelteKit, donc probablement déjà dans votre arbre de dépendances. Corrigé dans [email protected].
libp2p : le PeerStore accepte des PeerRecords signés par un autre peer
@libp2p/peer-store accepte un PeerRecord signé dont l'enveloppe est signée par un peer mais dont le payload déclare un autre peer ID. consumePeerRecord vérifie la signature de l'enveloppe, jamais la correspondance avec le PeerRecord.peerId.
Faille de validation classique : la signature est vérifiée, l'identité derrière ne l'est pas.
AsyncHttpClient renvoie les identifiants du client vers un redirect cross-origin
Un client configuré avec un realm global (défini sur le config builder plutôt que par requête) et suivant les redirects peut renvoyer ces identifiants vers une cible d'un autre origine. Le code de redirect retire bien le realm par échange, mais si la cible répond 401, les identifiants sont re-dérivés de la config du client.
Notable : c'est un résidu d'advisories antérieurs sur la fuite cross-origin, dont ce chemin contourne le correctif. Un patch ponctuel ferme rarement toute une classe de bugs.
Grav publie plus de quinze advisories en un jour : étude de cas du denylist
Grav CMS a publié un lot massif d'advisories le 17 septembre. Ce n'est pas une stack TypeScript, mais le motif est un excellent matériau d'architecture : presque toutes relèvent de la même classe — les contrôles de sécurité par denylist.
Le critique CVSS 9.3 (GHSA-f8wv-xp27-6gq7) est une écriture arbitraire de fichiers parce que la branche de fonction nue est protégée par denylist et omet error_log. Autre cas : config_denied_paths n'incluait pas system, exposant system.cache.redis.password.
La leçon vaut pour toute stack : une liste d'interdits ne vaut que votre imagination du jour où vous l'avez écrite. Allowlist par défaut, et échec fermé sur entrée invalide.
TanStack Charts : grammar of graphics agnostique pour TypeScript
Nouvelle pièce de l'écosystème TanStack : approche grammar of graphics, support React, Vue, Solid, Svelte, Angular, Lit et DOM natif, plus le rendu côté serveur. Un line chart React de base pèse environ 29 Ko minifié et gzippé — moins que Chart.js ou Observable Plot.
Déjà environ 160 000 téléchargements npm hebdomadaires en alpha, avec un avertissement explicite : pas prêt pour la production, épinglez les versions exactes. Tanner Linsley indique que la quasi-totalité de l'implémentation a été produite par des agents IA sous sa supervision directe. Licence MIT.
Tendances Notables
Trois des bugs du jour racontent la même histoire en trois langages : quelque chose a été vérifié, mais pas ce qui comptait. OTel-Go lit les certificats sans les appliquer ; libp2p valide la signature mais pas le signataire ; Grav filtre le XSS avec des règles qu'un seul octet invalide désactive entièrement.
Les DoS de Fastify et de CoreDNS partagent une racine : du travail effectué avant validation. CoreDNS alloue de la mémoire à partir de compteurs non validés ; Fastify sérialise des en-têtes illégaux en HTTP/2. Validez d'abord, allouez ensuite — et protégez le chemin de sérialisation : une uncaughtException en Node n'est pas un bug de disponibilité, c'est un kill switch.
Beanstalk sur EKS et la graduation de Karmada pointent dans la même direction : Kubernetes cesse d'être la surface de travail pour devenir le substrat sur lequel d'autres abstractions se construisent. De plus en plus d'équipes tourneront sur K8s sans écrire un manifest.