Skip to main content

Payload CMS CVE-2026-105867

| EUVDEUVD-2026-93513 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-06 GitHub_M GHSA-7vg8-29qx-jgj8
7.1
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege user
  2. Exploit
    Request signed upload URL for cross-collection key
  3. Execution
    Overwrite existing S3 object via PUT
  4. Impact
    Corrupt/replace victim collection's file

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation requires ALL of: (1) an authenticated user account (PR:L); (2) @payloadcms/storage-s3 before 3.90.0 (or canary before 4.0.0-canary.34); (3) client uploads enabled (clientUploads: true) for multiple upload collections; (4) those collections sharing the same S3 bucket; and (5) useCompositePrefixes set to false or left unset. Under these conditions the attacker can request a signed URL and overwrite an existing object owned by a different collection, bypassing that collection's access controls and prior file validation. Limiting factors: it is NOT remote-unauthenticated (a valid session is needed), and deployments not using S3 client uploads with a shared bucket, or those with useCompositePrefixes enabled, are not affected.

Impact

This is a genuine but moderate-priority, access-control integrity flaw rather than a critical remote-code issue. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L) scores 7.1 (High): network-reachable, low complexity, but requiring low-level privileges (PR:L) - i.e. an authenticated user - and delivering high integrity impact (object overwrite) with low availability impact and NO confidentiality impact. This aligns with CWE-639 (authorization bypass via user-controlled key / IDOR). No EPSS score, no CISA KEV listing, and no public exploit code are present in the input, so exploitation status is: no public exploit identified at time of analysis. The absence of KEV/EPSS data combined with the authenticated-only, config-dependent nature strongly suggests this is not a mass-exploitation candidate. The main caveat is that exploitation is gated behind a specific, non-default-ish configuration (clientUploads enabled across multiple collections sharing one bucket with useCompositePrefixes false/unset), which materially narrows the exposed population below what the raw 7.1 implies. Prioritize patching for Payload deployments that use the S3 client-upload feature; deprioritize for those not using shared-bucket client uploads.

Exploit ScenarioDerived

In a Payload instance where multiple upload collections share one S3 bucket with client uploads enabled and useCompositePrefixes off, an authenticated low-privilege user requests a signed upload URL for a filename matching an object in another collection, then PUTs their own content to overwrite the victim object - bypassing that collection's access controls and file validation. No public exploit code is identified; the attack requires only a valid authenticated session and knowledge/guessing of a target key.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 06, 2026

An authenticated user of Payload CMS can overwrite an existing S3 object owned by a different upload collection when the @payloadcms/storage-s3 plugin is used with client uploads enabled across multiple collections that share a single bucket and leave useCompositePrefixes at its default (false or unset). Because the signed-URL generation path did not bind the target object key to the requesting collection, the attacker's upload silently replaces the victim collection's stored file, bypassing that collection's access controls and any prior file-type/size validation. The flaw yields high integrity impact with no confidentiality loss (CVSS 7.1), requires an authenticated session (PR:L) plus the specific shared-bucket client-upload configuration, and no public exploit code or CISA KEV entry was identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade @payloadcms/storage-s3 to 3.90.0 (or 4.0.0-canary.34 for canary tracks), which adds IfNoneMatch: '*' to the presigned PUT and an If-None-Match: '*' client header so S3 rejects writes to keys that already exist with HTTP 412, plus explicit headers and error surfacing in S3ClientUploadHandler. After upgrading, update the bucket CORS policy to permit the PUT method and the If-None-Match request header from your site, otherwise browser client uploads will fail the preflight and the fix will appear to break uploads. If immediate upgrade is not possible, the most effective compensating control is to set useCompositePrefixes: true on every upload collection sharing the bucket so keys become collection-scoped; the trade-off is a changed key layout that alters existing object paths and may require migrating or re-uploading assets and updating any URL assumptions. Alternatively, split collections across distinct S3 buckets or disable clientUploads so uploads pass through the server-side authorization path, at the cost of server bandwidth and Vercel's ~4.5MB server upload limit. As a defense-in-depth backstop against overwrites generally, apply a bucket policy or S3 Object Lock/versioning posture that denies unconditional PUT overwrites of existing keys, and treat any pre-3.90.0 object store as potentially tampered where shared-bucket client uploads were in use. Review references: advisory https://github.com/payloadcms/payload/security/advisories/GHSA-7vg8-29qx-jgj8 and release https://github.com/payloadcms/payload/releases/tag/v3.90.0.

Affected VersionsENISA

storage-s3 < 3.90.0
payload 4.0.0-canary.0, < 4.0.0-canary.34
storage-s3 4.0.0-canary.0, < 4.0.0-canary.34
payload < 3.90.0

Affected Packages

