Executive brief
Payload CMS is a content management system that allows developers to store and query structured data. A critical vulnerability in the Drizzle database adapter allows unauthenticated attackers to inject arbitrary SQL code through JSON or RichText field queries, bypassing normal security controls. An attacker could extract sensitive customer data (emails, password reset tokens) and take over user accounts without needing to know passwords.
Technical details
The vulnerability is a SQL injection flaw (CWE-89) in the Drizzle-based database adapters for Payload CMS versions before 3.73.0. When querying JSON or richText fields, user input is directly embedded into SQL queries without proper escaping or parameterization. The attack is network-accessible, requires no authentication or user interaction, and affects PostgreSQL and SQLite adapters (@payloadcms/db-postgres, @payloadcms/db-vercel-postgres, @payloadcms/db-sqlite, @payloadcms/db-d1-sqlite). An attacker can perform blind SQL injection to extract sensitive data or modify database contents if at least one collection exposes a JSON/richText field with read access enabled. The patch is available in Payload v3.73.0 and later.
Affected products
- Payload CMS < 3.73.0
- Payload db-postgres < 3.73.0
- Payload db-vercel-postgres < 3.73.0
- Payload db-sqlite < 3.73.0
- Payload db-d1-sqlite < 3.73.0
- Payload drizzle < 3.73.0
Timeline
- 2026-02-05: disclosed: GHSA-xx6w-jxg9-2wh8 published
- 2026-02-05: advisory: CVE-2026-25544 assigned
- 2026-02-05: patched: Payload v3.73.0 released with fix