Skip to main content

Rapid7 Bulk Export MCP CVE-2026-97228

| EUVDEUVD-2026-86930 LOW
Improper Neutralization of Special Elements in Data Query Logic (CWE-943)
2026-09-25 rapid7 GHSA-pwmm-7g3w-8pvp
2.7
CVSS 3.1 · Vendor: rapid7
View

Attack ChainAIDerived

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

  1. Access
    Compromise or prompt-inject upstream MCP client
  2. Delivery
    Supply crafted export_id to export tool
  3. Exploit
    Break out of export(id:"...") selection
  4. Execution
    Append root-level GraphQL selections
  5. Persist
    Query executes under operator API key
  6. Impact
    Disclose schema/introspection data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Query language parameterization
Exploitation Conditions

Requires the Rapid7 Bulk Export MCP server (versions 0.2.5 through 0.6.1) to be deployed and configured with a valid Rapid7 API key, and the attacker must be able to influence the export_id argument passed to the check_rapid7_export_status or download_rapid7_export MCP tools - realistically via a compromised/careless upstream MCP client or indirect prompt injection forwarding an unvalidated identifier. Limiting factors: all injected queries execute only within the operator's own already-authenticated API scope and cannot cross a tenant or account boundary, so a directly-malicious operator gains nothing beyond calling the API directly; impact is confined to confidentiality (e.g. schema introspection) with no integrity or availability effect. Fixed in 0.6.2, which passes export_id as a parameterized GraphQL variable.

Impact

This is a low-priority, high-nuance issue whose signals are internally consistent: the NVD CVSS of 2.7 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N) correctly reflects that exploitation runs entirely within the operator's own already-authenticated Rapid7 API scope and cannot cross a tenant or account boundary - a directly-malicious operator gains nothing they could not already do. There is no EPSS score, no CISA KEV listing, and no public exploit identified at time of analysis, so all exploitation signals point the same direction as the low base score. The one genuinely interesting risk driver is not captured cleanly by the CVSS vector: because this is an MCP tool, the realistic exposure is a compromised/careless upstream MCP client or indirect prompt injection that forwards an unvalidated export_id, meaning the practical 'attacker' may be low- or zero-privilege even though the injected query executes under the operator's high-privilege API key. Impact is confined to confidentiality (C:L, e.g. GraphQL schema introspection) with no integrity or availability effect. Bottom line: real but minor - patch during normal maintenance; not an emergency.

Exploit ScenarioDerived

An operator runs the Rapid7 Bulk Export MCP server (0.2.5-0.6.1) and an upstream LLM client is steered by indirect prompt injection to invoke check_rapid7_export_status or download_rapid7_export with a crafted export_id containing quote and brace characters. The malicious identifier terminates the intended export(id: "...") selection early and appends attacker-controlled root-level GraphQL selections (such as schema introspection), which execute under the operator's own valid API key. No public exploit code is known, and the attack yields no cross-tenant access - only information reachable within the operator's existing API scope.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 25, 2026

GraphQL query injection in Rapid7 Bulk Export MCP 0.2.5 through 0.6.1 allows an authenticated high-privileged actor who can influence the export_id argument used by the check_rapid7_export_status and download_rapid7_export tools to terminate the intended export(id: "...") selection and append attacker-controlled root-level selections such as schema introspection. The impact is confined to confidentiality (CVSS 2.7, CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N), because every injected query executes inside the operator's own already-authenticated Rapid7 API key scope and cannot cross a tenant or account boundary - a directly-malicious operator gains nothing beyond what direct API access already provides, so realistic exposure requires a compromised or careless upstream MCP client or indirect prompt injection forwarding an unvalidated identifier. There is no confirmed active exploitation (not in CISA KEV) and no public exploit identified at time of analysis; the vendor-released fix is version 0.6.2, which parameterizes export_id as a GraphQL variable.

RemediationAI

Vendor-released patch: upgrade Rapid7 Bulk Export MCP to version 0.6.2, which passes export_id as a parameterized GraphQL variable ($exportId: ID!) instead of interpolating it into the query string; the fix is delivered in the v0.6.2 release and referenced PR https://github.com/rapid7/rapid7-bulk-export-mcp/pull/47, documented at https://github.com/rapid7/rapid7-bulk-export-mcp/releases/tag/v0.6.2 (the same release also bumps anyio to 4.14.2). Because this is a low-severity, low-priority defect whose exploitation is bounded by the operator's own API scope, upgrading is the complete fix and no emergency compensating controls are required; where immediate upgrade is not possible, the practical mitigations are to constrain who and what can drive the export_id argument - restrict which upstream MCP clients may invoke check_rapid7_export_status and download_rapid7_export so that only trusted, non-compromised clients supply identifiers, and enforce an allowlist or strict identifier format (for example UUID-shaped export IDs) on export_id before it reaches the tool, accepting that such filtering is a partial substitute for the vendor's parameterized-query fix and could break legitimate non-standard identifiers. Operators deploying this MCP server should additionally treat the configured Rapid7 API key as a scoped asset, since any injected query runs with that key's privileges, and review MCP client logs for export_id values containing quote or brace characters as an indicator that an unvalidated identifier was forwarded via indirect prompt injection.

Affected VersionsENISA

platform 0 <0.6.2

Affected Packages

euvd platform fix: 0.6.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The Rapid7 Bulk Export MCP server is a Python Model Context Protocol integration whose src/export_manager.py defines get_export_status, reached through the check_rapid7_export_status and download_rapid7_export MCP tools. The flaw is CWE-943 (improper neutralization of special elements in data query logic): the tool argument export_id is unvalidated and string-interpolated directly into a GraphQL document of the form export(id: "..."), so quote and brace characters in the identifier close the string literal and the selection set early, then append an attacker-chosen root-level selection (for example an introspection query) that still arrives as one syntactically well-formed GraphQL document at the Rapid7 export API. GraphQL is a typed query language, not SQL, which is why the injection is a query-logic/data-query neutralization defect rather than classic SQL injection; the correct defense is to keep untrusted values out of the query text and bind them as declared GraphQL variables. Notably, the injected operation is transmitted under the operator's own valid API key and authorization scope, which is the reason the assessed vector is PR:H with scope Unchanged and impact limited to low confidentiality (schema introspection and similar read-only disclosure), with no integrity or availability effect and no tenant or account boundary crossing. The 0.6.2 release note ties the fix to a change that passes export_id as a parameterized GraphQL variable ($exportId: ID!) alongside an anyio dependency bump to 4.14.2; the EUVD entry maps affected platform versions as 0 <0.6.2, and the CPE string cpe:2.3:a:rapid7:platform:*:*:*:*:*:*:*:* reflects the Rapid7 platform product mapping.

Know when Graphql 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 (rapid7) PRIMARY 2.7 LOW
AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 2.7 LOW

Injection executes under the operator's own high-privilege API key (PR:H) with no scope crossing (S:U); only introspection-style disclosure (C:L), no integrity/availability impact.

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

Primary rating from Vendor (rapid7).

CVSS VectorVendor: rapid7

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

Lifecycle Timeline

1
Patch available
Sep 25, 2026 - 11:02 EUVD

DescriptionCVE.org

Rapid7 Bulk Export MCP versions 0.2.5 through 0.6.1 suffer from a GraphQL query injection issue in the export-status component (get_export_status in src/export_manager.py), whereby the export_id value - an unvalidated MCP tool argument reaching the function via the check_rapid7_export_status and download_rapid7_export tools - is interpolated directly into the GraphQL query string. A crafted export_id containing quote and brace characters can terminate the intended export(id: "...") selection early and append attacker-controlled root-level selections (for example, schema introspection), producing a single well-formed GraphQL document that is then sent to the Rapid7 export API under the operator's own API key.

Notably, this issue does not grant an existing actor any access they do not already have: every injected query executes within the operator's own already-authenticated API scope, using the operator's own valid API key, and cannot cross a tenant or account boundary. A directly-malicious operator gains nothing they could not already do by calling the API directly; the realistic exposure is limited to a compromised or careless upstream MCP client, or indirect prompt injection forwarding an unvalidated identifier. This is fixed in version 0.6.2, which passes export_id as a parameterized GraphQL variable ($exportId: ID!).

Threat Intelligence Overview

EPSS Score
0.2%
Top 86% exploitable
Prevalence
Low
niche vendor-specific MCP connector for Rapid7, small deployment footprint
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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

NoSQL injection exploits databases that don't use traditional SQL syntax-like MongoDB, CouchDB, or Redis-by manipulating queries through unsanitized user input.

CVE-2026-1168 HIGH POC
7.5 Sep 16

Unauthenticated denial of service in GitLab CE/EE (all versions from 18.4.6 before 19.1.8, 19.2 before 19.2.6, and 19.3

CVE-2026-92099 MEDIUM POC
6.5 Sep 19

Unauthenticated attackers can publish arbitrary persisted query documents and claim (squat) query aliases on WordPress s

CVE-2026-107450 MEDIUM POC
5.4 Oct 08

Stump through 0.1.10 allows any authenticated user with the shared AccessSmartList permission to overwrite, delete, or t

CVE-2023-26144 MEDIUM POC
5.3 Sep 20

Versions of the package graphql from 16.3.0 and before 16.8.1 are vulnerable to Denial of Service (DoS) due to insuffici

CVE-2026-111663 CRITICAL
9.2 Oct 16

Server-side request forgery in Chaskiq through 2.0.3 allows unauthenticated attackers to make the server fetch arbitrary

CVE-2026-104852 HIGH
8.2 Oct 05

Prototype pollution in `@graphql-tools/utils` `mergeDeep()` lets a remote, unauthenticated client submit a single aliase

CVE-2026-5423 HIGH
8.2 Aug 06

JWT authentication bypass in @neo4j/graphql allows unauthenticated remote clients to forge arbitrary JWT claims over Gra

CVE-2026-107727 LOW POC
3.7 Oct 08

Uncontrolled resource consumption in the Strawberry GraphQL library's legacy graphql-ws subscription handler (versions 0

CVE-2026-19869 HIGH
7.6 Aug 18

Authentication bypass in @neo4j/graphql exposes admin-restricted custom-resolver fields to any authenticated user holdin

CVE-2023-40180 HIGH
7.5 Oct 16

silverstripe-graphql is a package which serves Silverstripe data in GraphQL representations. Rated high severity (CVSS 7

CVE-2023-28104 HIGH
7.5 Mar 16

`silverstripe/graphql` serves Silverstripe data as GraphQL representations. Rated high severity (CVSS 7.5), this vulnera

CVE-2026-85055 HIGH
7.1 Sep 22

Field-level read permission bypass in Twenty CRM before 2.22.0 lets an authenticated workspace member or API key that is

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