Skip to main content
Plexara

Security

MCP Security at Plexara

MCP security research is moving fast, and the headlines are alarming. Here is each major disclosure, what it actually found, and how Plexara's managed architecture answers it.

Last reviewed August 2026

Through 2025 and 2026, security researchers published a steady stream of findings about the Model Context Protocol: systemic remote code execution in the official SDKs, OAuth token theft through hijacked client configuration, tool descriptions that hide instructions from the user, and data that quietly steers an agent into leaking other data. The coverage is real and the research is good work. It is also, almost without exception, aimed at one side of the MCP landscape.

Nearly every disclosed attack depends on the same conditions: a local developer workstation, end users installing untrusted servers on the fly, or a self-hosted framework that lets unauthenticated input reach server-launch configuration. Plexara is the other side. It is a managed service, delivered over authenticated HTTPS, with a fixed and versioned tool surface defined and deployed by our team, mapped to the OWASP MCP Top 10.

This page is a living catalog. Each entry below names a specific disclosure, links to the primary research, and states plainly whether Plexara is exposed and why. Where the honest answer is “shared responsibility,” we say so. If a new finding lands, it gets added here.

After the catalog, the control set: what the platform enforces on every request, independent of any one disclosure. That is where a reviewer will find persona-gated visibility, the tool argument boundary, how a stored file is served, and who a share link opens for.

For Plexara as a vendor, tenancy, encryption, backups, incident response, and subprocessors, see the Trust Center.

The Model

Why Plexara is Secure

Every threat in the catalog below maps back to the same six properties. Plexara sits on the managed-deployment side of the research, not the local-install or self-serve side.

01

No STDIO transport in the serving path

Plexara's MCP servers run as long-lived HTTP services. Clients connect to an authenticated HTTPS endpoint. There is no subprocess spawned per request, and the StdioServerParameters code path that recent research identifies as the root cause is not in the request path at all.

02

No user-installable MCP servers

Users of Plexara do not install, add, or configure MCP servers. The set of tools exposed to the model is defined, built, and deployed by our team, and versioned in source control. Marketplace-poisoning and typosquatting vectors rely on end users pulling untrusted servers into their environment, which is not part of this architecture.

03

Not built on the SDKs the research targets

The CVEs concentrate in the official Python and TypeScript MCP SDKs and the agent frameworks built on them. Plexara's servers are implemented in Go using libraries we control. They do not inherit the vulnerable STDIO pattern.

04

Authenticated access with scoped tokens

Every connection requires authentication tied to an identified user, over OAuth 2.1 with PKCE or an API key. Proving who you are is where access starts, not where it ends: a persona has to match the caller's roles before any surface opens, access tokens are short-lived, and persona allow and deny rules bound what a token can do. There is no public, unauthenticated surface to inject into.

05

Constrained tool surface

The MCP tools Plexara exposes are read-oriented query tools against defined, managed data sources. They do not shell out, they do not accept arbitrary commands, and the blast radius of any individual call is bounded by the underlying query engine and the authorization of the calling user.

06

Managed, sandboxed runtime with full audit

Plexara runs in Kubernetes with scoped service accounts, network policies, and resource limits. The servers have no shell execution privileges and no unscoped filesystem access, and every tool invocation is logged through platform telemetry.

Threat Catalog

The disclosures, one by one

Each card names the research, summarizes the finding, links the source, and states Plexara's exposure.

Remote code executionNot exposed

STDIO transport command execution

OX Security, April 2026

What the research found

MCP's STDIO transport launches a local server by running an operating system command, and the official SDKs run that command before confirming the server actually started. Anything that can influence the command, through UI injection, a poisoned configuration file, or a prompt-injected agent, gets silent code execution on the host. OX assigned more than ten CVEs across local IDEs and self-hosted agent frameworks. Anthropic deemed the behavior by design.

How Plexara addresses it

Plexara's MCP servers run as long-lived authenticated HTTPS services. No subprocess is spawned per request, the StdioServerParameters code path is not in the request path, and the servers are written in Go using libraries we control rather than the SDKs the research targets. The exploit primitive does not exist in this deployment model.

