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.
Attack Parameters
Impact Assessment
CVSS Vector v4.0
Weakness Type (CWE)
Vulnerable Products 35
| Configuration | From (including) | Up to (excluding) |
|---|---|---|
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:*:*:*:*:*:node.js:*:*
|
— |
3.90.0
|
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary0:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary1:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary10:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary11:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary12:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary13:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary14:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary15:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary16:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary17:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary18:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary19:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary2:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary20:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary21:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary22:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary23:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary24:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary25:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary26:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary27:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary28:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary29:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary3:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary30:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary31:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary32:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary33:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary4:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary5:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary6:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary7:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary8:*:*:*:node.js:*:*
|
— | — |
|
Payloadcms Payload
cpe:2.3:a:payloadcms:payload:4.0.0:canary9:*:*:*:node.js:*:*
|
— | — |