CVE-2026-105845: Payload: SQL Injection in SQLite and Postgres
Payload, the Next.js-based headless CMS, has a critical SQL injection in its SQLite and Postgres database adapters. A remote request with no login can exploit it when untrusted users can run dynamic filters or joins against readable collections. Upgrade the payload package to 3.88.0, or 4.0.0-canary.27 on the 4.x canary line. MongoDB deployments are not affected.
Published Oct 6, 2026 · Analysis Oct 25, 2026
What an attacker can do
The advisory says a user can submit a request that exploits SQL injection in Payload. It does not name the vulnerable function or the exact parameter. The exposure is tied to dynamic query filters and join parameters on collections that the requester can read.
The attack needs only network access to the API and a collection that untrusted users can read. This often includes public collections such as pages or posts. The CVSS vector (network, low complexity, no privileges, no user interaction) fits this. The impact ratings are high for confidentiality, integrity and availability. With SQL injection against the application database, an attacker can read data beyond the collection they were allowed to query. That can include user records and credential hashes. They may also be able to change or delete data.
Deployments on @payloadcms/mongodb are not affected. Only the SQL adapters, SQLite and Postgres, are.
Who is affected
Affected: npm payload from 3.0.0 up to but not including 3.88.0, and from 4.0.0-canary.0 up to but not including 4.0.0-canary.27. You are exposed only if you use the SQLite or Postgres adapter and untrusted users can query readable collections with dynamic filters or joins.
Check your installed version:
npm ls payloadCheck which database adapter you use in package.json or in the db option of payload.config.ts.
payload
- Ecosystem
- npm
- Affected
- >= 3.0.0, < 3.88.0
- Fixed in
- 3.88.0
- Check
npm ls payload
payload
- Ecosystem
- npm
- Affected
- >= 4.0.0-canary.0, < 4.0.0-canary.27
- Fixed in
- 4.0.0-canary.27
- Check
npm ls payload
How to fix it
Upgrade all Payload packages to 3.88.0 or later. On the 4.x canary line, use 4.0.0-canary.27 or later.
npm install [email protected]Keep the other @payloadcms/* packages on the same version as payload.
If you cannot upgrade yet, the advisory gives two workarounds. Stop untrusted users from supplying dynamic query filters or join parameters. Limit read access to the affected collections.
How to tell if you were hit
The sources give no exploit signature. Review access logs for requests to the REST or GraphQL endpoints of readable collections with unusual where or join query parameters. Look for SQL fragments, quote characters or very long values. Check database logs for syntax errors and unexpected queries from the application role. Look for unexpected reads of tables such as users. If you see suspicious activity, rotate secrets and API keys stored in the database.
Original advisory
From the GitHub Advisory Database (CC BY 4.0).
Impact
A user can submit a request that exploits a SQL Injection vulnerability in Payload.
You are affected if:
- You use an affected Payload version.
- Untrusted users can query readable collections using dynamic filters or joins.
You are not affected if you use MongoDB (@payloadcms/mongodb).
Patches
Users should upgrade Payload packages to >= 3.88.0 or >= 4.0.0-canary.27.
Workarounds
Upgrading to a patched version is recommended. Until you can upgrade, restrict untrusted users from supplying dynamic query filters or join parameters and limit read access to affected collections.
Questions
- Does the Payload SQL injection affect MongoDB deployments?
No. The advisory states that you are not affected if you use MongoDB through
@payloadcms/mongodb. It affects the SQLite and Postgres adapters.- Which Payload version fixes this SQL injection?
Version 3.88.0 for the 3.x line, and 4.0.0-canary.27 for the 4.x canary line. All earlier 3.x versions from 3.0.0 are affected.
- Does the attacker need to be logged in?
The CVSS vector says no privileges and no user interaction. In practice the attacker needs to reach a query endpoint for a collection they can read. Public read access is enough in that case.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology
More npm vulnerabilities
All npm entriesCVE-2026-105859
Payload: Unauthorized update to collection documents
critical9.8Oct 7, 2026CVE-2026-105863
Payload authentication token field handling issue
critical9.2Oct 7, 2026CVE-2026-105851
Payload: Field access control bypass on auth collections
critical9.3Oct 6, 2026CVE-2026-34751
Payload: Pre-Authentication Account Takeover via Parameter Injection in Password Recovery
critical9.1Apr 1, 2026
