### Impact
Users with read access to other user documents could access their active API keys. An exposed key grants the target account’s permissions until rotated or disabled.
You are affected if:
- An authentication collection enables `useAPIKey`.
- Users have read access to other user documents containing active API keys.
### Patches
Users should upgrade payload packages to `>= 3.90.0` or `>= 4.0.0-canary.34`.
### Workarounds
Disable `useAPIKey` or restrict users to reading only their own authentication document. Rotate any API key that may have been exposed.
PayloadCMS versions before 3.90.0 and canary versions before 4.0.0-canary.34 contain a vulnerability in the optional Stripe REST proxy plugin. Authenticated users with access to this proxy can perform unintended Stripe operations. This issue is addressed in versions 3.90.0 and 4.0.0-canary.34.
### Impact
A user with query access could use polymorphic join filters to infer hidden or read-restricted field values, including password-reset tokens.
You are affected if:
- You use an affected Payload version.
- Users can query a collection with a polymorphic join to sensitive fields.
### Patches
Users should upgrade Payload packages to `>= 3.90.0` or `>= 4.0.0-canary.34`.
### Workarounds
There is no complete workaround. Restricting read access to sensitive collections reduces exposure but does not replace upgrading.
### Impact
Under certain conditions, an attacker can craft a redirect link that sends a guest user to an untrusted destination after authenticating.
### Patches
Users should upgrade Payload packages to `>= 3.88.0` or `>= 4.0.0-canary.27`.
### Workarounds
Upgrading is recommended. Until then, remove user-controlled redirect values from authentication flows or restrict them to known local paths.
### Impact
A user can submit a request that exploits a SQL Injection vulnerability in Payload.
You are affected if:
- You use an affected Payload version.
- Untrusted users can query readable collections using dynamic filters or joins.
You are not affected if you use MongoDB (`@payloadcms/mongodb`).
### Patches
Users should upgrade Payload packages to `>= 3.88.0` or `>= 4.0.0-canary.27`.
### Workarounds
Upgrading to a patched version is recommended. Until you can upgrade, restrict untrusted users from supplying dynamic query filters or join parameters and limit read access to affected collections.
PayloadCMS versions from 3.0.0 up to but not including 3.88.0, and canary versions from 4.0.0-canary.0 up to but not including 4.0.0-canary.27, contain a prototype pollution vulnerability in the @payloadcms/plugin-import-export plugin. This vulnerability allows unauthenticated users to submit prototype-sensitive field paths, leading to unintended application behavior and potential remote code execution. The issue is fixed in versions 3.88.0 and 4.0.0-canary.27.
### Impact
Under certain conditions, an authenticated user could manage MCP API keys outside their intended account allowing an attacker to escalate privileges through account takeover.
Applications that do not use `@payloadcms/plugin-mcp` are not affected.
### Patches
Users should upgrade to `@payloadcms/plugin-mcp` version `3.88.0` or later.
### Workarounds
Upgrading is recommended. Until then, disable the MCP plugin or restrict MCP API-key management to trusted users.
### Impact
Under certain conditions, sorting readable records could reveal limited information about fields the requester was not permitted to read.
You are affected if untrusted users can query a collection, control its sorting, and sort by protected fields.
### Patches
Payload now applies field-level access checks to sort fields before executing queries.
Users should upgrade to `>= 3.88.0` or `>= 4.0.0-canary.27`.
### Workarounds
Upgrading is recommended. Until then, prevent untrusted users from controlling sort parameters or restrict their access to affected collections.
### Impact
The password-hashing configuration used a lower work factor than what is recommended.
### Patches
Payload now uses stronger password-hashing parameters and transparently upgrades older hashes following a successful login.
Users should upgrade Payload packages to `>= 3.90.0` or `>= 4.0.0-canary.34`.
### Workarounds
Upgrading is recommended. Until you can upgrade, protect database copies and backups from unauthorized access and require strong, unique passwords.
The @payloadcms/storage-vercel-blob storage adapter for Payload contains an improper access control vulnerability that allows authenticated users to bypass collection-level permissions by accessing the client-upload route directly. Attackers can upload files through the client-upload endpoint without possessing the required collection access permissions, circumventing the intended access control enforcement.
PayloadCMS versions prior to 3.78.0 contain a path traversal vulnerability in the client-upload signed-URL endpoints for multiple storage backends (S3, GCS, Azure, R2). This vulnerability allows an attacker to craft filenames that escape the intended storage directory, potentially leading to unauthorized file placement. The issue has been patched in version 3.78.0. The vulnerability has a CVSS score of 6.5, indicating a medium severity level.
Payload is a free and open source headless content management system. Prior to version 3.79.1, a Cross-Site Request Forgery (CSRF) vulnerability exists in the authentication flow. Under certain conditions, the configured CSRF protection could be bypassed, allowing cross-site requests to be made. This issue has been patched in version 3.79.1.
A stored Cross-Site Scripting (XSS) vulnerability exists in the admin panel of Payload CMS versions prior to 3.78.0. An authenticated user with write access to a collection could save malicious content that executes in the browser of another user viewing that content. This vulnerability has been patched in version 3.78.0.
Payload is a free and open source headless content management system. Prior to version 3.79.1, certain request inputs were not properly validated. An attacker could craft requests that influence SQL query execution, potentially exposing or modifying data in collections. This issue has been patched in version 3.79.1.
PayloadCMS versions prior to 3.79.1 contain an authenticated Server-Side Request Forgery (SSRF) vulnerability in the upload functionality. Authenticated users with create or update permissions on upload-enabled collections can cause the server to make arbitrary outbound HTTP requests. This vulnerability has been addressed in version 3.79.1. The CVSS score is 7.7, indicating high severity due to the potential for server-side request manipulation without impacting data integrity or availability directly.
Payload is a free and open source headless content management system. Prior to version 3.79.1 in @payloadcms/graphql and payload, a vulnerability in the password recovery flow could allow an unauthenticated attacker to perform actions on behalf of a user who initiates a password reset. This issue has been patched in version 3.79.1 for @payloadcms/graphql and payload.
Payload is a free and open source headless content management system. Prior to 3.75.0, a Server-Side Request Forgery (SSRF) vulnerability exists in Payload's external file upload functionality. When processing external URLs for file uploads, insufficient validation of HTTP redirects could allow an authenticated attacker to access internal network resources. The Payload environment must have at least one collection with `upload` enabled and a user who has `create` access to that upload-enabled collection in order to be vulnerable. An authenticated user with upload collection write permissions could potentially access internal services. Response content from internal services could be retrieved through the application. This vulnerability has been patched in v3.75.0. As a workaround, one may mitigate this vulnerability by disabling external file uploads via the `disableExternalFile` upload collection option, or by restricting `create` access on upload-enabled collections to trusted users only.
PayloadCMS versions prior to 3.73.0 contain a critical SQL injection vulnerability in the handling of JSON or richText fields. User input was embedded directly into SQL queries without proper escaping, allowing unauthenticated attackers to perform blind SQL injection. This could lead to extraction of sensitive data such as emails and password reset tokens, and enable full account takeover without needing to crack passwords. The vulnerability is fixed in version 3.73.0.
Payload is a free and open source headless content management system. Prior to 3.74.0, 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. This vulnerability has been patched in v3.74.0.