GHSA-pj7x-6wpf-pgvp
Payload: SQL injection in SQLite/Postgres
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @payloadcms/db-sqlite | >= 3.0.0, < 3.90.0 | 3.90.0 |
| npm | @payloadcms/db-d1-sqlite | >= 3.0.0, < 3.90.0 | 3.90.0 |
| npm | @payloadcms/db-postgres | >= 3.0.0, < 3.73.0 | 3.73.0 |
| npm | @payloadcms/db-vercel-postgres | >= 3.0.0, < 3.73.0 | 3.73.0 |
| npm | @payloadcms/db-sqlite | >= 4.0.0-canary.0, < 4.0.0-canary.34 | 4.0.0-canary.34 |
| npm | @payloadcms/db-d1-sqlite | >= 4.0.0-canary.0, < 4.0.0-canary.34 | 4.0.0-canary.34 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
An attacker who has read plus create or update access to a collection can submit a request that includes a SQL injection targeting a specific field path shape and operators in Payload's SQLite and Postgres.
#### You are affected if:
- You use `@payloadcms/db-sqlite` or `@payloadcms/db-d1-sqlite`.
- You use `@payloadcms/db-postgres` or `@payloadcms/db-vercel-postgres` `< 3.73.0`.
- A readable collection has a `json` field, or a` blocks` field with `blocksAsJSON: true`.
- The attacker has read plus create or update access on it.
#### You are not affected if:
- You have no `json or `blocksAsJSON` fields. `richText` is not affected.
- You run a patched version.
### Patches
The patched version sanitizes the query input to prevent injection.
Users should upgrade Payload packages to `>= 3.90.0` or `>= 4.0.0-canary.34`.
References
External links from the advisory. They lead to third-party sites.
- https://github.com/payloadcms/payload/security/advisories/GHSA-pj7x-6wpf-pgvp
- https://nvd.nist.gov/vuln/detail/CVE-2026-105856
- https://github.com/payloadcms/payload/commit/03b78c7e0901d19c67f07bdf6396a276010adbcc
- https://github.com/payloadcms/payload
- https://github.com/payloadcms/payload/releases/tag/v3.90.0