Update dependency payload to v3.79.1 [SECURITY]#174
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
Update dependency payload to v3.79.1 [SECURITY]#174renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
845b126 to
061c471
Compare
061c471 to
79054a8
Compare
6b74809 to
60a7582
Compare
60a7582 to
7426d35
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.68.2→3.79.1payload-preferences has Cross-Collection IDOR in Access Control (Multi-Auth Environments)
CVE-2026-25574 / GHSA-jq29-r496-r955
More information
Details
Impact
A cross-collection Insecure Direct Object Reference (IDOR) vulnerability exists in the
payload-preferencesinternal collection. In multi-auth collection environments using Postgres or SQLite with default serial/auto-increment IDs, authenticated users from one auth collection can read and delete preferences belonging to users in different auth collections when their numeric IDs collide.Users are affected if ALL of these are true:
admins+customers)Not affected:
@payloadcms/db-mongodbadapteridType: 'uuid'Patches
This vulnerability has been patched in v3.74.0. Users should upgrade to v3.74.0 or later.
Workarounds
There is no workaround other than upgrading. Users with multiple auth collections using Postgres or SQLite with serial IDs should upgrade immediately.
Severity
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Payload: Server-Side Request Forgery (SSRF) in External File URL Uploads
CVE-2026-27567 / GHSA-hhfx-5x8j-f5f6
More information
Details
Impact
A Server-Side Request Forgery (SSRF) vulnerability exists in Payload's external file upload functionality. When processing external URLs for file uploads, insufficient validation of HTTP redirects could allow an authenticated attacker to access internal network resources.
Users are affected if ALL of these are true:
uploadenabledcreateaccess to that upload-enabled collectionAn authenticated user with upload collection write permissions could potentially access internal services. Response content from internal services could be retrieved through the application.
Patches
This vulnerability has been patched in v3.75.0. Users should upgrade to v3.75.0 or later.
Workarounds
If users cannot upgrade immediately, they can mitigate this vulnerability by disabling external file uploads via the
disableExternalFileupload collection option, or by restrictingcreateaccess on upload-enabled collections to trusted users only.Severity
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Payload: Pre-Authentication Account Takeover via Parameter Injection in Password Recovery
CVE-2026-34751 / GHSA-hp5w-3hxx-vmwf
More information
Details
Impact
A vulnerability in the password recovery flow could allow an unauthenticated attacker to perform actions on behalf of a user who initiates a password reset.
Users are affected if:
forgot-passwordfunctionality.Patches
Input validation and URL construction in the password recovery flow have been hardened.
Users should upgrade to v3.79.1 or later.
Workarounds
There are no complete workarounds. Upgrading to v3.79.1 is recommended.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Payload has an SQL Injection via Query Handling
CVE-2026-34747 / GHSA-7xxh-373w-35vg
More information
Details
Impact
Certain request inputs were not properly validated. An attacker could craft requests that influence SQL query execution, potentially exposing or modifying data in collections.
Patches
This issue has been fixed in v3.79.1 and later. Query input validation has been hardened.
Upgrade to v3.79.1 or later.
Workarounds
Until developers can upgrade:
Severity
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Payload has Authenticated SSRF via Upload Functionality
CVE-2026-34746 / GHSA-6r7f-q7f5-wpx8
More information
Details
Impact
An authenticated Server-Side Request Forgery (SSRF) vulnerability existed in the upload functionality.
Authenticated users with
createorupdateaccess to an upload-enabled collection could cause the server to make outbound HTTP requests to arbitrary URLs.Consumers are affected if ALL of these are true:
uploadenabledcreateorupdateaccess to that collectionPatches
This vulnerability has been patched in v3.79.1. Users should upgrade to v3.79.1 or later.
Workarounds
Until consumers can upgrade:
createandupdateaccess to upload-enabled collections to trusted roles only.Severity
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Payload has a CSRF Protection Bypass in Authentication Flow
CVE-2026-34749 / GHSA-p6mr-xf3r-ghq4
More information
Details
Impact
A Cross-Site Request Forgery (CSRF) vulnerability existed in the authentication flow. Under certain conditions, the configured CSRF protection could be bypassed, allowing cross-site requests to be made.
Consumers are affected if ALL of these are true:
serverURLis configuredPatches
This vulnerability has been patched in v3.79.1. Additional validation has been added to the authentication flow.
Consumers should upgrade to v3.79.1 or later.
Workarounds
There is no complete workaround without upgrading.
If consumers cannot upgrade immediately, setting
cookies.sameSiteto'Strict'will prevent the session cookie from being sent cross-site. However, this will also require users to re-authenticate when navigating to the application from external links (e.g. email, other sites).Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
payloadcms/payload (payload)
v3.79.1Compare Source
🐛 Bug Fixes
forceInlineBlocksproperty to use in plugin mcp (#15892) (6a9e367)sanitizeWhereQueryfor join query access result (#15891) (dc049fe)payload generate:db-schemawith circular references (#15895) (66a2efa)⚡ Performance
📚 Documentation
🧪 Tests
🏡 Chores
🤝 Contributors
v3.79.0Compare Source
🚀 Features
Separate Block Icon Configuration (richtext-lexical) — Configure different images for Lexical block icons and block drawer thumbnails independently. Previously,
imageURLserved both contexts, forcing a compromise between a good 20x20px icon and a good drawer thumbnail. The newimagesproperty supports separateiconandthumbnailvalues with automatic fallback. Fully backwards compatible —imageURLstill works but is deprecated. #15632Lexical Upgrade 0.35.0 → 0.41.0 (richtext-lexical) — Upgrades the Lexical rich text editor dependency from v0.35.0 to v0.41.0. Includes upstream fixes like
normalizeMarkdown(facebook/lexical#7812). All Lexical breaking changes are handled internally by Payload — no action required for standard usage. If you installedlexicalmanually, update it to 0.41.0 (though using the re-exported versions from@payloadcms/richtext-lexical/lexical/*is recommended). #15760Modular Dashboard Translations (translations) — Adds i18n translation support for the Modular Dashboards feature, covering all dashboard widget buttons and error messages. Previously, dashboard UI elements lacked translation keys, making them inaccessible for non-English users. Also updates the automatic translation script to use GPT-4.1 for improved cost efficiency. #15004
🐛 Bug Fixes
🛠 Refactors
📚 Documentation
🧪 Tests
🏡 Chores
rename widget ComponentPath to Component for consistency (#15780) (f7d0d04)
Widget.ComponentPathtoWidget.Componentand types it as PayloadComponentinstead ofstring`PayloadComponentPayloadComponentcontextual type detection -string-typed properties were invisible to it)ui: typo in CodeEditor export statement (#15795) (c5b2a91)
🤝 Contributors
v3.78.0Compare Source
🚀 Features
Feature Details
TypeScript Plugin for Component Paths - New
@payloadcms/typescript-pluginvalidates PayloadComponent import paths directly in your IDE. It checks that referenced files and exports exist, provides autocomplete for file paths and export names, supports go-to-definition on component path strings, and understands all Payload path conventions including absolute paths, relative paths, tsconfig aliases, and package imports. #15779screenshot.2026-02-26.at.15.55.40.mp4
{ "compilerOptions": { "plugins": [{ "name": "next" }, { "name": "@​payloadcms/typescript-plugin" }] } }Trash Out of Beta with Granular Delete Access - Trash is now a stable feature. Delete access control can now distinguish between trashing and permanently deleting — allowing you to permit users to soft-delete documents while restricting permanent deletion to admins. When
data.deletedAtis being set, the operation is a trash; otherwise it's a permanent delete. #15210Widget Fields (next, ui) - Dashboard widgets can now declare configurable fields, similar to Blocks. Widget data is editable from a new drawer UI when in dashboard editing mode. Full type generation is included —
WidgetInstance<T>is generic with typeddataandwidth, andWidgetServerPropsis generic so widget components receive typedwidgetData. #15700Screen.Recording.2026-02-23.at.16.25.40.mov
MCP Plugin Out of Beta (plugin-mcp) -
@payloadcms/plugin-mcpis now stable and ready for production use. #15711Virtual Field Filtering in MCP (plugin-mcp) - Virtual fields (
virtual: true) are now automatically stripped from MCP tool input schemas and filtered from parsed data beforecreate,update, andupdateGlobaloperations. This prevents non-stored fields from appearing as accepted MCP parameters. #15680Markdown Transformer for Upload Nodes (richtext-lexical) - Upload nodes are now properly converted when using
convertLexicalToMarkdown. Previously, upload nodes were silently dropped during markdown conversion. Now populated image uploads output, non-image uploads output link syntax, and non-populated uploads output a reference placeholder so data is never lost. #15630Dashed Button Style (ui) - Adds a new
dashedbutton style variant. Also replacesbox-shadowwithborderon all buttons and fixes icon-only button padding. #15728Editable Query Presets from Form View (ui) - Query presets can now be created and edited directly from the document form view using a full WhereBuilder, column picker, and groupBy selector — no longer requiring the list view to build queries first. #15657
Screen.Recording.2026-02-17.at.18.15.34.mov
🐛 Bug Fixes
🛠 Refactors
🎨 Styles
🧪 Tests
📝 Templates
🏡 Chores
🤝 Contributors
v3.77.0Compare Source
🚀 Features
depththrough toreq.query.depthfor consistency (#15023) (9a38469)customIDarg todb.create(#15653) (0935824)Feature Details
Local API Depth Consistency - The
depthoption passed to Local API calls likepayload.find()is now automatically set onreq.query.depth. Previously, hooks relying onreq.query.depthwould behave differently between Local API and REST/GraphQL calls unless you manually passedreq: { query: { depth: x } }in addition todepth: x. This change ensures consistent behavior across all API methods. #15023Custom ID Support in db.create (db-*) - New
customIDargument onpayload.db.createallows creating documents with a specific ID without requiring a custom ID field in your collection schema. #15653MCP Plugin Migration (plugin-mcp) - Migrates from the deprecated
@vercel/mcp-adaptertomcp-handlerand bumps@modelcontextprotocol/sdkto 1.25.2 addressing a security vulnerability. Exposes new handler options:disableSse,onEvent, andredisUrl. #15661🐛 Bug Fixes
📚 Documentation
🧪 Tests
🏡 Chores
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.