ZeroHour

CVE-2026-58200

niche

Unrestricted Cloudinary Signature Oraclement in Payload Cloudinary Plugin <0.4.0

CVSS 3.1
7.1 high
EPSS
Published
()
Modified
AI analysis

The @jhb.software/payload-cloudinary-plugin (part of the Payload Plugins collection for Payload CMS), from 0.3.0 until 0.4.0, exposes a POST /api/cloudinary-generate-signature endpoint that signs attacker-supplied paramsToSign values with the server's Cloudinary HMAC-SHA1 secret without any parameter allowlist, collection policy, timestamp freshness check, or folder enforcement. Any authenticated Payload user can trigger this endpoint to obtain valid signatures for unauthorized Cloudinary parameters such as overwrite, type, notification_url, invalidate, folder, and public_id. With these signatures, an attacker can replace existing assets, change upload visibility (e.g., to unsigned/public types), register attacker-controlled callback URLs, invalidate CDN caches, and upload outside the intended folder — resulting in high integrity impact and low availability impact per the CVSS 7.1 rating. Affected parties are Payload CMS deployments running the plugin with clientUploads enabled in the stated version range. No public proof-of-concept is known and the flaw is not listed in CISA's KEV, so exploitation status is none known.

What to do: Upgrade @jhb.software/payload-cloudinary-plugin to 0.4.0 or later, which enforces signing restrictions. If immediate upgrade is not possible, disable clientUploads or restrict access to the /api/cloudinary-generate-signature endpoint to trusted roles only. Review Cloudinary logs and asset history for unexpected overwrites, folder changes, or notification_url callbacks, and rotate Cloudinary credentials if misuse is suspected.

Affected
jhb.software (Payload Plugins) @jhb.software/payload-cloudinary-plugin>=0.3.0, <0.4.0
Estimated exposure
nicheunknown (community npm plugin; no public install counts available) — No active-install or download figures were provided, and this is a third-party community package for Payload CMS, a relatively niche headless CMS, so the deployment base is plausibly small but cannot be quantified.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Payload Plugins is a collection of plugins designed to enhance Payload CMS. From 0.3.0 until 0.4.0, @jhb.software/payload-cloudinary-plugin deployments with clientUploads enabled expose POST /api/cloudinary-generate-signature, whose handler in cloudinary/src/getGenerateSignature.ts passes attacker-controlled body.paramsToSign directly to cloudinary.utils.api_sign_request without a key allowlist, collection policy, timestamp freshness check, or configured-folder enforcement. Any authenticated Payload user can obtain a valid Cloudinary HMAC-SHA1 signature for unauthorized parameters such as overwrite, type, notification_url, invalidate, folder, and public_id. The signature can authorize asset replacement, upload visibility changes, callbacks to attacker-selected URLs, cache invalidation, and uploads outside the intended folder. The client-visible Cloudinary API key is expected by the upload design, but the unrestricted server-side signature supplies the authorization value needed to complete these operations. This vulnerability is fixed in 0.4.0.

Weakness
CWE-347
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L

In the news

No ingested article mentions this CVE yet.