{"schemaVersion":3,"id":"CVE-2026-113671","aliases":["GHSA-527g-ff96-x6wj"],"status":"published","duplicateOf":null,"title":null,"description":"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.","dates":{"published":"2026-10-20T17:43:53.227Z","modified":"2026-10-20T18:21:05.814Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":4.3,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":4.3,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":4.3,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Npm","score":4.3,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","exploitability":7.2,"impact":2.3,"computed":true}]},"epss":{"probability":0.00329,"percentile":0.24692,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-21T00:00:00.000Z","score":0.00329,"percentile":0.24692}],"last30":[{"date":"2026-10-21T00:00:00.000Z","score":0.00329,"percentile":0.24692}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-918","name":"Server-Side Request Forgery (SSRF)","description":"The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/918.html"}],"affected":[{"vendor":"@apostrophecms","product":"ai-helper","name":"ai-helper","label":"ai-helper","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 1.0.0-beta.10, < 1.0.0-beta.13","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 1.0.0-beta.10, < 1.0.0-beta.13","eol":null,"hubHref":"/vendor/apostrophecms/ai-helper"},{"vendor":"apostrophecms","product":"apostrophe","name":"apostrophe","label":"apostrophe","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 4.25.0, < 4.33.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 4.25.0, < 4.33.0","eol":null,"hubHref":"/vendor/apostrophecms/apostrophe"},{"vendor":"@apostrophecms","product":"ai-helper","name":"@apostrophecms/ai-helper","label":"ai-helper","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/@apostrophecms/ai-helper","purlType":"npm","versions":[{"text":"≥ 1.0.0-beta.10, < 1.0.0-beta.13","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 1.0.0-beta.10, < 1.0.0-beta.13","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-527g-ff96-x6wj","label":"github.com/apostrophecms/apostrophe/security/advisories/GHSA-527g-ff96-x6wj","hostname":"github.com","tags":["X Refsource CONFIRM","WEB"]},{"url":"https://github.com/apostrophecms/apostrophe/commit/9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce","label":"github.com/apostrophecms/apostrophe/commit/9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/apostrophecms/apostrophe/commit/f84fd41cbf6c22eb8d0008fc9c25df1f7130b350","label":"github.com/apostrophecms/apostrophe/commit/f84fd41cbf6c22eb8d0008fc9c25df1f7130b350","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/ai-helper@1.0.0-beta.13","label":"github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/ai-helper@1.0.0-beta.13","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/apostrophecms/apostrophe","label":"github.com/apostrophecms/apostrophe","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-20T17:43:53.227Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-20T18:21:05.814Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":17,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T22:57:12.204Z","stale":false,"partial":false}}