
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-39397 is a missing authorization vulnerability in @delmaredigital/payload-puck, a PayloadCMS plugin for integrating the Puck visual page builder. All /api/puck/* CRUD endpoint handlers registered by createPuckPlugin() called Payload's local API with overrideAccess: true by default, effectively bypassing all collection-level access control and silently ignoring any access rules configured by the developer. The vulnerability affects all versions of the package prior to 0.6.23 and was disclosed on April 7, 2026. It carries a CVSS v3.1 base score of 9.4 (Critical) per the GitHub Security Advisory, and 9.8 (Critical) per NVD scoring (GitHub Advisory, Feedly).
The root cause is CWE-862 (Missing Authorization): the endpoint handlers in src/endpoints/index.ts invoked Payload's local API with the hardcoded parameter overrideAccess: true, which is Payload's mechanism to skip access control checks entirely. This meant that any access configuration passed to createPuckPlugin() or defined on Puck-registered collections had no effect on these endpoints. An unauthenticated remote attacker could send standard HTTP requests (GET, POST, PATCH, DELETE) to /api/puck/:collection/* endpoints without any credentials. The fix, applied in commit 9148201, changes all handlers to pass overrideAccess: false and forward the req object so Payload evaluates access rules against the current user (GitHub Advisory, Patch Commit).
An unauthenticated remote attacker can perform full CRUD operations — list all documents (including drafts), read any document by ID, create documents with arbitrary field values, update any document bypassing field-level access rules, delete any document, and read or restore version history — on any collection registered with createPuckPlugin(). In typical installations, this primarily affects the pages collection backing the website's content, meaning an attacker could deface, exfiltrate, or destroy all website pages including unpublished drafts. The scope is limited to collections explicitly registered with the plugin; other Payload collections such as users, media, or business data not exposed to the plugin are not directly reachable through this attack vector (GitHub Advisory).
No confirmed in-the-wild exploitation has been observed, and no weaponized exploit code is publicly available. The vulnerability was reported via a GitHub issue (Issue #7) by a researcher named Dag-Rui who discovered the bypass during access control testing; the issue contains no step-by-step exploitation guide or attack payload. The EPSS score is approximately 0.038%, indicating low current exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Qualys has added detection for this CVE (GitHub Issue, Feedly).
@delmaredigital/payload-puck versions prior to 0.6.23. This can be done by inspecting package.json files in public repositories, or by probing for the /api/puck/ path on target sites running PayloadCMS./api/puck/{collection-slug} (e.g., /api/puck/pages) to list all documents in the collection, including unpublished drafts. No authentication headers are required./api/puck/{collection-slug}/{document-id} to retrieve the full content of any document by ID./api/puck/{collection-slug}/{document-id} with a JSON body containing arbitrary field values to update or create documents./api/puck/{collection-slug}/{document-id} to permanently remove any document./api/puck/{collection-slug}/{document-id}/versions to enumerate version history, and POST to the restore endpoint to roll back or overwrite content with a previous version (GitHub Advisory, GitHub Issue)./api/puck/* endpoints from external or unexpected IP addresses; high volume of requests to /api/puck/{collection}/ without corresponding authenticated sessions./api/puck/ paths with no Authorization header or session cookie; repeated access to /api/puck/{collection}/{id}/versions or /api/puck/{collection}/{id}/restore from a single IP.Upgrade @delmaredigital/payload-puck to version 0.6.23 or later, which fixes the issue by passing overrideAccess: false and forwarding the request object to Payload's local API in all endpoint handlers. If an immediate upgrade is not possible, place a reverse proxy or middleware authentication check in front of all /api/puck/* routes to require an authenticated session before requests reach the plugin's handlers. Additionally, restrict network-level access to /api/puck/* endpoints to trusted clients only, and audit which collections are registered with createPuckPlugin() to minimize exposure (GitHub Advisory, Patch Commit).
The vulnerability was reported by a community researcher (Dag-Rui) via a GitHub issue, and the maintainer (allandelmare) promptly published a security advisory and released a fix in version 0.6.23. Coverage appeared on threat intelligence aggregators including The Hacker Wire and InfinitSec shortly after disclosure. No significant broader media coverage or notable researcher commentary beyond the initial report and fix has been identified (GitHub Issue, GitHub Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."