Skip to content

GHSA-jq29-r496-r955 CVE-2026-25574

payload-preferences has Cross-Collection IDOR in Access Control (Multi-Auth Environments)

Medium npm
Severity
5.4 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
0.22%
Chance of exploitation in the next 30 days. Higher than 12.27% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-639 Authorization Bypass Through User-Controlled Key
Fix
3.74.0
Upgrade payload to this version or later

Description

Impact

A cross-collection Insecure Direct Object Reference (IDOR) vulnerability exists in the payload-preferences internal collection. In multi-auth collection environments using Postgres or SQLite with default serial/auto-increment IDs, authenticated users from one auth collection can read and delete preferences belonging to users in different auth collections when their numeric IDs collide.

Users are affected if ALL of these are true:

  • Multiple auth collections configured (e.g., admins + customers)
  • Postgres or SQLite database adapter with serial/auto-increment IDs
  • Users in different auth collections with the same numeric ID

Not affected:

  • @payloadcms/db-mongodb adapter
  • Single auth collection environments
  • Postgres/SQLite with idType: 'uuid'

Patches

This vulnerability has been patched in v3.74.0. Users should upgrade to v3.74.0 or later.

Workarounds

There is no workaround other than upgrading. Users with multiple auth collections using Postgres or SQLite with serial IDs should upgrade immediately.

Affected versions

npm

PackageVulnerableFixed in
payload
< 3.74.0
3.74.0

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

payload npm → 3.74.0

npm
npm install payload@3.74.0
yarn
yarn add payload@3.74.0
pnpm
pnpm add payload@3.74.0

Severity breakdown

CVSS 3.1 5.4

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Weakness

CWE-639: Authorization Bypass Through User-Controlled Key

The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.

How to prevent it
  • Architecture and Design: For each and every data access, ensure that the user has sufficient privilege to access the record that is being requested.
  • Architecture and Design, Implementation: Make sure that the key that is used in the lookup of a specific user's record is not controllable externally by the user or that any tampering can be detected.
  • Architecture and Design: Use encryption in order to make it more difficult to guess other legitimate values of the key or associate a digital signature with the key so that the server can verify that there has been no tampering.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-9qpg-3cf8-w33x
Payload: Uploaded XML files could execute same-origin JavaScript
High Also affects payload
GHSA-v5gf-vpjc-pc7w
Payload: Unauthenticated account-lockout denial of service
High Also affects payload
GHSA-p223-2wr2-j562
Payload: Incomplete validation during the upload file lifecycle
High Also affects payload
GHSA-66wr-7vmr-p5jq
Payload authentication token field handling issue
Critical Also affects payload
GHSA-2pwp-2369-8fg3
Payload: Bypassed sanitization of user uploaded SVGs
High Also affects payload
GHSA-pj5h-5q6c-3pfx
Payload external upload trust validation issue
High Also affects payload
GHSA-f7hx-52q9-hcrf
Payload: Unauthorized update to collection documents
Critical Also affects payload
GHSA-97rh-rhh2-7vjv
Payload: Remote Code Execution through first-register
High Also affects payload
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor