<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-04T14:16:46.320230+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/fkie_cve-2026-53957</id>
    <title>fkie_cve-2026-53957</title>
    <updated>2026-10-04T14:16:46.350409+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>Contentful MCP Server is a Model Context Protocol server for the Contentful Management API. Prior to @contentful/mcp-server 1.7.19 and @contentful/mcp-tools 0.4.5, export_space and import_space in packages/mcp-tools/src/tools/jobs/space-to-space-migration/exportSpace.ts and packages/mcp-tools/src/tools/jobs/space-to-space-migration/importSpace.ts expose host, proxy, rawProxy, and insecure network options to LLM-controlled tool arguments and combine those options with the server's CONTENTFUL_MANAGEMENT_TOKEN. After space_to_space_migration_handler enables the migration tools, a direct MCP call or prompt injection through attacker-controlled Contentful content can redirect Contentful Management API requests and their Authorization header to an attacker-controlled host or proxy. The regular tools that use createToolClient are unaffected because those tools pin the host from server configuration. Exposure of the personal access token permits persistent out-of-band access to every Contentful space within the token's scope. This issue is fixed in @contentful/mcp-server 1.7.19 and @contentful/mcp-tools 0.4.5.</p>
      </div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/fkie_cve-2026-53957"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-2xhg-73j7-rrgx</id>
    <title>GHSA-2xhg-73j7-rrgx — Contentful MCP Server: export_space/import_space tools pass LLM-controlled `host`/`proxy` args to CMA client, redirecti…</title>
    <updated>2026-10-04T14:16:46.350568+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: @contentful/mcp-server, npm: @contentful/mcp-tools</p>
<p>### Summary</p>
<p>`export_space` and `import_space` tools in `@contentful/mcp-tools` accept LLM-controlled `host` and `proxy` parameters that are spread directly into the options object passed to `contentful-export` / `contentful-import`. These libraries pass the merged options — including the attacker-controlled `host` — to the Contentful Management API (CMA) SDK, which builds `baseURL` from `host` and attaches the server's CMA Personal Access Token as `Authorization: Bearer &lt;PAT&gt;` on every outgoing request. An attacker who can invoke MCP tools, or inject instructions into Contentful content the LLM reads, can redirect all CMA requests — and the PAT — to an attacker-controlled endpoint.</p>
<p>---</p>
<p>### Details</p>
<p>**Root cause — `exportSpace.ts` lines 126–141** (identical pattern in `importSpace.ts` lines 103–119):</p>
<p>```typescript
// packages/mcp-tools/src/tools/jobs/space-to-space-migration/exportSpace.ts</p>
<p>const clientConfig    = createClientConfig(config);  // only extracts accessToken; discards config.host
const managementToken = clientConfig.accessToken;    // server's CMA PAT</p>
<p>const exportOptions = {
  ...args,          // ← LLM-controlled tool call args: args.host enters here, unfiltered
  managementToken,  // ← server PAT injected alongside attacker-controlled host
  environmentId: args.environmentId || 'master',
  exportDir:     args.exportDir     || process.cwd(),
  contentFile:   args.contentFile   || `contentful-export-${args.spaceId}.json`,
};</p>
<p>const contentfulExport = await i…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-2xhg-73j7-rrgx"/>
  </entry>
</feed>
