-> Back to Writeups
Security Assessment Report

AI Development Tooling Exposure: Exploitation & Detection Engineering

TLP:CLEAR
Report ID SAR-2026-06-01 Classification Simulated / Training Environment
Analyst F. Nanos Date of Report 2026-06-01
Severity Critical Report Type Offense-to-Defense Engagement
Target Environment Development environment exposing MCP inspector & Jupyter notebook tooling
This report documents a simulated engagement (Hack The Box, Season 11). Specific payloads, exact artifact values, and box-identifying details are generalized or redacted for public publication, in line with Hack The Box's active-content guidelines; the analytical structure and detection content reflect the actual engagement performed.

1. Executive Summary

A development environment exposing AI-assistant tooling infrastructure (an MCP, Model Context Protocol, inspector alongside a Jupyter notebook server) was assessed end-to-end: reconnaissance, exploitation of the exposed tooling, credential harvesting, and privilege escalation. The engagement was scoped as a two-part exercise: confirming exploitability, then producing detection content an SOC would require to identify the same activity in production. MCP is a fast-growing standard for how AI assistants invoke external tools, and its supporting infrastructure is frequently deployed with development-grade hardening, making this assessment a useful proxy for a class of exposure likely to increase as MCP adoption grows in production environments.

2. Scope & Methodology

The engagement was conducted in three phases. Surface mapping identified exposed transport modes (HTTP, SSE, or stdio) and their documented API capabilities, since stdio-based connections carry materially higher risk than HTTP-only exposure. Exploitation was performed with a defender's eye, recording the exact artifacts (process spawns, file writes, network calls) each technique would generate on a monitored system. Detection engineering then translated each confirmed technique into rule logic across three tools with distinct visibility: endpoint telemetry (Sentinel/KQL), network-layer signatures (Suricata), and protocol-level logging (Zeek), since no single vantage point covers every stage of this class of attack.

3. Technical Findings

3.1   Server-Side Request Forgery

A URL-fetching API parameter exposed by the inspector tooling permitted requests to internal-only network destinations, allowing enumeration of services not intended to be reachable from the client-facing interface.

3.2   Remote Code Execution via Transport Abuse

The stdio transport mode, intended for locally-spawned trusted processes, was reachable and abusable to achieve remote command execution, confirming the elevated risk profile of stdio-based MCP deployments relative to HTTP-only configurations.

3.3   Credential Exposure

Authentication tokens were recoverable from process arguments and environment variables of the running tooling stack, a common consequence of development-oriented configuration patterns not intended for production exposure.

3.4   WebSocket Kernel Execution Channel

The notebook server's kernel execution channel was reachable over a raw WebSocket handshake, enabling code execution outside the intended notebook interface.

4. Detection Engineering

Detection logic was authored across three telemetry sources, each targeting a different observable of the attack chain. Rule shapes below are generalized and not copied verbatim from the engagement.

Endpoint telemetry (Microsoft Sentinel, KQL): catches the local process-spawn behavior from Section 3.2

DeviceProcessEvents
| where InitiatingProcessFileName =~ "node"
| where InitiatingProcessCommandLine has_any ("inspector", "<dev-tool-marker>")
| where FileName in~ ("bash", "sh", "python3", "curl", "wget", "nc")
| project TimeGenerated, DeviceName, AccountName,
    InitiatingProcessCommandLine, FileName, ProcessCommandLine
| order by TimeGenerated desc

Network-layer signature (Suricata): catches the SSRF probing behavior from Section 3.1

alert http any any -> $HOME_NET any (
    msg:"Possible SSRF via MCP inspector fetch parameter targeting internal address space";
    flow:to_server,established;
    http.method; content:"POST";
    http.uri; content:"/fetch"; nocase;
    http.request_body; content:"url="; nocase;
    pcre:"/url=https?:\/\/(127\.|10\.|192\.168\.|169\.254\.169\.254)/i";
    classtype:attempted-recon;
    sid:9000101; rev:1;
)

Protocol-level logging (Zeek): flags the raw WebSocket kernel channel from Section 3.4

event websocket_established(c: connection, host: string, uri: string)
{
    if ( uri == "<kernel-execution-endpoint>" &&
         c$id$resp_h !in expected_notebook_clients )
    {
        NOTICE([$note=MCP_Toolkit::Unexpected_Kernel_WS_Client,
                $msg=fmt("Non-notebook client opened raw WebSocket kernel channel to %s%s", host, uri),
                $conn=c, $identifier=cat(c$id$orig_h)]);
    }
}

The underlying logic generalizes beyond this specific tool: a process that legitimately exists to orchestrate other processes (an inspector, a notebook kernel, an automation runner) spawning a shell or a raw network utility is rarely benign; an SSRF-style fetch parameter targeting RFC1918 or link-local address space is a reliable network-layer tell regardless of the application behind it; and a raw protocol handshake to an execution endpoint from a client outside the expected allow-list is a reusable heuristic across similar dev-tooling exposure scenarios.

5. MITRE ATT&CK Mapping

Technique ID Technique Tactic
T1190Exploit Public-Facing ApplicationInitial Access
T1059Command and Scripting InterpreterExecution
T1552Unsecured CredentialsCredential Access
T1071Application Layer ProtocolCommand and Control

6. Recommendations

  1. Restrict MCP inspector and similar AI-tooling infrastructure to stdio transport only where remote reachability is not explicitly required. Treat HTTP/SSE exposure as production-grade attack surface, not a development convenience.
  2. Audit process launch arguments and environment variables for credential material before deployment. Move secrets to a dedicated secrets manager rather than process-level configuration.
  3. Deploy the detection content in Section 4 across SIEM, network IDS, and protocol-logging layers, since each covers a distinct portion of this attack's observable footprint.
  4. Extend existing web-application security review processes to explicitly cover AI-tooling and notebook infrastructure, which currently falls outside most standard review scope.

7. Assessor's Notes

AI-tooling infrastructure is currently being deployed with the same casual, development-grade security posture that web frameworks exhibited roughly a decade ago, and the resulting exploitation patterns rhyme accordingly: SSRF, RCE via loosely-scoped execution APIs, and credentials leaked through process arguments. Writing detection content immediately after exploitation, while the exact artifact trail is still fresh, produced materially more accurate rules than authoring them from documentation alone would have.

END OF REPORT : SAR-2026-06-01
Full technical detail, exact payloads, and challenge-identifying information intentionally generalized for public publication. Happy to walk through the complete engagement in more depth in conversation: get in touch.