T01 · Skill Instruction Hijacking
- Location
SKILL.md:3- Finding
Overbroad Mandatory Skill Routing to a Third-Party Database Service
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This database-querying skill is coherent and disclosed, but it needs Review because it can broadly route requests into an external MCP service that runs unpinned code with database credentials and SQL/DDL authority.
Install only if you intentionally want SyneHQ Kole connected to your databases. Use a dedicated read-only database user and a narrowly scoped SyneHQ API key, avoid production until tested, pin and review the MCP package version instead of using @latest, and require explicit confirmation before listing connections, inspecting schemas, running queries, or executing any DDL.
SKILL.md:3Overbroad Mandatory Skill Routing to a Third-Party Database Service
SKILL.md:51Automatic Execution of an Unpinned Remote MCP Package
The skill’s activation criteria are extremely broad, including 'when user asks about their data' even without mentioning databases or SQL. This can cause the agent to route many ordinary data-related requests into a powerful external database-querying skill, increasing the chance of unnecessary access to sensitive databases and unintended external handling of user data.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- "Install MCP server: npm install -g @synehq/kole-mcp"
- "Get SyneHQ account: curl https://data.synehq.com/api/auth-info"
- "Sign up at: https://data.synehq.com/signup"
- "Get API key from: https://data.synehq.com/dashboard → Settings → API Keys"
- "Configure connection at: https://data.synehq.com/dashboard → Connections"
- "Set environment variables: SYNEHQ_API_KEY and SYNEHQ_CONNECTION_ID (optional)"
- "Add MCP server to .mcp.json or claude_desktop_config.json (see documentation below)"
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- "Install MCP server: npm install -g @synehq/kole-mcp"
- "Get SyneHQ account: curl https://data.synehq.com/api/auth-info"
- "Sign up at: https://data.synehq.com/signup"
- "Get API key from: https://data.synehq.com/dashboard → Settings → API Keys"
- "Configure connection at: https://data.synehq.com/dashboard → Connections"
- "Set environment variables: SYNEHQ_API_KEY and SYNEHQ_CONNECTION_ID (optional)"
- "Add MCP server to .mcp.json or claude_desktop_config.json (see documentation below)"
The documentation tells users to create a project-local .mcp.json after exporting API credentials, which can encourage persistent storage of connection configuration in the workspace. If that file contains secrets or sensitive connection metadata and is committed, shared, or left with permissive access, it can expose long-lived access to the database platform.
export SYNEHQ_API_KEY="your_api_key" export SYNEHQ_CONNECTION_ID="your_connection_id"
The README instructs the agent to automatically use this skill for broad categories like 'data analysis' and even 'their data' without requiring explicit confirmation that database access is intended. In a skill that can drive database querying through an MCP server, this increases the chance of over-triggering on ambiguous prompts and could lead to unintended access, schema disclosure, or execution of sensitive queries against connected environments.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
requires_env:
- name: SYNEHQ_API_KEY
required: true
description: "SyneHQ API authentication key. Get from https://data.synehq.com/dashboard → Settings → API Keys"
security: "Grants access to query connected databases. Treat as sensitive credential. Do not commit to version control."
- name: SYNEHQ_CONNECTION_ID
required: false
The reference includes a customer lifetime value query that directly selects identifiable user fields such as email and name alongside purchase history and behavioral metrics. In a skill explicitly intended to query user databases and analyze their data, providing PII-returning examples without any privacy warning, minimization guidance, or masking pattern increases the likelihood that operators will expose sensitive personal data unnecessarily.
The example uses PostgreSQL text search functions with the 'english' dictionary in both vectorization and query parsing, which bakes in a specific language assumption. Because the document does not mention locale constraints or alternatives, this is a natural-language policy issue under the language/locale rule.
No suspicious patterns detected.