Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with read+create/update access
-
DeliveryTarget collection with json/blocksAsJSON field
-
ExploitCraft malicious 'in'/'not_in' query operator
-
ExecutionInject SQL into SQLite/Postgres
-
ImpactExfiltrate or tamper with database records
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires ALL of: (1) use of a vulnerable database adapter - @payloadcms/db-sqlite or @payloadcms/db-d1-sqlite (< 3.90.0), or @payloadcms/db-postgres or @payloadcms/db-vercel-postgres (< 3.73.0); (2) a readable collection containing a 'json' field OR a 'blocks' field configured with blocksAsJSON: true (richText fields are explicitly NOT affected); and (3) an attacker holding read PLUS create-or-update access on that collection. The injection is delivered through the 'in' and 'not_in' query parameters/operators targeting a specific field-path shape. Limiting factors: the authentication requirement (not anonymous), the non-default dependency on json/blocksAsJSON field types, and the specific SQLite/Postgres adapter requirement - instances with no json or blocksAsJSON fields, or already on patched versions, are not affected. |
| Impact | This is a genuine, moderately-high priority issue for affected deployments, but with meaningful preconditions that temper the raw CVSS 4.0 base score of 8.7 (High). The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L) indicates a network-reachable, low-complexity SQL injection requiring low privileges and no user interaction, with high confidentiality and integrity impact - consistent with CWE-89. The authenticated requirement (PR:L) is the key risk limiter: the attacker must already possess read PLUS create-or-update access to a vulnerable collection, so this is not an anonymous internet-wide exploit. No EPSS score was supplied in the input, so exploitation probability cannot be quantified. The vulnerability is NOT in CISA KEV and no public exploit code is referenced, so exploitation status is 'no public exploit identified at time of analysis.' There is a signal to reconcile: the GHSA advisory lists different fixed versions per package (db-postgres/db-vercel-postgres fixed in 3.73.0; db-sqlite/db-d1-sqlite fixed in 3.90.0) while the CVE description and NVD cite 3.90.0/4.0.0-canary.34 globally - defenders should map the fix version to their specific database adapter rather than assuming a single version. Overall this warrants prompt patching where the affected adapters and json/blocksAsJSON field conditions are met, but it is not a drop-everything internet-facing crisis given the authentication and configuration prerequisites. |
| Exploit ScenarioDerived | A low-privileged but legitimate user of a Payload CMS instance (e.g. a content editor with read and create/update rights on a collection containing a json or blocksAsJSON blocks field) submits an API request manipulating the 'in' or 'not_in' query operators to inject SQL against the SQLite or Postgres backend. By crafting the field-path shape and operators, they extract or alter data beyond their intended authorization. No public proof-of-concept is referenced, and the attack requires valid authenticated access to the targeted collection. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
SQL injection in Payload CMS allows an authenticated attacker holding read plus create-or-update access on a collection to inject arbitrary SQL through the "in" and "not_in" query parameters when the application uses the SQLite, D1-SQLite, Postgres, or Vercel-Postgres database adapters. The flaw is only reachable when a readable collection exposes a "json" field or a "blocks" field configured with blocksAsJSON: true, and can lead to high confidentiality and integrity impact on the backing database. Affected users should upgrade to Payload 3.90.0 (SQLite/D1 adapters and core) or 3.73.0 (Postgres/Vercel-Postgres adapters), or 4.0.0-canary.34; no public exploit identified at time of analysis.
RemediationAI
Upgrade Payload packages to the fixed releases: @payloadcms/db-sqlite and @payloadcms/db-d1-sqlite to 3.90.0 or later, and @payloadcms/db-postgres and @payloadcms/db-vercel-postgres to 3.73.0 or later; the Payload core should be on >= 3.90.0 or >= 4.0.0-canary.34. The sanitization fix is in upstream commit https://github.com/payloadcms/payload/commit/03b78c7e0901d19c67f07bdf6396a276010adbcc and is documented in GHSA-pj7x-6wpf-pgvp and the CERT-PL advisory at https://cert.pl/posts/2026/11/CVE-2026-63316. Where an immediate upgrade is not possible, treat these as compensating controls with trade-offs: (1) audit collections containing "json" fields or "blocks" fields with blocksAsJSON: true and remove or temporarily disable blocksAsJSON (side effect: changes how block data is stored/queried and may require data migration); (2) tighten the collection access control so that create/update permissions are not granted to the same roles that have read access, eliminating the required combination (side effect: may break legitimate editorial workflows); (3) restrict or remove read access on those collections from low-privilege accounts (side effect: content consumers lose access); and (4) monitor database logs for anomalous "in"/"not_in" query payloads as a detection measure, noting this does not prevent exploitation. Because exploitation requires an authenticated account, revoking dormant or excess API/editor credentials reduces the attack surface but is not a substitute for patching. No vendor-released patch alternative exists for unpatched adapter versions, so upgrading remains the definitive fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 5 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Payload CMS is a Node.js/TypeScript headless content management framework whose data layer is abstracted behind database adapters; the SQL-backed adapters (@payloadcms/db-sqlite, @payloadcms/db-d1-sqlite, @payloadcms/db-postgres, @payloadcms/db-vercel-postgres) translate Payload's query language into SQL. The root cause is CWE-89 (Improper Neutralization of Special Elements used in an SQL Command), specifically the failure to sanitize user-supplied values passed to the "in" and "not_in" query operators, which are used to build SQL WHERE clauses against a particular field-path shape. Because the injection point is the operator handling rather than the general query parser, it is only reachable for the specific field types whose stored values are serialized into those operator clauses - a "json" field, or a "blocks" field with blocksAsJSON: true. richText fields are explicitly not affected. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) confirms the attack is network-delivered and requires low privileges (a valid authenticated user), consistent with the advisory's requirement of read plus create-or-update access on the target collection. Impact is scored VC:H/VI:H/VA:L - meaningful read and write capability against the database with limited availability impact - and the corresponding CVSS 3.1 assessment (C:H/I:H/A:L) agrees.
Know when Payload gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
Network-reachable injection with low attack complexity but requiring an authenticated low-privilege account with create/update access (PR:L); high confidentiality/integrity, limited availability impact, scope unchanged.
Primary rating from Vendor (CERT-PL).
CVSS VectorVendor: CERT-PL
Lifecycle Timeline
2DescriptionCVE.org
A SQL injection vulnerability has been identified in Payload CMS. Improper neutralization of input provided by user into "in" and "not_in" query paramethers allows an authenticated attacker to perform SQL Injection attacks.
This issue was fixed in version 3.90.0 and 4.0.0-canary.34.
Technical POC Analysis
Scope note: the only evidence supplied is the GitHub advisory GHSA-pj7x-6wpf-pgvp.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity SQL injection flaw in Payload CMS (CVE-2026-63316) lets a user who already holds read plus create-or-update access on a collection run arbitrary SQL against the underlying database whenever the application uses the SQLite, D1-SQLite, Postgres, or Vercel-Postgres adapter and exposes a json or blocksAsJSON-enabled blocks field. Because the flaw can compromise both the confidentiality and integrity of the backing data store, any team running Payload as a content backend for customer, partner, or internal data should treat this as a material data-integrity and data-exposure risk. Leadership should care because the affected user population is not limited to administrators - ordinary content editors and integrated service accounts are sufficient to trigger it, and there is no public exploit identified at time of analysis.
Apply vendor patch. Until the fixed versions are deployed, restrict create-or-update permissions on collections that expose json or blocksAsJSON-enabled blocks fields to the smallest possible set of trusted accounts, disable those field types where feasible, and monitor database query logs for unusual "in" and "not_in" parameter usage.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
An arbitrary file upload vulnerability in the file upload module of PayloadCMS v0.15.0 allows attackers to execute arbit
Prototype pollution in Payload CMS's @payloadcms/plugin-import-export module lets an unauthenticated remote attacker sub
Field-level access control can be bypassed in Payload CMS's document duplicate operation, letting a caller with access t
Duplicate order processing in @payloadcms/plugin-ecommerce allows remote, unauthenticated attackers to have a single Str
Malformed multipart request bodies sent to Payload CMS versions 3.0.0 through 3.89.x and 4.0.0-canary.0 through 4.0.0-ca
API key disclosure in Payload CMS lets an authenticated user with ordinary read access to other users' authentication do
Authenticated users who can update an auth collection document in Payload CMS can change the password field on that docu
Payload CMS versions before 3.90.0 and canary versions before 4.0.0-canary.34 contain an authorization bypass in relatio
Unauthorized read access to stored form submissions and form email configuration in Payload CMS deployments running the
Payload CMS releases before 3.90.0 (and canary builds before 4.0.0-canary.34) expose an orderable reorder endpoint that
Payload CMS prior to 3.73.0 has a SQL injection vulnerability when querying structured data, enabling database compromis
SQL injection in Payload CMS 3.0.0 through before 3.88.0 (and 4.0.0-canary builds before 4.0.0-canary.27) allows remote
EUVD-2026-98471
GHSA-57gg-gh75-cfjg
NVD
CVE.org
EPSS
Exploit-DB