CVE-2026-105856 in Payloadinfo

Summary

by MITRE • 10/06/2026

Payload is a free and open source headless content management system. Prior to 3.90.0 and 4.0.0-canary.34, an attacker with read and create or update access to a collection containing a json field or a blocks field with blocksAsJSON enabled can inject SQL through a crafted field path and operators. Collections without those fields are not affected, and richText fields are not affected. The SQLite packages are fixed in versions 3.90.0 and 4.0.0-canary.34, and the Postgres packages are fixed in version 3.73.0.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 10/06/2026

Payload CMS is a widely adopted free and open-source headless content management system designed to provide developers with flexible data modeling capabilities through its collection-based architecture. The vulnerability identified affects specific versions of this platform, namely those prior to version 3.90.0 in the legacy branch and before version 4.0.0-canary.34 in the development track for SQLite implementations, as well as Postgres installations running versions earlier than 3.73.0. This security flaw represents a significant risk because it allows authenticated users with relatively low-level permissions to escalate their privileges or extract sensitive data from the underlying database through SQL injection techniques. The vulnerability is not universal across all Payload CMS configurations but is strictly contingent upon specific field types and configuration settings within the affected collections, making targeted exploitation possible only when these precise conditions are met.

The technical root cause of this vulnerability lies in how the application constructs database queries based on user-supplied input for filtering or querying data. Specifically, the flaw exists in the handling of JSON fields and blocks fields where the blocksAsJSON configuration option is enabled. When an attacker with read access to a collection containing these specific field types can also create or update documents within that same collection, they are able to craft malicious requests using specially constructed field paths and query operators. These crafted inputs bypass standard input validation mechanisms because the application fails to properly sanitize or parameterize the values used in SQL statement construction for JSON-based queries. Consequently, arbitrary SQL code is executed by the database engine, allowing the attacker to manipulate the intended logic of the query. This type of flaw is characteristic of CWE-89 Improper Neutralization of Special Elements used in an SQL Command, where user input directly influences the structure of a database command without adequate protection against injection attacks.

The operational impact of this vulnerability extends beyond simple data leakage due to the specific permissions required for exploitation. An attacker does not need administrative privileges; instead, access limited to reading and creating or updating documents within a vulnerable collection is sufficient to trigger the SQL injection. This lowers the barrier to entry significantly compared to vulnerabilities requiring full admin rights. Once exploited, an attacker can potentially read sensitive data stored in other collections that should be inaccessible due to Payload CMS's built-in role-based access control mechanisms. Furthermore, depending on the database backend and its configuration, the impact could escalate to modifying or deleting data within those protected collections, leading to integrity violations and potential denial of service conditions if destructive SQL commands are executed. The vulnerability specifically impacts SQLite packages in versions prior to 3.90.0 and 4.0.0-canary.34, while Postgres users were affected until version 3.73.0 was released with the necessary patches. Collections that do not utilize JSON or blocksAsJSON fields remain unaffected by this specific attack vector, as does any usage of richText fields which are processed through different code paths immune to this particular injection method.

Mitigation strategies for organizations utilizing Payload CMS involve immediate upgrading to the patched versions mentioned above. For SQLite users, updating to version 3.90.0 or later is critical, while Postgres environments must be updated to at least version 3.73.0. In cases where an upgrade cannot be performed immediately due to compatibility constraints with other system components, administrators should consider disabling the blocksAsJSON feature for any collections that are exposed to users who have create or update permissions but lack full administrative rights. Additionally, implementing strict input validation and parameterized queries at the application layer can provide a defense-in-depth approach, although upgrading remains the primary remediation step recommended by the Payload CMS development team. Security teams should also audit their access control policies to ensure that least-privilege principles are strictly enforced, minimizing the number of users who possess write access to collections containing JSON or blocksAsJSON fields. This vulnerability highlights the importance of rigorous code review practices and regular dependency updates in maintaining the security posture of headless CMS platforms that handle complex data structures.

Responsible

GitHub M

Reservation

10/06/2026

Disclosure

10/06/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Interested in the pricing of exploits?

See the underground prices here!