npm @payloadcms/storage-s3 fix: 3.90.0, 4.0.0-canary.34
euvd payload fix: 3.90.0
euvd payload_4_0_0_canary_0 fix: 4.0.0-canary.34
euvd storage_s3 fix: 3.90.0
euvd storage_s3_4_0_0_canary_0 fix: 4.0.0-canary.34

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 5 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The issue is an authorization bypass through a user-controlled key (CWE-639) in the S3 upload flow of Payload's object-storage adapter. When clientUploads is enabled, the server issues a presigned S3 PUT URL and the browser writes the file directly to the bucket, so object-level authorization must be enforced by the key the server generates. With multiple upload collections pointing at the same bucket and useCompositePrefixes disabled, collection prefixes collide, and the signed URL handler in packages/storage-s3/src/generateSignedURL.ts would happily mint a URL for a key already occupied by another collection's asset. The upstream fix hardens this at two layers: getGenerateSignedURLHandler now stamps IfNoneMatch: '*' onto the presigned PUT (S3's conditional-write primitive, which returns HTTP 412 Precondition Failed if the object already exists) and forwards an If-None-Match: '*' request header, while S3ClientUploadHandler.ts now passes explicit headers and throws on a non-ok response so the client surfaces the failure instead of assuming success. The accompanying docs change requires that CORS for the bucket allow the PUT method and the If-None-Match request header; without that CORS update, the browser-side conditional write will be blocked. The associated integration test asserts that a second upload of an existing key returns status 412 and that the stored bytes remain the original file.

Know when Payload gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N
vuln.today AI 7.1 HIGH

Network-reachable with an authenticated session (PR:L), no UI; overwriting another collection's object is high integrity impact, minor availability impact, and no data disclosure (C:N).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 06, 2026 - 18:19 EUVD
CVE Published
Oct 06, 2026 - 16:49 cve.org
HIGH 7.1

DescriptionCVE.org

Payload is a free and open source headless content management system. In @payloadcms/storage-s3 versions before 3.90.0 and canary versions before 4.0.0-canary.34, an authenticated user can overwrite an existing S3 object belonging to another upload collection when client uploads are enabled for multiple collections sharing a bucket and useCompositePrefixes is false or unset. This bypasses the target collection's access controls and prior file validation. This issue is fixed in versions 3.90.0 and 4.0.0-canary.34.

Technical POC Analysis

Evidence basis: the GitHub advisory GHSA-7vg8-29qx-jgj8 and its CVSS v4 block.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Payload CMS deployments using the @payloadcms/storage-s3 plugin with client uploads enabled across multiple collections sharing a single bucket are vulnerable to unauthorized file overwrites by authenticated users. This could allow an attacker with valid credentials to silently replace files owned by other collections, compromising data integrity and bypassing access controls. Leadership should be concerned because this affects the integrity of stored content, potentially leading to data loss, regulatory compliance issues, and reputational damage if exploited.

Business Impact: High
Compensating Controls

Set useCompositePrefixes to true; segregate S3 buckets per collection; restrict client uploads to trusted users; implement strict IAM policies and monitoring for unauthorized object changes.

Threat Intelligence Overview

EPSS Score
0.3%
Top 85% exploitable
Prevalence
Medium
popular open-source headless CMS, but S3 client-upload config is a subset
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2022-27952 CRITICAL POC
9.8 Apr 12

An arbitrary file upload vulnerability in the file upload module of PayloadCMS v0.15.0 allows attackers to execute arbit

CVE-2026-105844 CRITICAL POC
9.3 Oct 06

Prototype pollution in Payload CMS's @payloadcms/plugin-import-export module lets an unauthenticated remote attacker sub

CVE-2026-105851 CRITICAL POC
9.3 Oct 06

Field-level access control can be bypassed in Payload CMS's document duplicate operation, letting a caller with access t

CVE-2026-105850 HIGH POC
8.8 Oct 06

Duplicate order processing in @payloadcms/plugin-ecommerce allows remote, unauthenticated attackers to have a single Str

CVE-2026-105854 HIGH POC
8.7 Oct 06

Malformed multipart request bodies sent to Payload CMS versions 3.0.0 through 3.89.x and 4.0.0-canary.0 through 4.0.0-ca

CVE-2026-105849 HIGH POC
7.7 Oct 06

API key disclosure in Payload CMS lets an authenticated user with ordinary read access to other users' authentication do

CVE-2026-105855 HIGH POC
7.6 Oct 06

Authenticated users who can update an auth collection document in Payload CMS can change the password field on that docu

CVE-2026-105852 MEDIUM POC
6.9 Oct 06

Payload CMS versions before 3.90.0 and canary versions before 4.0.0-canary.34 contain an authorization bypass in relatio

CVE-2026-105857 CRITICAL
10.0 Oct 06

Unauthorized read access to stored form submissions and form email configuration in Payload CMS deployments running the

CVE-2026-105859 CRITICAL
9.8 Oct 06

Payload CMS releases before 3.90.0 (and canary builds before 4.0.0-canary.34) expose an orderable reorder endpoint that

CVE-2026-25544 CRITICAL POC
9.8 Feb 06

Payload CMS prior to 3.73.0 has a SQL injection vulnerability when querying structured data, enabling database compromis

CVE-2026-105845 CRITICAL POC
9.8 Oct 06

SQL injection in Payload CMS 3.0.0 through before 3.88.0 (and 4.0.0-canary builds before 4.0.0-canary.27) allows remote

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy