Description
Payload is a free and open source headless content management system. Prior to 3.90.0 and 4.0.0-canary.34, an attacker with read and create or update access to a collection containing a json field or a blocks field with blocksAsJSON enabled can inject SQL through a crafted field path and operators. Collections without those fields are not affected, and richText fields are not affected. The SQLite packages are fixed in versions 3.90.0 and 4.0.0-canary.34, and the Postgres packages are fixed in version 3.73.0.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| payloadcms | payload | >= 3.0.0, < 3.90.0, >= 4.0.0-canary.0, < 4.0.0-canary.34 | — |
| @payloadcms | db-d1-sqlite | >= 3.0.0, < 3.90.0, >= 4.0.0-canary.0, < 4.0.0-canary.34 | — |
| @payloadcms | db-postgres | >= 3.0.0 < 3.73.0 | — |
| @payloadcms | db-sqlite | >= 3.0.0, < 3.90.0, >= 4.0.0-canary.0, < 4.0.0-canary.34 | — |
| @payloadcms | db-vercel-postgres | >= 3.0.0 < 3.73.0 | — |
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| npm | @payloadcms/db-d1-sqlite | >= 3.0.0, < 3.90.0 | 3.90.0 | GHSA-pj7x-6wpf-pgvp |
| npm | @payloadcms/db-d1-sqlite | >= 4.0.0-canary.0, < 4.0.0-canary.34 | 4.0.0-canary.34 | GHSA-pj7x-6wpf-pgvp |
| npm | @payloadcms/db-postgres | >= 3.0.0, < 3.73.0 | 3.73.0 | GHSA-pj7x-6wpf-pgvp |
| npm | @payloadcms/db-sqlite | >= 3.0.0, < 3.90.0 | 3.90.0 | GHSA-pj7x-6wpf-pgvp |
| npm | @payloadcms/db-sqlite | >= 4.0.0-canary.0, < 4.0.0-canary.34 | 4.0.0-canary.34 | GHSA-pj7x-6wpf-pgvp |
| npm | @payloadcms/db-vercel-postgres | >= 3.0.0, < 3.73.0 | 3.73.0 | GHSA-pj7x-6wpf-pgvp |