T09 · Insecure Skill Coding Practices
- Location
pipeline-mcp.yaml:24- Finding
Unauthenticated MCP Service Exposed on All Network Interfaces
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s email-triage purpose is coherent, but it exposes sensitive email and calendar/mailbox authority with weak scoping and network controls.
Review before installing. Use only with mailboxes where sending content to OpenAI is acceptable, prefer a local-only backend for sensitive email, bind the MCP server to localhost or add authentication, and avoid enabling calendar creation or archiving unless you can review changes before they are applied.
pipeline-mcp.yaml:24Unauthenticated MCP Service Exposed on All Network Interfaces
pipeline-cli.yaml:125Email Content Is Passed Directly to the CLI LLM Without Prompt-Injection Controls
pipeline-mcp.yaml:68Email Content Is Passed Directly to the MCP LLM Without Prompt-Injection Controls
The pipeline sends full email contents, including subject, sender, and body, to an external OpenAI chat completion service. Because emails commonly contain sensitive personal, business, or regulated data, forwarding them to a third party without an explicit consent notice, minimization, or redaction control creates a real confidentiality and compliance risk.
This manifest-like YAML file describes the skill as 'Process emails and automatically create calendar events' but does not specify any concrete invocation phrases, scope limits, or exclusion conditions. In a manifest or descriptive file, such broad natural-language capability statements can act as vague triggers and risk unintended activation in common email-handling contexts.
The comments create a misleading privacy assurance by stating the AI never sees authentication while omitting that full email bodies are transmitted to OpenAI for classification. This can cause users to process sensitive or regulated email content under false assumptions about data exposure, increasing privacy, compliance, and trust risks.
The pipeline sends raw email metadata and body text to an external AI service, including sender, subject, and up to 500 characters of each message body, without an explicit in-skill warning or consent mechanism. In an email-triage context this is particularly sensitive because inboxes commonly contain confidential business, legal, HR, financial, or personal data.
This manifest file includes the example trigger "Triage my inbox and find any urgent emails," which overlaps with ordinary user speech and does not define clear activation boundaries or exclusions. Because the file does not provide a constrained trigger list or negative examples, the invocation scope is ambiguous for MCP routing.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# → Routes to POST /triage
#
# # Or call directly
# curl -X POST http://localhost:8080/triage \
# -H "Content-Type: application/json" \
# -d '{"provider": "gmail", "limit": 50}'
#
The skill exposes a mailbox-modifying action via the auto_archive input, but the spec does not require an explicit confirmation or warn that enabling it will change mailbox state. In an email-triage context, misclassification or accidental enablement could archive important messages and cause loss of visibility or workflow disruption.
The create_calendar_events option enables automatic writes to the user's calendar, but the skill text does not clearly warn that events may be created without per-event review. In this context, imperfect extraction from emails or maliciously crafted meeting content could create incorrect, unwanted, or disruptive calendar entries.
No suspicious patterns detected.