GHSA-32cw-mf7w-gpqr: 
JavaScript Analyse et atténuation de la vulnérabilité

Summary

An authenticated user who can import into any collection can pollute Object.prototype for the whole Directus process with a single CSV import. The polluted key is then folded into the SQL of every subsequent object-form query, so logins and most reads fail with a database error. The instance stays unusable until it is restarted. This is a bypass of the fix for GHSA-gwvv-rr68-cmv6.

Details

The fix for GHSA-gwvv-rr68-cmv6 introduced a setDeep helper that builds nested paths on null-prototype objects. It was meant to reuse an existing path segment only when that segment is an own object, but it checked only typeof node[key] === 'object'. That plain read follows the prototype chain, so an inherited __proto__ segment resolves to Object.prototype whenever the current node is an ordinary object. The CSV importer builds each row by calling setDeep once per header, and it runs each cell through parseJSON first. A cell containing {} therefore places an ordinary, prototype-bearing object into the row. A later header that walks through it reaches the shared prototype:

a,a.__proto__.polluted
{},"yes"

The first header sets row.a = {}. The second header walks row, then a, then a.__proto__ (Object.prototype), and sets Object.prototype.polluted = 'yes'. knex builds object-form .where() and .update() clauses by enumerating inherited enumerable properties, so after the import every such query gains a phantom polluted column. For example, the last_access update that runs on every login becomes update directus_users set last_access = ?, polluted = 'yes' where id = ? and polluted = 'yes', which fails with an unknown-column error. Because the injected key also lands in the WHERE clause, affected writes fail rather than modify extra columns.

Impact

  • Persistent denial of service. After one import request, every login and most reads fail until the process is restarted. The process itself keeps running, so health checks and supervisors do not recover it automatically.
  • Low privilege. Only an authenticated account with create and update permission on a single collection is required. No admin access or non-default configuration is needed.

Credits

Reported by Al Baradi Joy (@a1barad1)


Source: NVD

Connexe JavaScript Vulnérabilités :

CVE ID

Gravité

Partition

Technologies

Nom du composant

Exploit CISA KEV

A corrigé

Date de publication

GHSA-32cw-mf7w-gpqrHIGH7.1
  • JavaScript logoJavaScript
  • directus
NonOuiOct 30, 2026
GHSA-jvxj-w2qp-5vmxMEDIUM6.8
  • JavaScript logoJavaScript
  • directus
NonOuiOct 30, 2026
GHSA-95f8-mvw7-gpj9MEDIUM6.6
  • JavaScript logoJavaScript
  • directus
NonOuiOct 30, 2026
CVE-2026-61789MEDIUM6.1
  • JavaScript logoJavaScript
  • @bytebase/dbhub
NonOuiOct 30, 2026
GHSA-pwgq-6779-q657CRITICALN/A
  • JavaScript logoJavaScript
  • @pincerpay/merchant
NonOuiOct 30, 2026

Évaluation gratuite des vulnérabilités

Évaluez votre posture de sécurité cloud

Évaluez vos pratiques de sécurité cloud dans 9 domaines de sécurité afin d’évaluer votre niveau de risque et d’identifier les lacunes dans vos défenses.

Évaluation de la demande

Ressources Wiz supplémentaires

Obtenez une démo personnalisée

Prêt(e) à voir Wiz en action ?

"La meilleure expérience utilisateur que j’ai jamais vue, offre une visibilité totale sur les workloads cloud."
David EstlickRSSI
"Wiz fournit une interface unique pour voir ce qui se passe dans nos environnements cloud."
Adam FletcherChef du service de sécurité
"Nous savons que si Wiz identifie quelque chose comme critique, c’est qu’il l’est réellement."
Greg PoniatowskiResponsable de la gestion des menaces et des vulnérabilités