Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged editor
-
DeliveryGenerate base64 AI image with no stored URL
-
ExploitSend PATCH accept with crafted Host header
-
ExecutionServer fetches attacker-chosen origin
-
ImpactProbe internal hosts and ports
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three conditions stated in the advisory: (1) a low-privileged authenticated editor account holding image-generation capability, used to create a base64 AI image record persisted without a stored provider 'url'; (2) the deployment must use local relative storage (default uploadfs, e.g. '/uploads') AND have no configured global base URL (apos.baseUrl unset - the default), so req.baseUrl falls back to the Host header; and (3) a PATCH accept request on the ai-helper/:_id route carrying an attacker-crafted Host header, which that route processes without any authorization or ownership check. Limiting factors: the SSRF is bounded - the attacker controls target host, port, and HTTP origin but not the request path (fixed uploads path), and the flaw does NOT affect stored-provider configurations or deployments using absolute storage or a configured trusted global base URL. An editor-level account is a hard prerequisite. |
| Impact | This is a genuine but modest-severity (CVSS 4.3) authenticated SSRF (CWE-918) confirmed by the vendor GHSA-527g-ff96-x6wj advisory and fixed source commits. The CVSS vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) aligns well with the description: network-reachable, low complexity, but requiring a low-privileged authenticated editor account with image-generation capability, with only low confidentiality impact and no integrity or availability impact. No EPSS score was provided and the CVE is not in CISA KEV, indicating no evidence of active exploitation. No public exploit code was identified in the provided data, though the GHSA advisory documents the root cause and attack mechanics in detail, lowering the barrier to weaponization. The signals are internally consistent - this is not a high-CVSS-but-low-real-risk mislabel, rather a correctly rated medium/low issue whose real-world risk is constrained by the editor-account prerequisite and by the SSRF being bounded (attacker controls host/port/origin but not arbitrary path, and stored-provider/absolute-storage configs are unaffected). Priority is moderate: patch in affected deployments, but it is not an emergency relative to unauthenticated RCE-class issues. |
| Exploit ScenarioDerived | An attacker who has obtained a low-privileged editor account on an ApostropheCMS site (using the default local relative storage with no configured global base URL) generates a base64 AI image, which is persisted without a stored provider URL, then sends an unauthorized PATCH accept request carrying a crafted Host header. The server resolves the fixed uploads path against the attacker-controlled Host-derived origin and issues an outbound GET to an attacker-selected internal host and port, letting the attacker probe internal network services unreachable from their own network. No public exploit code was identified, but the vendor advisory describes the technique in detail. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
An authenticated server-side request forgery (CWE-918) exists in ApostropheCMS's @apostrophecms/ai-helper package versions 1.0.0-beta.10 through 1.0.0-beta.12, fixed in 1.0.0-beta.13. An editor holding image-generation capability can persist a base64 AI image record that has no stored provider URL, then send a PATCH accept request with an attacker-chosen Host header; because the deployment has no configured global base URL, the server derives the fetch origin from that header and issues an outbound GET to an attacker-selected host, port, and HTTP origin. Impact is bounded - the request path is fixed to the uploads directory, and stored-provider or absolute-storage configurations are unaffected - yielding a modest CVSS 4.3 (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) rating; no public exploit code or active exploitation was identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade @apostrophecms/ai-helper to 1.0.0-beta.13 or later (release tag @apostrophecms/ai-helper@1.0.0-beta.13), which corresponds to upstream commits 9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce and f84fd41cbf6c22eb8d0008fc9c25df1f7130b350; see the advisory at https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-527g-ff96-x6wj. If an immediate upgrade is not possible, configure an explicit trusted global base URL (apos.baseUrl) so req.baseUrl no longer reflects the Host header - this removes the attacker-controlled origin while leaving normal operation intact; alternatively switch AI image storage to a stored-provider or absolute-URL configuration, which the advisory confirms is not affected (trade-off: requires provider credentials or a storage reconfiguration and may need existing image records re-linked). Operators can further reduce exposure by ensuring only trusted editors hold the image-generation capability and by validating or normalizing the Host header at the reverse proxy - rejecting requests whose Host does not match the site's canonical domain - with the caveat that strict Host enforcement can break multi-domain or preview deployments. Outbound network egress from the Node.js process should be restricted to known AI provider and internal service endpoints to blunt residual SSRF reach if the upgrade is delayed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw lives in packages/ai-helper/modules/@apostrophecms/ai-helper-image/index.js inside ApostropheCMS, a Node.js content management system. The helper builds a server-side fetch target with new URL(self.uploadfs.getUrl() + '/ai-helper-images/<id>.png', req.baseUrl). Because the first operand is a relative uploadfs path (e.g. '/uploads') the resulting origin is taken entirely from req.baseUrl, which in Apostrophe's i18n module (setPrefixUrls) falls back to ${req.protocol}://${host} using the incoming Host header whenever apos.baseUrl is unset - the default. Two controls present elsewhere are missing on the accept path: the apiRoutes.patch['ai-helper/:_id'] handler performs only a findOne({ _id }) lookup with no permission or ownership check, and no allowlist or origin validation constrains the resolved URL before fetch() is called. The result is a classic CWE-918 SSRF primitive limited to the fixed uploads path - enough to probe internal hosts, ports, and HTTP origins reachable from the server but not from the attacker, and to distinguish responses, but not to retrieve arbitrary paths. The affected npm package range is >= 1.0.0-beta.10 and < 1.0.0-beta.13; CPE data also lists apostrophecms:apostrophe generically for the monorepo host.
Know when Apostrophecms gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Network-reachable PATCH route with low complexity against default config; requires a low-privileged editor account (PR:L); bounded SSRF yields low confidentiality disclosure of internal reachability, no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
ApostropheCMS is an open-source Node.js content management system. From 1.0.0-beta.10 until 1.0.0-beta.13 of the AI helper, an editor with image-generation capability can create a base64-generated image record without a stored provider URL and invoke image acceptance on a deployment using local relative storage with no trusted global base URL. The server resolves the fixed uploads path against a request-controlled Host-derived origin, enabling bounded server-side requests to an attacker-selected host, port, and HTTP origin, but not arbitrary-path retrieval or the stored-provider and absolute-storage configurations. This issue is fixed in AI helper 1.0.0-beta.13.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
More in Apostrophecms
View allIntegrity bypass in ApostropheCMS page management allows authenticated low-privileged editors to move pages into restric
Stored cross-site scripting in ApostropheCMS prior to 2.17.6 enables execution of arbitrary JavaScript in victim browser
'sanitize-html' prior to version 1.0.3 is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1), th
`sanitize-html` prior to version 2.0.0-beta is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1
Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or chang
Stored XSS in sanitize-html versions 1.9.0 through 2.17.6 allows authenticated low-privileged users to inject executable
Versions of the package sanitize-html before 2.12.1 are vulnerable to Information Exposure when used on the backend and
Apostrophe Technologies sanitize-html before 2.3.2 does not properly validate the hostnames set by the "allowedIframeHos
Apostrophe Technologies sanitize-html before 2.3.1 does not properly handle internationalized domain name (IDN) which co
Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object
Stored cross-site scripting in the @apostrophecms/seo plugin (versions ≤1.4.2) allows any user holding the default edito
Stored cross-site scripting in ApostropheCMS SEO fields permits an authenticated attacker to inject arbitrary JavaScript
EUVD-2026-105220
GHSA-527g-ff96-x6wj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB