Skip to main content

@apostrophecms/ai-helper CVE-2026-113671

| EUVDEUVD-2026-105220 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-20 GitHub_M GHSA-527g-ff96-x6wj
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged editor
  2. Delivery
    Generate base64 AI image with no stored URL
  3. Exploit
    Send PATCH accept with crafted Host header
  4. Execution
    Server fetches attacker-chosen origin
  5. Impact
    Probe 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

ai-helper 1.0.0-beta.10, < 1.0.0-beta.13
Apostrophe 4.25.0, < 4.33.0

Affected Packages

npm @apostrophecms/ai-helper fix: 1.0.0-beta.13
euvd ai_helper fix: 1.0.0-beta.13
euvd apostrophe fix: 4.33.0

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

Vendor (GitHub_M) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Oct 20, 2026 - 19:03 EUVD

DescriptionCVE.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

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Low
niche open-source Node.js CMS with a beta AI add-on module
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2026-63669 MEDIUM POC
6.5 Aug 17

Integrity bypass in ApostropheCMS page management allows authenticated low-privileged editors to move pages into restric

CVE-2026-63670 MEDIUM POC
6.1 Aug 17

Stored cross-site scripting in ApostropheCMS prior to 2.17.6 enables execution of arbitrary JavaScript in victim browser

CVE-2014-125128 MEDIUM POC
6.1 Sep 08

'sanitize-html' prior to version 1.0.3 is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1), th

CVE-2019-25225 MEDIUM POC
6.1 Sep 08

`sanitize-html` prior to version 2.0.0-beta is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1

CVE-2021-25979 CRITICAL
9.8 Nov 08

Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or chang

CVE-2026-84371 MEDIUM POC
5.4 Sep 01

Stored XSS in sanitize-html versions 1.9.0 through 2.17.6 allows authenticated low-privileged users to inject executable

CVE-2024-21501 MEDIUM POC
5.3 Feb 24

Versions of the package sanitize-html before 2.12.1 are vulnerable to Information Exposure when used on the backend and

CVE-2021-26540 MEDIUM POC
5.3 Feb 08

Apostrophe Technologies sanitize-html before 2.3.2 does not properly validate the hostnames set by the "allowedIframeHos

CVE-2021-26539 MEDIUM POC
5.3 Feb 08

Apostrophe Technologies sanitize-html before 2.3.1 does not properly handle internationalized domain name (IDN) which co

CVE-2026-53609 CRITICAL
9.1 Jun 12

Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object

CVE-2026-53608 HIGH
8.7 Jun 12

Stored cross-site scripting in the @apostrophecms/seo plugin (versions ≤1.4.2) allows any user holding the default edito

CVE-2026-35569 HIGH
8.7 Apr 15

Stored cross-site scripting in ApostropheCMS SEO fields permits an authenticated attacker to inject arbitrary JavaScript

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy