Payload CMS patches a critical SQL injection bug
CVE-2026-105845 hits the SQLite and Postgres adapters when untrusted users can filter or join on a readable collection. Mongo deployments are unaffected.
Payload published GHSA-v49j-62m6-pgrr on 6 October, a SQL injection flaw rated CVSS 9.8. It hits the SQLite and Postgres database adapters: if an untrusted user can send dynamic query filters or joins against a readable collection, that input isn’t sanitised before it reaches SQL. MongoDB deployments aren’t affected.
The bug is present from payload 3.0.0 up to 3.88.0, and in the 4.0 canary line before 4.0.0-canary.27. Both 3.88.0 and 4.0.0-canary.27 are out now with the fix. Payload is the open-source, TypeScript-first headless CMS built on Next.js — it passes 900,000-plus weekly npm downloads and has around 43,000 GitHub stars, and Figma acquired the company behind it last year. Until you can upgrade, Payload’s advisory recommends restricting untrusted users from supplying dynamic filters or joins and limiting read access on affected collections.
Why it matters: any Payload site that exposes a public search, filter or GraphQL query against a readable collection is a candidate. CVSS 9.8 means this isn’t a theoretical edge case — check package.json for your Payload version and upgrade before auditing anything else.
The caveat: the bug only fires if you let untrusted callers control filter or join parameters. A Payload instance with no public-facing query surface, or one running entirely on MongoDB, isn’t exposed by this specific flaw.