
Cloud Vulnerability DB
A community-led vulnerabilities database
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.
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.
create and update permission on a single collection is required. No admin access or non-default configuration is needed.Reported by Al Baradi Joy (@a1barad1)
Source: NVD
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."