Indirect prompt injectionBounded: shared responsibility

Toxic flows: instructions hidden in data

Invariant Labs, May 2025

What the research found

The hardest class of attack is not a malicious tool, it is malicious data. Instructions hidden inside content the agent reads, a database row, a stored document, an API response, can steer the agent into chaining its legitimate tools to exfiltrate other data. Invariant Labs demonstrated this against the official GitHub MCP server: a poisoned public issue drove an agent into leaking private repositories. The root cause was an over-scoped token that let the agent reach data the user could not see directly.

How Plexara addresses it

This is a shared responsibility between the platform and the calling agent, and we are candid about that. Plexara bounds the blast radius where it can: every tool call is authorized server-side, per request, against a fail-closed persona, so an agent can never exceed the calling user's own access. That removes the over-scope condition behind the GitHub exfiltration. Tools are read-oriented, SQL runs read-only with row and time limits, and every call is audited. What Plexara cannot do is stop a model from being persuaded by poisoned content, so a least-privilege user identity and defense-in-depth at the agent remain essential.

Tool poisoningNot exposed in the default surface

Hidden instructions in tool descriptions

Invariant Labs, 2025

What the research found

An LLM reads a tool's description before calling it. A malicious MCP server can hide instructions in that description that tell the agent to read files or exfiltrate secrets while returning a normal-looking response. The attack depends on connecting untrusted, third-party tool descriptions into the agent.

How Plexara addresses it

Plexara's default tool surface is fixed, reviewed, and versioned by our team; there are no third-party tool descriptions in that path. Where operators add gateway connections to external MCP or REST upstreams, those connections are curated through the admin portal with encrypted credentials, persona allowlists, and audit, not pulled from a public registry at runtime. Operators decide what enters the surface.

Tool mutation and shadowingNot exposed (native), controlled (gateway)

Rug pulls and cross-server shadowing

Invariant Labs and community research, 2025-2026

What the research found

Two related tricks target the trust placed in an approved tool. In a rug pull, a server silently changes a tool definition after it was approved; MCP has no built-in re-approval when definitions change. In tool shadowing, a malicious server registers a tool whose description manipulates how the agent uses a different, trusted tool.

How Plexara addresses it

Plexara's native tool surface is fixed, reviewed, and versioned in source control, so there is nothing to rug-pull. Where operators connect third-party MCP or REST upstreams through the gateway, those connections are curated through the admin portal rather than pulled from a public registry, proxied tools are namespaced as connection__tool so they cannot shadow native tools, and every definition and call is audited. Operators decide what enters the surface and see when it changes.

AuthorizationNot exposed by default

Confused deputy and token passthrough

MCP specification security guidance, 2025

What the research found

A gateway that proxies to third-party APIs can be turned into a confused deputy. If it forwards the client's inbound token to upstreams, the token-passthrough anti-pattern the MCP specification explicitly forbids, a stolen or misdirected token lets an attacker ride the gateway's trust into systems the user never authorized. The spec also documents consent-skipping attacks against static-client-ID OAuth proxies.

How Plexara addresses it

Plexara does not forward client tokens to upstreams by default. Each gateway connection authenticates to its upstream with separate, operator-configured, encrypted credentials: bearer, API key, or OAuth 2.1 client_credentials or authorization_code. Token passthrough exists only as an explicit opt-in and is mutually exclusive with stored credentials, so the confused-deputy condition cannot arise unless an operator deliberately enables it.

Client-side token theftServer-side: limited blast radius

MCP traffic hijack via the client config

Mitiga Labs, May 2026

What the research found

A malicious npm package with a postinstall hook rewrites a developer's local ~/.claude.json so a sessionStart hook reroutes MCP server URLs through an attacker proxy, capturing OAuth bearer tokens as they pass, and reasserting itself after token rotation. This is a compromise of the developer's workstation and the client trust model, not of any MCP server. Anthropic classified it out of scope.

