VDB
Sign up
CRITICAL9.8

GHSA-xx6w-jxg9-2wh8

@payloadcms/drizzle has SQL Injection in JSON/RichText Queries on PostgreSQL/SQLite Adapters

Quick fix

GHSA-xx6w-jxg9-2wh8 — @payloadcms/drizzle: upgrade to the fixed version with the command below.

npm install @payloadcms/drizzle@3.73.0

Details

### Impact

When querying JSON or richText fields, user input was directly embedded into SQL without escaping, enabling blind SQL Injection attacks. An unauthenticated attacker could extract sensitive data (emails, password reset tokens) and achieve full account takeover without password cracking.

**Users are affected if ALL of these are true:**

1. Payload version < v3.73.0 2. Using a Drizzle-based database adapter (`@payloadcms/drizzle` as dependency): - `@payloadcms/db-postgres` - `@payloadcms/db-vercel-postgres` - `@payloadcms/db-sqlite` - `@payloadcms/db-d1-sqlite` 3. At least one accessible collection that has a `type: 'json'` or `type: 'richText'` field where `access.read` returns anything other than `false` (`true` or `Where` constraint)

**Users are NOT affected if:**

- Using `@payloadcms/db-mongodb` - No JSON or richText fields exist in any collection - All JSON/richText fields have `access: { read: () => false }`

### Patches

Upgrade to Payload **v3.73.0** or later.

### Workarounds

If a project cannot upgrade immediately, add `access: { read: () => false }` to all JSON and richText fields as a temporary mitigation.

Are you affected?

Enter the version of the package you're using.

Affected packages

npm/@payloadcms/drizzle
Introduced in: 0Fixed in: 3.73.0
Fixnpm install @payloadcms/drizzle@3.73.0

References