Skip to main content

Payload CMS EUVDEUVD-2026-98471

| CVE-2026-63316 HIGH
SQL Injection (CWE-89)
2026-10-13 CERT-PL GHSA-57gg-gh75-cfjg
8.7
CVSS 4.0 · Vendor: CERT-PL
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with read+create/update access
  2. Delivery
    Target collection with json/blocksAsJSON field
  3. Exploit
    Craft malicious 'in'/'not_in' query operator
  4. Execution
    Inject SQL into SQLite/Postgres
  5. Impact
    Exfiltrate 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Payload CMS 4.0.0-canary.0 <4.0.0-canary.34
Payload CMS 0 <3.90.0

Affected Packages

npm @payloadcms/db-d1-sqlite fix: 3.90.0, 4.0.0-canary.34
npm @payloadcms/db-postgres fix: 3.73.0
npm @payloadcms/db-sqlite fix: 3.90.0, 4.0.0-canary.34
npm @payloadcms/db-vercel-postgres fix: 3.73.0
euvd payload_cms fix: 3.90.0, 4.0.0-canary.34

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

Vendor (CERT-PL) PRIMARY 8.7 HIGH
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
vuln.today AI 8.3 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (CERT-PL).

CVSS VectorVendor: CERT-PL

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 13, 2026 - 13:01 EUVD
CVE Published
Oct 13, 2026 - 11:05 cve.org
HIGH 8.7

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Medium
popular open-source headless CMS, but narrower footprint than WordPress
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.

CVE-2022-27952 CRITICAL POC
9.8 Apr 12

An arbitrary file upload vulnerability in the file upload module of PayloadCMS v0.15.0 allows attackers to execute arbit

CVE-2026-105844 CRITICAL POC
9.3 Oct 06

Prototype pollution in Payload CMS's @payloadcms/plugin-import-export module lets an unauthenticated remote attacker sub

CVE-2026-105851 CRITICAL POC
9.3 Oct 06

Field-level access control can be bypassed in Payload CMS's document duplicate operation, letting a caller with access t

CVE-2026-105850 HIGH POC
8.8 Oct 06

Duplicate order processing in @payloadcms/plugin-ecommerce allows remote, unauthenticated attackers to have a single Str

CVE-2026-105854 HIGH POC
8.7 Oct 06

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

CVE-2026-105849 HIGH POC
7.7 Oct 06

API key disclosure in Payload CMS lets an authenticated user with ordinary read access to other users' authentication do

CVE-2026-105855 HIGH POC
7.6 Oct 06

Authenticated users who can update an auth collection document in Payload CMS can change the password field on that docu

CVE-2026-105852 MEDIUM POC
6.9 Oct 06

Payload CMS versions before 3.90.0 and canary versions before 4.0.0-canary.34 contain an authorization bypass in relatio

CVE-2026-105857 CRITICAL
10.0 Oct 06

Unauthorized read access to stored form submissions and form email configuration in Payload CMS deployments running the

CVE-2026-105859 CRITICAL
9.8 Oct 06

Payload CMS releases before 3.90.0 (and canary builds before 4.0.0-canary.34) expose an orderable reorder endpoint that

CVE-2026-25544 CRITICAL POC
9.8 Feb 06

Payload CMS prior to 3.73.0 has a SQL injection vulnerability when querying structured data, enabling database compromis

CVE-2026-105845 CRITICAL POC
9.8 Oct 06

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

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy