LOW 3.7

CVE-2026-53607: ApostropheCMS prettyUrls SSRF Vulnerability – Network Topology Mapping Risk

ApostropheCMS contains a server-side request forgery (SSRF) vulnerability in its file-serving feature. When the 'prettyUrls' option is enabled—a legitimate SEO feature for cleaner file URLs—the system incorrectly trusts the HTTP Host header sent by clients. An attacker can exploit this to make the ApostropheCMS server fetch content from arbitrary hosts on your internal network, potentially revealing information about your network topology and any verbose error messages from internal systems. The vulnerability is present in ApostropheCMS versions 4.30.0 and earlier. While the attacker cannot directly steal file contents across different instances, they can perform network reconnaissance and potentially trigger information disclosure from misconfigured internal services.

Source data · NVD / CISA · public domain

CVSS
3.1 · 3.7 LOW · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
Weaknesses (CWE)
CWE-918
Affected products
0 configuration(s)
Published / Modified
2026-06-12 / 2026-06-17

NVD description (verbatim)

ApostropheCMS is an open-source Node.js content management system. In versions up to and including 4.30.0, when `prettyUrls: true` is enabled on `@apostrophecms/file` (a documented SEO feature for serving uploaded files at clean URLs), the public pretty-URL handler builds the upstream URL using the raw `Host` HTTP request header. That URL is then `fetch`'ed and the response body + headers are streamed straight back to the requester. Because `Host` is fully attacker-controlled, an unauthenticated remote attacker can pivot the apostrophe process to issue outbound HTTP requests against any host it can reach on the private network. The path component is constrained to `/uploads/attachments/<cuid>-<slug>.<ext>` (built from a local-DB lookup), which keeps the impact narrow: cross-instance data exfiltration is neutralized by cuid uniqueness, but blind-SSRF residuals remain (network-topology mapping via response-code / timing differences and verbose proxy/WAF 404 body disclosure). As of time of publication, no known patched versions exist.

2 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in the pretty-URL handler for the @apostrophecms/file module. When prettyUrls is enabled, the handler constructs an upstream fetch URL by directly interpolating the Host request header without validation. This attacker-controlled Host value is then used in an HTTP fetch() call, with the response streamed directly to the client. Although the path component is constrained by a database lookup to the pattern /uploads/attachments/<cuid>-<slug>.<ext>, the Host parameter remains unrestricted, allowing blind SSRF attacks. The CUID (collision-resistant unique identifier) in the path prevents cross-instance data leakage, but an attacker can still map network topology via HTTP status codes, response timing, and error message disclosure from internal proxies or WAF devices.

Business impact

The primary business risk is information disclosure about your internal network architecture and services. Attackers can enumerate internal hosts and services without direct network access, identify misconfigured internal systems that leak verbose error messages, and potentially trigger unintended actions on internal APIs that rely on Host header validation. In environments with sensitive internal services (databases, admin dashboards, cloud metadata endpoints), this becomes a stepping stone for broader compromise. Reputational impact is moderate: the vulnerability does not enable direct data theft of uploaded files, and exploitation requires the prettyUrls feature to be explicitly enabled, limiting exposure to installations that have specifically adopted this feature for SEO purposes.

Affected systems

ApostropheCMS versions 4.30.0 and earlier are affected. The vulnerability is only active when the prettyUrls option is set to true on the @apostrophecms/file module. Installations using the default configuration (prettyUrls: false) are not affected. Any ApostropheCMS instance with prettyUrls enabled and network access to internal services is at risk. No patched versions have been released as of the publication date, meaning all current deployments using this feature remain vulnerable.

Exploitability

Exploitation requires no authentication and can be launched by any unauthenticated remote attacker with network access to the ApostropheCMS instance. However, the attack complexity is rated high because the attacker must know or guess valid CUIDs and slugs for uploaded files (sourced from the local database). The practical impact is limited to information gathering rather than direct file theft, as the path constraint prevents accessing arbitrary file uploads. An attacker would craft HTTP requests with a spoofed Host header (e.g., targeting internal IP addresses) combined with a valid file path, then observe response codes and error messages to map the internal network.

Remediation

Until an official patch is released, disable the prettyUrls feature on @apostrophecms/file by setting it to false in your configuration. This immediately closes the attack vector. Alternatively, if prettyUrls is required for your use case, implement strict input validation or WAF rules that reject requests with Host headers pointing to private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, 169.254.0.0/16). Network segmentation is also recommended: ensure the ApostropheCMS process runs in a network context where it cannot reach sensitive internal systems, and restrict outbound HTTP(S) traffic to only necessary external services. Monitor the official ApostropheCMS security advisory channel for patch releases.

Patch guidance

As of the publication date, no patched versions are available. Verify the latest ApostropheCMS release notes and security advisories at the official ApostropheCMS GitHub repository and website for updates. When a patch is released, prioritize upgrading to the patched version immediately. In the interim, apply the remediation steps listed above (disable prettyUrls or implement Host header validation). Test any configuration changes in a non-production environment first to ensure file-serving functionality remains operational for your use case.

Detection guidance

Monitor HTTP request logs for suspicious Host header values that do not match your expected domain(s). Specifically, look for requests to the /uploads/attachments/ path where the Host header contains private IP addresses, localhost variants, or known internal service names. Implement alerting for repeated requests with varying or invalid Host headers to the same endpoint, which may indicate active network reconnaissance. Review proxy or WAF logs for SSRF-like patterns, including 404 responses and error disclosures from internal services. Correlation with outbound traffic logs from your ApostropheCMS server (particularly to internal IP addresses) can confirm active exploitation.

Why prioritize this

While the CVSS score is low (3.7), this vulnerability should not be dismissed. It requires explicit feature activation (prettyUrls: true), limiting the immediate attack surface, but organizations that have enabled this SEO feature are directly exposed. The attack requires no authentication and can be executed by external actors to map internal networks—a common precursor to advanced attacks. In zero-trust or highly segmented environments, impact is minimal; in flat networks with exposed internal services, risk is substantially higher. Prioritize based on whether prettyUrls is enabled in your deployment and the sensitivity of internal services reachable from your ApostropheCMS process.

Risk score, explained

The CVSS 3.1 score of 3.7 (LOW) reflects several mitigating factors: the attack requires high complexity (valid CUID/slug knowledge), results in limited confidentiality impact (network topology and error messages rather than direct data theft), requires explicit feature enablement, and does not impact availability or integrity. However, this score does not capture the contextual risk in specific deployments. Organizations with prettyUrls enabled in sensitive network environments, or those with internal services that leak verbose information, should treat this as higher priority than the base score suggests. The lack of a patch as of publication also increases relative risk during the disclosure window.

Frequently asked questions

Do I need to disable prettyUrls entirely, or are there safer alternatives?

Disabling prettyUrls is the safest immediate option. If you require clean file URLs for SEO, implement Host header validation at the application or WAF level to reject requests where the Host does not match your expected domain(s). Ensure your upstream fetch logic validates and sanitizes the Host header before use. Alternatively, use a reverse proxy (nginx, CloudFlare, etc.) in front of ApostropheCMS to normalize Host headers to your canonical domain, preventing header spoofing from reaching the vulnerable code.

If I use ApostropheCMS in a fully air-gapped internal environment, am I still at risk?

No, the SSRF risk is eliminated if ApostropheCMS cannot reach external or other internal networks. However, you should still apply the fix when patched to follow defense-in-depth principles. If you later change network topology or allow outbound connections, the vulnerability re-emerges. Additionally, even in isolated environments, this vulnerability enables local reconnaissance between services, which could be leveraged by insiders or in conjunction with other compromises.

Can I detect if this vulnerability has been exploited in my logs?

Yes. Review HTTP access logs for requests to /uploads/attachments/ paths with Host headers that do not match your legitimate domain(s). Look for requests with private IP addresses (10.x.x.x, 172.16-31.x.x, 192.168.x.x) or localhost variants in the Host header. Also check your outbound proxy/firewall logs for unexpected connections from your ApostropheCMS process to internal IP addresses. Timing anomalies (slow responses) combined with SSRF patterns may indicate active probing of your internal network.

Will upgrading to the next major version of ApostropheCMS fix this?

At the time of publication, no patched versions exist, including unreleased versions. Once a patch is available, it will likely be released as a minor or patch-level update to the 4.x series to minimize breaking changes. Subscribe to the official ApostropheCMS security advisory channel and GitHub releases to be notified immediately when a fix is available. Do not assume a major version bump is required—check the vendor advisory for the specific patched versions.

This analysis is provided for informational purposes and represents the state of knowledge as of the publication date. No patched versions were available at publication; verify against official ApostropheCMS advisories for the latest mitigation status. CVSS scores reflect base severity only and do not account for deployment-specific context; organizations should adjust prioritization based on their own network topology and risk profile. SEC.co does not provide legal advice; consult your internal security and compliance teams regarding regulatory obligations related to this vulnerability. Always test patches and configuration changes in a non-production environment before deployment. This document does not constitute a substitute for vendor guidance or professional security assessment. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).