/

CVE-2026-105859

Severity:

CRITICAL RISK

(9.8)

Broken Access Control (CWE-639) in Payload CMS Endpoint

CVE-2026-105859

Analyzed

Vulnerability type

Category:

Broken Access Control

CWE:

CWE-639, CWE-862

Impact:

Unauthorized Data Modification and Authorization Bypass

Severity:

CRITICAL RISK

(9.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A critical authorization flaw in Payload CMS may allow an attacker to modify collection documents through a specific update endpoint without collection-level or field-level access checks. The risk arises when ordering is enabled for a collection or join field, potentially allowing unauthorized data changes by an attacker who can reach the affected endpoint.

A critical authorization flaw in Payload CMS may allow an attacker to modify collection documents through a specific update endpoint without collection-level or field-level access checks. The risk arises when ordering is enabled for a collection or join field, potentially allowing unauthorized data changes by an attacker who can reach the affected endpoint.

Affected context

The issue may occur in Payload CMS deployments where:

  • A collection or join field has ordering enabled
  • The affected document update endpoint is exposed to an attacker
  • Collection-level or field-level authorization is expected to restrict updates
  • Authorization checks are not consistently applied to the ordering-related update path

The practical exposure depends on endpoint accessibility, authentication controls, and the permissions assigned to the requesting identity.

The issue may occur in Payload CMS deployments where:

  • A collection or join field has ordering enabled
  • The affected document update endpoint is exposed to an attacker
  • Collection-level or field-level authorization is expected to restrict updates
  • Authorization checks are not consistently applied to the ordering-related update path

The practical exposure depends on endpoint accessibility, authentication controls, and the permissions assigned to the requesting identity.

Exploit preconditions

  • Attack surface: A Payload CMS document update endpoint associated with ordering functionality
  • Required access: Ability to submit requests to the affected endpoint; authentication requirements depend on deployment configuration
  • Trigger point: Processing an update request for a collection document when ordering is enabled on a collection or join field
  • Why exploitation is possible: The update path may modify documents without enforcing the applicable collection-level or field-level access controls
  • Attack surface: A Payload CMS document update endpoint associated with ordering functionality
  • Required access: Ability to submit requests to the affected endpoint; authentication requirements depend on deployment configuration
  • Trigger point: Processing an update request for a collection document when ordering is enabled on a collection or join field
  • Why exploitation is possible: The update path may modify documents without enforcing the applicable collection-level or field-level access controls

Why this happens

The underlying bug is an authorization enforcement gap in a specialized document update path. The endpoint performs a state-changing operation without consistently evaluating the permissions that normally govern the target collection and fields.

This behavior maps primarily to CWE-639: Authorization Bypass Through User-Controlled Key, because an attacker-controlled request may identify or influence a document update without the corresponding authorization decision being enforced. It also relates to CWE-862: Missing Authorization, where access control checks are absent from a protected operation.

The underlying bug is an authorization enforcement gap in a specialized document update path. The endpoint performs a state-changing operation without consistently evaluating the permissions that normally govern the target collection and fields.

This behavior maps primarily to CWE-639: Authorization Bypass Through User-Controlled Key, because an attacker-controlled request may identify or influence a document update without the corresponding authorization decision being enforced. It also relates to CWE-862: Missing Authorization, where access control checks are absent from a protected operation.

Potential impact

  • Unauthorized users may modify collection documents
  • Attackers could alter ordering-related or other permitted document fields
  • Data integrity and application workflows may be disrupted
  • Unauthorized changes could affect published content or administrative processes
  • Compromised records may support further privilege abuse or business-logic attacks
  • Unauthorized users may modify collection documents
  • Attackers could alter ordering-related or other permitted document fields
  • Data integrity and application workflows may be disrupted
  • Unauthorized changes could affect published content or administrative processes
  • Compromised records may support further privilege abuse or business-logic attacks

General mitigation guidance

Mitigation generally focuses on making authorization mandatory for every state-changing request path, including specialized ordering and relationship handlers.

Common defensive patterns include:

  • Applying collection-level and field-level authorization checks before any document mutation
  • Centralizing authorization decisions instead of relying on endpoint-specific logic
  • Treating document identifiers, field names, and ordering values as untrusted input
  • Enforcing allowlisted fields and server-side ownership or role checks
  • Using least-privilege roles and minimizing write access to sensitive collections
  • Adding authorization regression tests for enabled ordering and join-field configurations
  • Preventing unauthorized clients from reaching administrative or mutation endpoints through policy controls

Mitigation generally focuses on making authorization mandatory for every state-changing request path, including specialized ordering and relationship handlers.

Common defensive patterns include:

  • Applying collection-level and field-level authorization checks before any document mutation
  • Centralizing authorization decisions instead of relying on endpoint-specific logic
  • Treating document identifiers, field names, and ordering values as untrusted input
  • Enforcing allowlisted fields and server-side ownership or role checks
  • Using least-privilege roles and minimizing write access to sensitive collections
  • Adding authorization regression tests for enabled ordering and join-field configurations
  • Preventing unauthorized clients from reaching administrative or mutation endpoints through policy controls

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis and code review of update handlers that mutate documents before authorization checks
  • Review signals such as endpoint-specific permission logic, missing middleware, or authorization checks applied only after mutation
  • Tests that exercise collection-level and field-level denial rules on ordering and join-field update paths
  • API monitoring for unexpected document changes, unusual ordering updates, or writes by identities lacking corresponding permissions
  • Policy enforcement requiring authorization tests for every document mutation endpoint
  • Automated security review tools that flag missing authorization checks and inconsistent middleware coverage

Organizations can look for this class of issue through:

  • Static analysis and code review of update handlers that mutate documents before authorization checks
  • Review signals such as endpoint-specific permission logic, missing middleware, or authorization checks applied only after mutation
  • Tests that exercise collection-level and field-level denial rules on ordering and join-field update paths
  • API monitoring for unexpected document changes, unusual ordering updates, or writes by identities lacking corresponding permissions
  • Policy enforcement requiring authorization tests for every document mutation endpoint
  • Automated security review tools that flag missing authorization checks and inconsistent middleware coverage

Sources

SourceLink
github.comgithub.com/payloadcms/payload/commit/36fa9af73dd04fa59f4b4a06d11454538c4c1409
github.comgithub.com/payloadcms/payload/releases/tag/v3.90.0
github.comgithub.com/payloadcms/payload/security/advisories/GHSA-f7hx-52q9-hcrf

Frequently asked

questions

It may be remotely exploitable when the affected update endpoint is reachable over the network and the deployment does not otherwise block unauthorized requests. The exact scope depends on authentication, routing, and permission configuration.

Not necessarily. Authentication requirements are determined by the application's access policies, but any authenticated identity with insufficient permissions may still be relevant if authorization checks are bypassed.

Enforce collection-level and field-level authorization before every document mutation, including ordering and join-field update paths. Authorization should be centralized and applied consistently.

Use deny-by-default permissions, treat identifiers and field selections as untrusted, add regression tests for specialized endpoints, and monitor for writes that exceed the caller's intended privileges.

It may be remotely exploitable when the affected update endpoint is reachable over the network and the deployment does not otherwise block unauthorized requests. The exact scope depends on authentication, routing, and permission configuration.

Not necessarily. Authentication requirements are determined by the application's access policies, but any authenticated identity with insufficient permissions may still be relevant if authorization checks are bypassed.

Enforce collection-level and field-level authorization before every document mutation, including ordering and join-field update paths. Authorization should be centralized and applied consistently.

Use deny-by-default permissions, treat identifiers and field selections as untrusted, add regression tests for specialized endpoints, and monitor for writes that exceed the caller's intended privileges.

Find out what's already
exploitable in your codebase.