Skip to main content
COSMICBYTEZLABS
NewsSecurityHOWTOsToolsStudyTraining
ProjectsChecklistsAI RankingsNewsletterStatusTagsAbout
Subscribe

Press Enter to search or Esc to close

News
Security
HOWTOs
Tools
Study
Training
Projects
Checklists
AI Rankings
Newsletter
Status
Tags
About
RSS Feed
Reading List
Subscribe

Stay in the Loop

Get the latest security alerts, tutorials, and tech insights delivered to your inbox.

Subscribe NowFree forever. No spam.
COSMICBYTEZLABS

Your trusted source for IT intelligence, cybersecurity insights, and hands-on technical guides.

629+ Articles
118+ Guides

CONTENT

  • Latest News
  • Security Alerts
  • HOWTOs
  • Projects
  • Exam Prep

RESOURCES

  • Search
  • Browse Tags
  • Newsletter Archive
  • Reading List
  • RSS Feed

COMPANY

  • About Us
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CosmicBytez Labs. All rights reserved.

System Status: Operational
  1. Home
  2. Security
  3. CVE-2026-39397: PayloadCMS Puck Plugin Access Control Bypass
CVE-2026-39397: PayloadCMS Puck Plugin Access Control Bypass

Critical Security Alert

This vulnerability is actively being exploited. Immediate action is recommended.

SECURITYCRITICALCVE-2026-39397

CVE-2026-39397: PayloadCMS Puck Plugin Access Control Bypass

A critical access control bypass (CVSS 9.4) in the @delmaredigital/payload-puck PayloadCMS plugin exposes all /api/puck/* CRUD endpoints without authentication, allowing unauthenticated attackers to read, write, and delete any collection data. Fixed in v0.6.23.

Dylan H.

Security Team

April 8, 2026
4 min read

Affected Products

  • @delmaredigital/payload-puck — all versions prior to 0.6.23
  • PayloadCMS installations using the payload-puck plugin

Executive Summary

CVE-2026-39397 is a critical access control bypass vulnerability (CVSS 9.4) affecting the @delmaredigital/payload-puck npm package — a PayloadCMS plugin for integrating the Puck visual page builder. All versions prior to 0.6.23 register API endpoint handlers with overrideAccess: true in Payload's local API, which completely bypasses PayloadCMS's collection-level access control. The result: every /api/puck/* CRUD endpoint is fully accessible without authentication, exposing any data stored in the application's collections to unauthorized read, write, and delete operations.


Vulnerability Details

FieldDetails
CVECVE-2026-39397
CVSS Score9.4 (Critical)
TypeMissing Authorization / Access Control Bypass
Package@delmaredigital/payload-puck (npm)
Affected VersionsAll versions < 0.6.23
Fixed Version0.6.23
AuthenticationNot required
Attack VectorNetwork
ImpactUnauthorized read, write, delete on all PayloadCMS collections

Technical Analysis

Root Cause

The createPuckPlugin() function, which registers /api/puck/* CRUD endpoint handlers, calls Payload's local API with the parameter overrideAccess: true. This flag is a PayloadCMS mechanism intended for internal/trusted server-side use only — it instructs the framework to skip all access control checks for that operation.

By calling Payload's local API with overrideAccess: true on user-facing HTTP routes, every collection-level access control rule is silently bypassed for those endpoints. An unauthenticated HTTP request to any /api/puck/* route will receive a full response as if the request came from a privileged internal actor.

Attacker Request → /api/puck/<collection>/<id>
  ↓
createPuckPlugin() handler
  ↓
payload.find({ collection, overrideAccess: true })  ← bypasses ACL
  ↓
Full data returned without authentication check

Scope of Affected Operations

All standard CRUD operations registered by the plugin are affected:

OperationEndpoint PatternImpact
ReadGET /api/puck/*Exfiltrate any collection data
CreatePOST /api/puck/*Inject arbitrary records
UpdatePUT/PATCH /api/puck/*Tamper with any stored content
DeleteDELETE /api/puck/*Destroy any collection records

This means an attacker with network access to the application can enumerate, extract, modify, and delete data across any collection exposed through the plugin — regardless of configured PayloadCMS access control policies.


Affected Environments

Any PayloadCMS application that:

  • Has installed the @delmaredigital/payload-puck npm package
  • Is running a version prior to 0.6.23
  • Has createPuckPlugin() registered in its PayloadCMS configuration

is fully vulnerable. The attack requires no credentials, no API keys, and no prior knowledge of the application's schema — a simple HTTP request to a discoverable endpoint is sufficient.


Remediation

Immediate Fix

Upgrade to @delmaredigital/payload-puck version 0.6.23 or later.

npm install @delmaredigital/payload-puck@^0.6.23
# or
yarn add @delmaredigital/payload-puck@^0.6.23

The patch removes the overrideAccess: true flag from the endpoint handlers, restoring PayloadCMS's standard collection-level access control enforcement for all /api/puck/* routes.

Post-Patch Steps

  1. Audit access logs — Review server access logs for unexpected requests to /api/puck/* endpoints prior to patching; look for reads, writes, or deletes not attributable to legitimate users
  2. Check for data tampering — Verify the integrity of data in PayloadCMS collections, particularly any content managed through the Puck visual editor
  3. Review exposed data — Assess what data was accessible through affected collections and evaluate notification obligations under applicable privacy regulations (GDPR, CCPA, etc.)
  4. Rotate secrets if applicable — If collections contain API keys, tokens, or other credentials, rotate them

Temporary Mitigation (Pre-Patch)

If immediate upgrade is not possible:

  • Block /api/puck/* routes at the web server/reverse proxy level for unauthenticated requests
  • Apply an authentication middleware upstream of these routes as a temporary control
  • Restrict network access to the application to trusted sources only

Detection

To check if your application is vulnerable:

# Check installed version
npm list @delmaredigital/payload-puck
 
# Check for the overrideAccess pattern in installed code (pre-patch indicator)
grep -r "overrideAccess" node_modules/@delmaredigital/payload-puck/

To detect potential exploitation in logs:

# Look for requests to /api/puck/ endpoints from unexpected IPs
# or during off-hours, without corresponding session tokens
grep "/api/puck/" access.log | grep -v "Authorization:"

References

  • NVD — CVE-2026-39397
  • npm — @delmaredigital/payload-puck
  • PayloadCMS Documentation — Local API Access Control
  • GitHub — payload-puck repository
#CVE-2026-39397#PayloadCMS#Access Control Bypass#CMS Security#NPM#Vulnerability#CVSS 9.4

Related Articles

CVE-2026-39888: PraisonAI Sandbox Escape Enables Remote Code Execution

A critical sandbox escape vulnerability in PraisonAI's multi-agent framework allows attackers to bypass the Python code execution sandbox, defeating the AST-based blocklist and restricted __builtins__ protections in execute_code() to achieve arbitrary remote code execution. Fixed in version 1.5.115.

4 min read

CVE-2026-39890: PraisonAI YAML Injection Achieves Remote Code Execution

A critical code injection vulnerability in PraisonAI's AgentService allows attackers to craft malicious YAML files using dangerous js-yaml tags such as !!js/function to execute arbitrary code when agent configuration files are parsed. Fixed in version 4.5.115.

6 min read

CVE-2021-4473: Tianxin Behavior Management System Unauthenticated Command Injection

A critical unauthenticated command injection vulnerability in the Tianxin Internet Behavior Management System's Reporter component allows attackers to execute arbitrary OS commands via a crafted objClass parameter. CVSS score: 9.8.

5 min read
Back to all Security Alerts