How Plexara addresses it

Nothing Plexara ships can be the vector: it is a Go service, not an npm package, with no install lifecycle hooks. As a destination, a token stolen from a compromised workstation is constrained by design. OAuth 2.1 with PKCE keeps access tokens short-lived, persona allow and deny rules scope what any token can do, and every tool call is audited. The persistent, broadly scoped, unlogged access the research warns about is exactly what the managed model limits. The real fix lives on the workstation: audit npm post-install hooks and watch the client config for unexpected URL changes.

Session hijackingNot exposed

Predictable or unbound session IDs

JFrog, CVE-2025-6515, 2025

What the research found

On the Streamable HTTP and SSE transports, predictable or unbound session IDs let an attacker replay a session ID to impersonate a client or inject events into their stream. Real implementations shipped this: oatpp-mcp used a memory pointer as the session ID (CVE-2025-6515), and the MCP Ruby SDK allowed SSE stream hijacking via session-ID replay (CVE-2026-33946).

How Plexara addresses it

Plexara generates 128-bit session IDs from a cryptographic random source, binds each session to a hash of the authenticating token, and revalidates that token on every request, including SSE streams. Sessions are never used as the authentication mechanism, which is exactly what the MCP specification requires. A session ID on its own is useless to an attacker.

Server-side request forgeryMitigated

SSRF via spec and metadata fetching

CVE-2026-32871 (FastMCP), 2026

What the research found

Gateways that ingest OpenAPI specs or fetch OAuth metadata by URL can be coerced into requesting internal addresses, cloud metadata endpoints (169.254.169.254), or localhost services. FastMCP's OpenAPI provider carried exactly this flaw, CVE-2026-32871, rated CVSS 10.0.

How Plexara addresses it

Plexara's spec ingestion is HTTPS-only and runs a three-layer SSRF guard: a preflight DNS check, a dial-time re-check of the resolved IP that defeats DNS rebinding, and disabled redirect following. It blocks loopback, link-local and metadata ranges, private ranges, and carrier-grade NAT.

Supply chain and marketplaceNot exposed

Typosquatted and poisoned MCP servers

OX Security, April 2026

What the research found

Several disclosed exploit families rely on end users pulling MCP servers from public registries, where a typosquatted or poisoned package can register a malicious server. The marketplace is the distribution channel for the attack.

How Plexara addresses it

Plexara users never install, add, or pull MCP servers. The set of tools is defined, built, deployed, and versioned by our team, with no user-facing marketplace and no runtime registry resolution. The distribution channel the attack needs is absent.

Framework

Mapped to the OWASP MCP Top 10

The catalog is not an arbitrary list. It tracks the recognized industry framework for MCP risk, so your security team can map our answers to a standard they already use rather than to vendor marketing.

Controls

What the platform enforces on every request

The catalog above answers published research. This is the working control set behind those answers: who can see what, what an agent is allowed to send, what a stored file is allowed to do, and what proves a change came from your own people.

Access and identity

A persona is required, never assumed

Reaching the portal requires a persona that matches the roles your identity provider issued. There is no fallback persona, so an account that maps to nothing reaches nothing, and the roles it presented are written to the log for whoever investigates.

What a persona withholds, it withholds from search

A persona's connection grants govern what a caller can see, not only what they can call. Search, connection lists, and endpoint lists return the granted connections and nothing more, and a citation cannot be followed around what search left out. When results are held back the response says so and names the persona, so "nothing matched" and "matches you are not cleared for" stay two different answers.

A half-granted capability gets reported

Some capabilities take two tools working together: one finds the answer, the other opens it. A persona granted one and not the other is flagged as unable to complete the capability, so an administrator hears about the gap instead of a team wondering why their agent could tell them an answer existed and never read it.

The Users admin screen, a directory of people known to the platform with name, email, an Active status badge, last seen date, and Edit and delete actions per row, a search box by name or email, and an Add User button
The identities the log refers to: every person known to your deployment, with when they were last seen.
The Events tab of the admin Dashboard, a searchable and filterable table of tool calls with timestamp, user, tool, toolkit, source, connection, duration, status, and enriched columns, plus Export CSV and Export JSON buttons
What those identities did: one audit row per tool call, filterable by user, tool, and status, and exportable.

