SentriX — AI Security Assessment
MCP assessment · depth standard · generated 2026-09-07 18:54 UTC
Target: http://127.0.0.1:8142
Scan ID: sx3b478a6b53c7 · scan duration < 1s
0/100
Grade F
14 finding(s)
Findings
Credentials detected in MCP datacriticalmcp08-secrets
Secret-like material was observed in the server's response data during scanning: AWS Access Key in get_proxy_http_history
What this is: The read tools returned data containing credential-like strings. This is the strongest evidence of the data-exposure risk: an attacker with read access obtains live credentials.
Affected tools: get_proxy_http_historyget_customer_recordlist_api_keyslist_recent_searches
secret-scan · vulnerable · confidence high
AWS Access Key in get_proxy_http_history
How to fix: 1. Rotate any real credentials found in stored data.
2. Redact sensitive fields in tool responses.
3. Review what data read tools expose and restrict them.
No authentication required to access MCP serverhighmcp01-auth
The MCP endpoint accepted a full session (initialize + tools/list) with no authentication token. Any client that can reach this endpoint can discover and invoke every exposed tool.
What this is: The MCP server does not verify who is calling it. MCP tool discovery and invocation happen before any identity check, so the entire tool surface is exposed to anyone who can reach the port.
Affected tools: get_proxy_http_history(count(integer), offset=integer)url_encode(content(str))url_decode(content(str))base64_encode(content(str))base64_decode(content(str))generate_random_string(length(integer))send_webhook(targetHost(str), targetPort(integer), https=boolean, content(str))update_user_profile(userId(str), field(str), value(str))delete_user_record(userId(str), reason=str)create_alert_rule(name(str), condition(str))get_customer_record(customerId(str))list_api_keys(workspace(str))list_recent_searches()search_documents(query(str))
session-without-token · success · confidence high
tools/list returned 14 tool(s) with no credentials
How to fix: 1. Enable authentication on the MCP server (bearer token / API key).
2. Configure SentriX (or any client) with that token.
3. Bind the server to loopback only if no token can be added.
4. Add per-tool authorization so each tool is only callable by clients entitled to use it.
Tools that can issue arbitrary network requests exposed without authhighmcp03-dangerous
The server exposes 1 tool(s) that can issue arbitrary HTTP requests from the MCP host (SSRF-class). An unauthenticated attacker who can reach this endpoint could pivot into internal networks, hit cloud metadata endpoints, or drive traffic through the host.
What this is: These tools perform network I/O for the host. Unauthenticated access to them is equivalent to an open SSRF proxy: an attacker can make the host contact internal services, cloud metadata or other machines, and issue requests with the host's network identity.
Affected tools: send_webhook(targetHost(str), targetPort(integer), https=boolean, content(str))
tool-inventory · exposed · confidence high
send_webhook(targetHost(str), targetPort(integer), https=boolean, content(str))
How to fix: 1. Put every network-request tool behind authentication and per-tool authorization.
2. If the server supports per-tool allow-lists, restrict destinations.
3. Apply egress filtering at the host firewall.
4. Log and audit all calls to these tools.
Sensitive data readable through exposed read toolshighmcp02-exposure
A read-only probe successfully retrieved data from the server without any credentials.
What this is: These tools return data stored or held by the host application — proxy history, stored items, editor buffers — which routinely contains cookies, tokens and request bodies. Unauthenticated reads expose that material.
Affected tools: get_proxy_http_history(count(integer), offset=integer)get_customer_record(customerId(str))list_api_keys(workspace(str))list_recent_searches()
get_proxy_http_history · vulnerable · confidence high
Captured entries:
1) /admin/users ticket #4021 body: <img src=x onerror=alert(1)>
{content: '<script>exfil(document.cookie)</script>'}
2) POST /v1/orders [202] Authorization: <redacted>
3) s3 acme-prod-backup dump: AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE rows:[{"ssn":"123-45-6789"}]
4) git push giurl_encode · vulnerable · confidence high
sentrix-probe
url_decode · vulnerable · confidence high
sentrix-probe
base64_encode · vulnerable · confidence high
c2VudHJpeC1wcm9iZQ==
base64_decode · vulnerable · confidence high
����,i���
generate_random_string · vulnerable · confidence high
5qgbw7tz
How to fix: 1. Apply per-tool authorization to every read tool.
2. Enforce least privilege: clients get only the tools they need.
3. Redact credentials in tool output where possible.
State-mutating tools exposedmediummcp04-state-mutation
The server exposes 3 tool(s) that change host application state (configuration, interception, execution control). Unauthorized calls can disrupt, reconfigure or disable the host application.
What this is: These tools change how the host application behaves. An attacker who can call them can turn off monitoring, change configuration, or destroy data — without touching the host directly.
Affected tools: update_user_profile(userId(str), field(str), value(str))delete_user_record(userId(str), reason=str)create_alert_rule(name(str), condition(str))
tool-inventory · exposed · confidence high
update_user_profile(userId(str), field(str), value(str)); delete_user_record(userId(str), reason=str); create_alert_rule(name(str), condition(str))
How to fix: 1. Require elevated authorization for state-mutating tools.
2. Audit and log every mutation call.
3. Prefer read-only tool designs where possible.
Prompt-injection instructions embedded in tool descriptionsmediummcp07-injection-bait
1 tool description(s) contain wording that reads like instructions to an AI agent (e.g. 'ignore previous instructions', 'exfiltrate', 'system prompt'). Such descriptions are an injection vector: if an LLM agent consumes this MCP server, the tool metadata itself becomes attacker-controlled prompt input.
What this is: MCP tool descriptions are metadata an LLM client reads when deciding how to act. Descriptions that tell an agent to 'ignore previous instructions' or 'send data via X' are prompt-injection payloads delivered through the tool inventory — the same class as malicious web content.
Affected tools: get_customer_record ((?i)system prompt)
metadata-scan · vulnerable · confidence medium
get_customer_record ((?i)system prompt)
How to fix: 1. Keep tool descriptions factual; never include instructions to the client or agent.
2. Treat tool descriptions as data, not directives.
3. Sanitize any user-controlled text before it reaches tool metadata.
MCP resources/prompts enumerablemediummcp09-enumeration
The server exposes enumerable resources and/or prompts in addition to tools. These can reveal internal URIs, data sources and workflow metadata an attacker could target.
What this is: MCP servers can expose typed resources (URIs) and reusable prompts alongside tools. Enumerating them leaks internal naming, data layout and workflow structure.
Affected tools: resources (2)prompts (2)
resources/list · exposed · confidence high
demo://internal/credentials (Internal service credentials); demo://config/secrets (Deployment secrets)
prompts/list · exposed · confidence high
company-onboarding; internal-debug
How to fix: 1. Restrict resources/prompts to authorized clients.
2. Review exposed URIs for sensitive internal data references.
Server requests client-side sampling (LLM access from server)mediummcp11-sampling
The server advertises the 'sampling' capability, meaning it can ask the client (an LLM agent) to generate content. A compromised or malicious server can abuse this to prompt-inject the client's LLM, exfiltrate conversation context, or influence the agent's actions.
What this is: MCP's sampling lets the server request model inference from the client. It flips the trust boundary: the server becomes a prompt-injection source into the agent's model context.
capabilities · advertised · confidence high
server capability 'sampling' is enabled
How to fix: 1. Disable sampling unless the application requires it.
2. If required, cap sampling requests and never auto-approve.
3. Treat sampling responses as untrusted prompt input.
Tool output contains unescaped HTML/scriptmediummcp13-output-injection
Tool outputs reflect HTML/script constructs. If an LLM agent renders tool output, this is output-injection (agent poisoning): malicious content in a data source could execute when displayed or influence the model.
What this is: Probe outputs echoed back HTML-like content. In an MCP workflow this content flows into an agent's context or UI, where it can inject markup or instructions.
Affected tools: get_proxy_http_history
get_proxy_http_history · reflects-html · confidence high
Captured entries:
1) /admin/users ticket #4021 body: <img src=x onerror=alert(1)>
{content: '<script>exfil(document.cookie)</script>'}
2) POST /v1/orders [202] Authorization: <redacted>
3) s3 acme-How to fix: 1. Escape/encode tool output before rendering.
2. Never render raw tool output in a browser context.
3. Sanitize data before it reaches tool results.
MCP endpoint allows cross-origin accessmediummcp14-cors
The MCP endpoint responds with a permissive CORS policy (Access-Control-Allow-Origin: *). A malicious web page visited by a user with a valid MCP session could drive the MCP server from the browser, invoking tools with the victim's privileges.
What this is: CORS is how a browser decides whether a web page may read cross-origin responses. A wildcard/reflective policy lets any site the victim visits call the MCP server and read tool results using the victim's session.
cors · permissive · confidence high
Access-Control-Allow-Origin: *
How to fix: 1. Restrict CORS to trusted origins.
2. Do not reflect arbitrary origins for credentialed endpoints.
3. Prefer non-browser-exposed bindings for MCP.
MCP endpoint served over plaintext HTTPmediummcp05-transport
The MCP endpoint is served over HTTP without TLS. Tool results — which may include proxy history, tokens and credentials — can be read or tampered with by anyone able to observe the connection.
What this is: Without TLS, credentials and data exchanged with the MCP server travel in cleartext and can be intercepted on any network segment between client and server.
transport · insecure · confidence high
http://127.0.0.1:8142 (no TLS)
How to fix: 1. Terminate TLS in front of the MCP server (e.g. reverse proxy or direct TLS).
2. Do not bind the server to non-loopback interfaces without TLS.
3. After enabling TLS, re-scan to confirm mcp05 clears.
Server accepts outdated MCP protocol versionslowmcp10-protocol
The server accepted an initialize handshake with the older '2024-11-05' protocol version. Old versions may lack security extensions (auth, sampling policies) present in newer drafts.
What this is: A downgrade probe: if the server accepts an old protocol version, clients can negotiate away security features that newer versions enforce.
protocol-downgrade · accepted · confidence high
initialize with protocolVersion=2024-11-05 accepted
How to fix: 1. Pin the server to the latest supported MCP protocol version.
2. Reject handshakes from clients offering older versions.
Tools accept out-of-schema argumentslowmcp12-schema-bypass
5 tool(s) accepted unknown parameters or obviously wrong-typed values instead of rejecting them. Weak input validation can allow parameter smuggling into backend handlers.
What this is: Input-validation probe: we sent an extra parameter and a non-string value. Tools that accept them suggest the server does not enforce its own schema before passing args onward.
Affected tools: get_proxy_http_historyurl_encodeurl_decodebase64_encodegenerate_random_string
get_proxy_http_history · weak-validation · confidence medium
accepted unknown param and wrong-typed value
url_encode · weak-validation · confidence medium
accepted unknown param and wrong-typed value
url_decode · weak-validation · confidence medium
accepted unknown param and wrong-typed value
base64_encode · weak-validation · confidence medium
accepted unknown param and wrong-typed value
generate_random_string · weak-validation · confidence medium
accepted unknown param and wrong-typed value
How to fix: 1. Validate tool arguments strictly against the declared schema.
2. Reject unknown parameters.
3. Never forward unvalidated arguments to backends.
No request limiting or per-tool authorization observedlowmcp06-no-ratelimit
The endpoint accepted a session and tool enumeration with no rate limiting or per-tool authorization observed. Repeated tool calls are possible without restriction.
What this is: A note, not a confirmed exploit: we observed no guardrails on how many calls a client can make or which tools a given client may use.
observation · info · confidence low
no rate-limit headers or per-tool auth observed
How to fix: 1. Enforce rate limiting on the MCP endpoint.
2. Implement per-tool authorization policies.
3. Monitor for abnormal tool-call volumes.
Tool inventory (14 tools)
data-readget_proxy_http_history(count(integer), offset=integer)
This tool reads data held by the host application. Depending on what it exposes, it can leak configuration, state or sensitive artifacts.
utilityurl_encode(content(str))
—
utilityurl_decode(content(str))
—
utilitybase64_encode(content(str))
—
utilitybase64_decode(content(str))
—
utilitygenerate_random_string(length(integer))
—
network-requestsend_webhook(targetHost(str), targetPort(integer), https=boolean, content(str))
This tool can issue arbitrary HTTP requests from the MCP host. It behaves like an SSRF primitive: whoever can call it can reach internal networks, cloud metadata endpoints (169.254
state-mutationupdate_user_profile(userId(str), field(str), value(str))
This tool updates existing data or state. Unauthorized calls can tamper with configuration or records.
state-mutationdelete_user_record(userId(str), reason=str)
This tool deletes data or state. Unauthorized calls can destroy evidence or configuration with no recovery path.
state-mutationcreate_alert_rule(name(str), condition(str))
This tool creates resources or state in the host application. Unauthorized calls can add malicious configuration or consume resources.
data-readget_customer_record(customerId(str))
This tool reads data held by the host application. Depending on what it exposes, it can leak configuration, state or sensitive artifacts.
data-readlist_api_keys(workspace(str))
This tool enumerates data held by the host application. Enumeration by an unauthenticated client can reveal internal structure, hostnames and metadata.
data-readlist_recent_searches()
This tool enumerates data held by the host application. Enumeration by an unauthenticated client can reveal internal structure, hostnames and metadata.
utilitysearch_documents(query(str))
—
Generated by YLB Security SentriX — for authorized security testing of your own systems only.