CVE-2026-27567 Overview
CVE-2026-27567 is a Server-Side Request Forgery (SSRF) vulnerability discovered in Payload CMS, a free and open source headless content management system built on Node.js. The vulnerability exists in Payload's external file upload functionality, where insufficient validation of HTTP redirects could allow an authenticated attacker to access internal network resources. When processing external URLs for file uploads, the application failed to properly handle redirect responses, potentially exposing internal services to unauthorized access.
Critical Impact
An authenticated user with upload collection write permissions could potentially access internal services and retrieve response content from internal resources through the application.
Affected Products
- Payload CMS versions prior to 3.75.0
- payloadcms payload (Node.js package)
- Environments with at least one collection with upload enabled and a user with create access to that collection
Discovery Timeline
- 2026-02-24 - CVE CVE-2026-27567 published to NVD
- 2026-02-26 - Last updated in NVD database
Technical Details for CVE-2026-27567
Vulnerability Analysis
This SSRF vulnerability (CWE-918) exists in Payload CMS's external file upload handling mechanism. The flaw specifically impacts the redirect handling logic in the getExternalFile.ts and safeFetch.ts modules. When an authenticated user with upload permissions submits an external URL for file upload, the application would follow HTTP redirects automatically without validating whether the redirect destination was an internal or restricted network resource.
The exploitation requires specific conditions: the Payload environment must have at least one collection with upload enabled, and the attacker must have create access to that upload-enabled collection. While this limits the attack surface to authenticated users with specific permissions, successful exploitation could allow access to internal services that should not be externally accessible, such as cloud metadata endpoints, internal APIs, or administrative interfaces.
Root Cause
The root cause lies in the automatic redirect following behavior in the external file fetch functionality. Prior to the patch, the safeFetch function would automatically follow HTTP redirects without verifying that the redirect target was a safe, external destination. This allowed attackers to craft malicious URLs that would initially point to an allowed external domain but redirect to internal network resources.
Attack Vector
An authenticated attacker with upload permissions could exploit this vulnerability by submitting a specially crafted external URL that redirects to internal network resources. The attack flow involves:
- Attacker identifies an upload-enabled collection where they have create access
- Attacker crafts a URL pointing to an external server they control
- The external server responds with an HTTP redirect (3xx) pointing to an internal resource (e.g., http://169.254.169.254/latest/meta-data/ for cloud metadata)
- The application follows the redirect and fetches the internal resource
- Response content from the internal service is returned through the application
// Security patch in packages/payload/src/uploads/safeFetch.ts
// Source: https://github.com/payloadcms/payload/commit/1041bb6
return await undiciFetch(url, {
...options,
dispatcher: safeDispatcher,
+ redirect: 'manual', // Prevent automatic redirects
})
} catch (error) {
if (error instanceof Error) {
The fix adds redirect: 'manual' to prevent automatic redirect following, requiring explicit handling and validation of redirect destinations.
Detection Methods for CVE-2026-27567
Indicators of Compromise
- Unusual external file upload requests containing URLs that redirect to internal IP ranges (e.g., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.169.254)
- File upload logs showing fetched content from cloud metadata endpoints or internal services
- Unexpected network connections from the Payload CMS server to internal infrastructure
- Upload activity from users attempting to access restricted internal resources
Detection Strategies
- Monitor file upload endpoints for external URLs that resolve to or redirect to internal IP addresses
- Implement network-level monitoring for outbound connections from the CMS server to internal network ranges
- Review application logs for external file upload failures or unusual response content
- Deploy web application firewall rules to detect SSRF patterns in upload requests
Monitoring Recommendations
- Enable verbose logging for external file upload operations in Payload CMS
- Implement egress filtering to restrict outbound connections from the CMS server
- Set up alerts for file upload requests containing suspicious URL patterns or redirect chains
- Monitor for access to cloud metadata endpoints from application servers
How to Mitigate CVE-2026-27567
Immediate Actions Required
- Upgrade Payload CMS to version 3.75.0 or later immediately
- Review access controls on upload-enabled collections and restrict create access to trusted users only
- Audit recent file upload activity for potential exploitation attempts
- Consider temporarily disabling external file uploads if upgrade cannot be performed immediately
Patch Information
PayloadCMS has released version 3.75.0 which addresses this vulnerability. The patch modifies the safeFetch.ts module to prevent automatic redirect following by setting redirect: 'manual' in the fetch options. This ensures all redirects are handled explicitly with proper validation. The security fix is documented in GitHub commit 1041bb6 and the GitHub Security Advisory GHSA-hhfx-5x8j-f5f6.
Workarounds
- Disable external file uploads entirely using the disableExternalFile upload collection option
- Restrict create access on upload-enabled collections to trusted users only
- Implement network-level controls to prevent the CMS server from accessing internal network ranges
- Deploy a web application firewall to filter SSRF attack patterns in upload requests
# Configuration example for disabling external file uploads in Payload CMS collection config
# In your collection configuration, add:
# upload: {
# disableExternalFile: true,
# }
# Network-level mitigation using iptables (example)
# Block outbound connections to internal ranges from the CMS server
iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
iptables -A OUTPUT -d 192.168.0.0/16 -j DROP
iptables -A OUTPUT -d 169.254.169.254 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

