T09 · Insecure Skill Coding Practices
- Location
pipeline-mcp.yaml:10- Finding
Unauthenticated HTTP Service Exposed on All Network Interfaces
- Content
View full analysis
Vulnerability Details
File Location:
pipeline-mcp.yaml, lines 10–17
Vulnerability Type: Unauthenticated network service exposure
Risk Level: MediumVulnerable Code
yaml config: http: enabled: true address: "0.0.0.0:${PORT:-8080}" input: http_server: path: /convert allowed_verbs: [POST] timeout: 60sTechnical Analysis
The MCP pipeline binds its HTTP server to
0.0.0.0, exposing the/convertendpoint through every network interface available to the host. The configuration does not define authentication or authorization controls.The endpoint processes attacker-controlled CSV content in memory. Unlike the CLI pipeline, which sets
max_buffer: 10485760, no equivalent HTTP request-body limit is visible in the MCP pipeline. The 60-second timeout limits request duration but does not prevent unauthorized requests, oversized payloads, concurrent submissions, or repeated resource consumption.The documented example sends requests to
localhost, which may lead operators to expect local-only access even though the actual binding is network-wide.Attack Path
- An operator starts
pipeline-mcp.yamlwith the default configuration. - The service listens on all host interfaces on port 8080 by default.
- A network-reachable attacker discovers or directly accesses the exposed port.
- The attacker sends unauthenticated
POSTrequests to/convertcontaining attacker-controlled CSV data. - The pipeline splits the supplied content into lines and fields and constructs an in-memory JSON response.
- The attacker repeats requests or submits large inputs to consume CPU and memory, potentially degrading or denying service to legitimate users.
Impact Assessment
A remote, network-reachable attacker can invoke the conversion endpoint without authorization. No operating-system privilege escalation, command execution, credential access, or pe ...[truncated 276 chars]
- An operator starts
- Remediation
View remediation
Remediation Suggestions
- Bind to loopback by default:
yaml address: "127.0.0.1:${PORT:-8080}" - If remote access is required, place the service behind an authenticated reverse proxy or add explicit application-level authentication and authorization.
- Enforce a strict HTTP request-body size limit comparable to the CLI pipeline's 10 MiB cap, or lower based on operational requirements.
- Add per-client rate limiting, concurrency limits, and resource quotas.
- Use TLS for traffic crossing an untrusted network and restrict source addresses through firewall rules or network allowlists.
- Document that binding to
0.0.0.0creates remote exposure and should require an explicit opt-in. - Add security tests covering unauthenticated access, oversized request rejection, concurrent request limits, and non-loopback binding behavior.
- Bind to loopback by default:
