CVE-2026-97228
LowCVSS 2.7Summary
Rapid7 Bulk Export MCP versions 0.2.5 through 0.6.1 are vulnerable to GraphQL query injection in the export-status component. The 'export_id' value is interpolated directly into the GraphQL query string, allowing an attacker to append root-level selections such as schema introspection and send them to the Rapid7 export API using the operator's API key.
Risk Assessment
The vulnerability does not grant an attacker any access they do not already have, but it can be exploited by a compromised MCP client or via indirect prompt injection, potentially leading to unauthorized data access within the operator's scope.
Recommendation
Update Rapid7 Bulk Export MCP to version 0.6.2 or later, which parameterizes 'export_id' as a GraphQL variable.
Related vulnerabilities
- CVE-2026-91107Critical
openSIS Classic 9.3 allows an authenticated user with the built-in teacher role to select an arbitrary staff record through staff_id and cause the School Information update path to reset that selected account's password.
- CVE-2026-21589Critical
An Arbitrary File Access vulnerability in Atlassian products (Bitbucket, Confluence, Crowd, Jira, Bamboo, Crucible, Fisheye) allows an unauthenticated attacker to access specific files within the web application root directory. Exploitation requires prior knowledge of the target file's exact name and path; directory enumeration is not possible. In some configurations, sensitive files may be exposed, making this highly severe.
- CVE-2026-105740Critical
Langflow before 1.9.0 allows any authenticated user to achieve Remote Code Execution (RCE) on the server by adding an MCP server with the "Stdio" transport. The user-supplied command field is passed directly to bash -c "exec {command}" with zero validation, no allowlisting, and no sandboxing. The command executes immediately when the server list is fetched. Additionally, the env field allows arbitrary environment variable injection (e.g., LD_PRELOAD, PATH override).
- CVE-2026-105697Critical
Langflow before 1.10.3 launches whatever command / args a user put in an MCP server configuration, with no allowlist and (before 1.10.3) wrapped in bash -c "exec {command} ...". Any user able to reach the MCP server settings or to build a flow with the MCP Tools component could add a "server" whose command is an arbitrary OS command. The command runs on the Langflow host as the Langflow process user as soon as Langflow tries to connect to the server. With the default LANGFLOW_AUTO_LOGIN=true, GET /api/v1/auto_login hands out a token without credentials, so on an exposed instance running the default configuration this is reachable without an account. With AUTO_LOGIN disabled, any authenticated (non-admin) user can exploit it.
- CVE-2026-105691Critical
Penpot prior to 2.18.0, the SVG exporter places an attacker-controlled text object's fill-color value into a ppmcolormask command string and executes that string through child_process.exec. A user who can edit a file can store shell metacharacters in the fill color and trigger SVG export, causing commands to execute with the exporter service's privileges. The same export can be triggered through a valid public share link to a malicious file.
- CVE-2026-97283Critical
The Advanced Post Manager plugin (from Liquid Web / StellarWP) for WordPress up to version 4.5.5 contains an untrusted data deserialization vulnerability that allows Object Injection.
- CVE-2026-105641Critical
Plane prior to 1.4.0, the deployments/aio/community/ and deployments/cli/community/ manifests provide fixed, publicly known SECRET_KEY and LIVE_SERVER_SECRET_KEY defaults that remain active when operators do not override them. Knowledge of SECRET_KEY enables attackers to forge Django-signed values and compromise accounts or sessions. Knowledge of LIVE_SERVER_SECRET_KEY bypasses live-service authentication on unchanged community deployments.
- CVE-2026-105640Critical
Plane prior to 1.4.0 trusts email addresses returned by Gitea OAuth and by self-managed GitLab OAuth deployments where email confirmation is disabled, without verifying that the provider authenticated ownership of the address. An attacker can set an OAuth identity's unverified provider email to a victim's address, which Plane matches directly to the victim's existing local account. The attacker can then log in to the victim's Plane account without knowing the victim's password. GitHub, GitLab.com, and Google are not affected because those providers return verified email addresses.
- CVE-2026-105639Critical
Plane prior to 1.4.0, the signup flow creates a logged-in User row for any submitted email without an out-of-band ownership check, while User.email is unique=True. The authenticated user can call GET /api/users/me/workspaces/invitations/, which returns each WorkspaceMemberInvite whose email matches request.user.email. WorkSpaceMemberInviteSerializer uses fields = "all", exposing the token that protects the invitation join endpoint. An unauthenticated attacker who knows a target's email can register an account using that address, enumerate pending invitations, and accept an invitation as the target, joining a workspace at the invited role.
- CVE-2026-105638Critical
Plane prior to 1.4.0, the magic-code email login uses a six-digit numeric OTP with approximately 20 bits of entropy. The verifier has no per-code failed-attempt counter, and an incorrect code does not increment a counter, invalidate the Redis entry, or lock the email address. The verifier extends django.views.View rather than DRF's APIView, so the configured AnonRateThrottle limit does not apply. The middleware stack also contains no Django-level rate limiter such as django-ratelimit, django-axes, or an IP-throttling middleware.
Original NVD description (English source)
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!`).
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