The tool boundary

An argument the tool does not define is an error

A misnamed argument is refused before the tool runs, and the refusal names the property at fault. An agent therefore never reports a filtered answer it did not actually filter, and never widens a query it believed it had narrowed.

Every failure names whose fault it is

A denied permission, a malformed call, and a genuine outage come back as three different answers, each carrying a stable code, so an agent retries what is worth retrying and tells the person asking the truth about the rest. A capability that is switched off says so rather than presenting itself as downtime.

Files, links, and what they can reach

An uploaded or shared file opens as itself

A file someone uploads, saves, or shares displays as the document it is and cannot act on the platform or on the session viewing it. That holds for every stored file whatever its type, because the viewer serves all of them under a sandbox policy that admits no script rather than classifying each one and hoping the classification is complete.

A share link opens for the audience it was made for

The audience is chosen when the link is created: the named recipient, your signed-in users, or anyone holding the link. Open to anyone is a deliberate choice and never an inferred one, and the link stops opening the moment it expires or is revoked.

A permission-checked response stays with the person it was served to

Anything served after an authorization check is marked for that one browser, so no cache sitting between your users and the platform can answer the next holder of the URL with a copy of it. A refusal is not stored either, so a denial cannot later answer for the recipient the share was made for.

Portal and sign-in

A change made in the portal has to come from the portal

Every state-changing request from a signed-in browser carries proof the portal issued, and a page on another origin can neither read that proof nor forge it. A site one of your users visits elsewhere cannot make a change in Plexara on their behalf.

Sign-in holds to the current standard

Authorization codes and refresh tokens are stored hashed rather than in the clear, only the strong PKCE challenge method is accepted, signing keys carry a key identifier so they rotate without cutting off sessions signed under the previous one, sign-in and client-registration endpoints are rate limited, and an upstream identity provider's endpoints are read from its own discovery document.

Remediation

Mapping to the industry remediation checklist

The researchers and the MCP specification close their guidance with recommendations for anyone running MCP in production. Plexara already satisfies each one by design.

RecommendationHow Plexara addresses it
Block public IP access to sensitive servicesAuthenticated HTTPS only, with no public admin or configuration surfaces.
Treat external MCP configuration input as untrustedUser input never reaches process-spawning configuration, because no processes are spawned per request.
Use official MCP directories onlyThe set of available servers is defined and versioned by our team, not pulled from public registries at runtime.
Never forward client tokens to upstreamsGateway calls use separate, operator-configured upstream credentials; token passthrough is opt-in and mutually exclusive with stored credentials.
Guard server-side fetches against SSRFSpec ingestion blocks private, loopback, link-local, and metadata addresses with a dial-time recheck and no redirect following.
Bind sessions to identity, never authenticate by sessionCryptographically random session IDs are bound to the auth token and revalidated on every request, including SSE.
Run MCP-enabled services inside a sandboxKubernetes with scoped service accounts and network policies.
Keep tokens short-lived and scopedOAuth 2.1 with PKCE, short-lived access tokens, and persona allow and deny rules.
Monitor tool invocationsEvery tool call is logged through platform telemetry.
Keep versions currentRelease cadence and patch level are managed centrally.

Bottom Line

Built around the recommended posture, not the one under attack

The MCP security research is legitimate and important. It is aimed squarely at local developer tooling, self-serve installation, and client-side trust. Plexara is a managed enterprise service designed around the architectural posture that research recommends.

This page answers whether the MCP architecture itself is safe. For the questions procurement asks about Plexara as a vendor, including tenancy, encryption, backups, incident response, and subprocessors, see the Trust Center. If your security team has questions beyond either page, get in touch. We can provide a formal vendor security memo on request.

Next

Contact

Request a vendor security memo or discuss your security team's specific questions about the platform.