CVE-2026-58200 in Payload Pluginsinfo

Summary

by MITRE • 09/15/2026

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.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 09/15/2026

The Payload Plugins ecosystem includes a collection of extensions designed to enhance the functionality of Payload CMS, specifically through integrations with external services such as Cloudinary for media management. Within versions ranging from 0.3.0 up to and including 0.4.0, the payload-cloudinary-plugin contains a critical security flaw in its server-side signature generation logic that undermines the intended access control mechanisms. The vulnerability centers on the POST /api/cloudinary-generate-signature endpoint, which is responsible for creating authentication tokens required by Cloudinary's upload API to process asset uploads and modifications securely.

The technical root cause of this vulnerability lies in the implementation of the getGenerateSignature handler located within cloudinary/src/getGenerateSignature.ts. This function accepts a body parameter named paramsToSign from incoming HTTP requests and passes it directly, without sufficient validation or sanitization, to the Cloudinary utility function api_sign_request. The design assumes that client-side uploads will handle authorization via the publicly visible API key, but fails to enforce server-side constraints on what parameters can be signed. Consequently, an attacker who is authenticated as a legitimate Payload user can manipulate the paramsToSign field to include arbitrary keys and values that are not restricted by any allowlist or collection policy.

This lack of input validation allows for several dangerous operations beyond normal usage patterns. An authenticated user can generate valid HMAC-SHA1 signatures for parameters such as overwrite, type, notification_url, invalidate, folder, and public_id. By controlling these parameters through the signature generation endpoint, an attacker can force asset replacement by setting overwrite to true, change upload visibility settings, redirect callbacks to URLs controlled by the attacker via notification_url, trigger cache invalidation on Cloudinary's infrastructure using invalidate, or place uploaded files in arbitrary directories outside of the intended folder structure. The ability to specify a custom public_id further enables overwriting existing assets if combined with the overwrite parameter.

The operational impact is severe because it allows for unauthorized modification and deletion of media assets stored within the organization's Cloudinary account. Attackers can disrupt service availability by invalidating cached content, exfiltrate data or inject malicious payloads through manipulated upload paths, and potentially compromise downstream systems that rely on webhook notifications triggered by these uploads. Since the vulnerability requires only basic authentication against Payload CMS, any compromised user credential provides a direct path to exploit this flaw without needing elevated privileges or additional reconnaissance steps.

This issue aligns with CWE-20 Improper Input Validation, as the application fails to verify that the input parameters conform to expected constraints before processing them in a security-critical function. It also relates to CWE-732 Incorrect Permission Assignment for Critical Resource, since the signature generation mechanism effectively grants permissions that exceed what was intended by the system's configuration and access control policies. From an ATT&CK perspective, this vulnerability facilitates lateral movement within cloud storage environments and can be leveraged for data exfiltration or persistence through webhook manipulation techniques commonly observed in supply chain attacks targeting content management systems.

The recommended mitigation is to upgrade immediately to version 0.4.0 of the payload-cloudinary-plugin where these issues have been addressed. For organizations unable to patch instantly, implementing a reverse proxy rule to restrict access to the /api/cloudinary-generate-signature endpoint or enforcing strict allowlists for permitted parameters in custom middleware can provide temporary relief. Additionally, reviewing Cloudinary account settings to limit webhook destinations and restricting folder permissions may reduce the blast radius of exploitation until the software update is applied.

Responsible

GitHub M

Reservation

06/29/2026

Disclosure

09/15/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you need the next level of professionalism?

Upgrade your account now!