CVE-2026-25544
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-25544 is a critical blind SQL injection vulnerability in Payload CMS affecting the @payloadcms/drizzle package and all Drizzle-based database adapters. When querying json or richText fields, user input is directly embedded into SQL statements without escaping, allowing unauthenticated attackers to execute arbitrary SQL commands. All Payload versions prior to v3.73.0 using PostgreSQL or SQLite adapters (@payloadcms/db-postgres, @payloadcms/db-vercel-postgres, @payloadcms/db-sqlite, @payloadcms/db-d1-sqlite) are affected. The vulnerability was published on February 5, 2026, and carries a CVSS v3.1 base score of 9.8 (Critical) (GitHub Advisory, Github Advisory).

Technical details

The root cause is CWE-89 (Improper Neutralization of Special Elements used in an SQL Command), where the Drizzle ORM query-building layer in Payload CMS fails to sanitize or parameterize user-supplied input before embedding it into SQL queries for json and richText field types. An unauthenticated attacker can craft malicious query parameters targeting any accessible collection endpoint that exposes these field types with access.read returning true or a Where constraint (rather than false). The attack is conducted entirely over the network with no privileges or user interaction required, and exploits the blind SQL injection pattern — inferring data through boolean-based or time-based side channels. MongoDB-backed deployments are not affected, as the vulnerability is specific to the Drizzle SQL adapter layer (GitHub Advisory).

Impact

A successful exploit allows an unauthenticated remote attacker to extract sensitive data from the underlying database, including user email addresses and password reset tokens, enabling full account takeover without needing to crack passwords. The vulnerability carries high confidentiality, integrity, and availability impacts — an attacker with database-level SQL execution capability could also manipulate or destroy data. Any Payload CMS deployment using a Drizzle-based adapter with accessible JSON or richText fields is at risk of complete compromise of its user base and content (Github Advisory, GitHub Advisory).

Exploitability

As of the time of reporting, there is no public proof-of-concept exploit code and no confirmed evidence of in-the-wild exploitation (Github Advisory). The EPSS score is approximately 0.045% (14th percentile), indicating a currently low but non-negligible probability of exploitation within 30 days. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. No specific threat actor attribution has been reported. However, the unauthenticated, network-accessible nature of the flaw and the high-value data exposed (password reset tokens) make it an attractive target for opportunistic attackers.

Exploitation steps

  1. Reconnaissance: Identify internet-facing Payload CMS instances running versions below v3.73.0 using Drizzle-based database adapters. Tools like Shodan or Censys can be used to find exposed Payload CMS admin panels or API endpoints.
  2. Identify vulnerable collections: Enumerate accessible Payload CMS REST API or GraphQL endpoints to discover collections that contain json or richText field types with readable access (i.e., access.read not set to false).
  3. Craft blind SQL injection payload: Construct a malicious query parameter targeting a json or richText field. Since the input is embedded directly into SQL without escaping, inject boolean-based or time-based blind SQL payloads (e.g., ' AND 1=1-- or ' AND SLEEP(5)--) into the field query parameter.
  4. Extract sensitive data: Use automated blind SQL injection tools (e.g., sqlmap) against the vulnerable endpoint to iteratively extract database contents, including the users table — specifically email addresses and password reset tokens.
  5. Account takeover: Use extracted password reset tokens to trigger a password reset for a target account (e.g., an admin user), gaining full authenticated access without cracking any passwords (GitHub Advisory).

Indicators of compromise

  • Network: Unusual or high-volume HTTP GET/POST requests to Payload CMS REST API or GraphQL endpoints with query parameters containing SQL metacharacters (e.g., single quotes ', --, AND, OR, SLEEP, WAITFOR) in json or richText field filters.
  • Logs: Web server or application logs showing repeated requests to collection query endpoints with encoded or obfuscated SQL fragments; anomalous response time variations on database queries (indicative of time-based blind SQLi).
  • Logs: Payload CMS application logs showing unexpected database errors or query failures related to JSON/richText field parsing.
  • Application Behavior: Unexpected password reset emails sent to admin or user accounts not initiated by those users; new admin sessions originating from unfamiliar IP addresses following password reset activity.
  • Database: Unusual query patterns in database slow query logs or audit logs, particularly queries involving JSON/richText columns with injected SQL syntax.

Mitigation and workarounds

Upgrade Payload CMS to v3.73.0 or later, which fixes the vulnerability by properly escaping user input before embedding it into SQL queries for json and richText fields (GitHub Advisory). If an immediate upgrade is not possible, apply the following temporary workaround: add access: { read: () => false } to all json and richText fields in every collection to prevent unauthenticated or unauthorized access to those fields. Deployments using @payloadcms/db-mongodb exclusively are not affected and require no action. After patching, audit logs for signs of prior exploitation, particularly unauthorized password resets or unusual data access patterns.

Community reactions

The vulnerability received coverage from security news outlets including SecurityOnline.info, which highlighted the critical CVSS 9.8 score and the risk of admin token exposure (SecurityOnline). The Hacker Wire also published a dedicated article on the unauthenticated blind SQLi in Payload CMS. Social media discussion was noted on Mastodon and Bluesky within the infosec community shortly after disclosure. CISA included the vulnerability in its weekly bulletin (SB26-040), reflecting its significance to the broader security community (CISA Bulletin).

Additional resources


SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-54155HIGH7.7
  • JavaScript logoJavaScript
  • node-opcua
NoNoAug 20, 2026
CVE-2026-54156HIGH7.5
  • JavaScript logoJavaScript
  • node-opcua
NoYesAug 20, 2026
CVE-2026-55451MEDIUM6.9
  • JavaScript logoJavaScript
  • gettext-converter
NoYesAug 20, 2026
CVE-2026-54150MEDIUM6.9
  • JavaScript logoJavaScript
  • next-video
NoYesAug 20, 2026
GHSA-ghvf-qf6h-g8x5HIGHN/A
  • JavaScript logoJavaScript
  • @nocobase/server
NoYesAug 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management