Hidden instructions in a support ticket make an MCP-connected assistant expose private SQL tables (Supabase MCP, 2025)
General Analysis showed that hidden instructions in a customer support ticket could make a developer's MCP-connected assistant query a private table of integration tokens.
What happened
- The assistant used service_role database privileges, which bypass row-level security, so nothing limited which tables it could read.Supabase MCP can leak your private SQL tables
- Mitigations include read-only database access, restricting the assistant's tools and manually reviewing tool calls.Supabase MCP can leak your private SQL tables
The failure pattern
Watch the pattern: Indirect prompt injection changes agent behavior
Safeguards that address it
CollectSEA's engineering analysis of what would have prevented or contained this failure.
- Give agents least-privilege, read-only database rolesDo not hand an assistant a role that bypasses row-level security; scope it to the tables the task needs.
- Keep untrusted ticket text away from privileged tool useRequire human approval when a model acting on user-submitted text tries to read sensitive tables.
Related standards
CollectSEA's mapping through this incident's failure pattern; not an official determination by the standards bodies.
- ASI01 Agent Goal Hijack
- ASI02 Tool Misuse and Exploitation
- ASI03 Identity and Privilege Abuse
- ASI06 Memory and Context Poisoning
- LLM01 Prompt Injection
- LLM02 Sensitive Information Disclosure
- LLM03 Excessive Agency
- AC-3 Access Enforcement
- AC-4 Information Flow Enforcement
- AC-5 Separation of Duties
- AC-6 Least Privilege
- SI-10 Information Input Validation
- RV.3.4 Update the development process
- MAP 5.1 Estimate impacts from past uses and public incident reports
- Goal 3 Reducing entire classes of vulnerability
- CWE-862 Missing Authorization
- CWE-1427 Improper Neutralization of Input Used for LLM Prompting
Building something similar?
Describe your design and see every precedent that applies, with safeguards you can hand to your coding agent.
Incidents with the same pattern
Prompt injection makes GitHub Copilot turn off its own confirmations and run commands (CVE-2025-53773)
Instructions planted in content the agent reads could make GitHub Copilot write "chat.tools.autoApprove": true into the project's .vscode/settings.json, which turns off all user confirmations.
Prompt injection in a README plus weak allow-list matching lets Gemini CLI silently run attacker commands (2025)
Researchers hid a prompt injection inside a README.md (in the text of a software license) so that Gemini CLI, asked only to inspect a codebase, would request shell commands.
EchoLeak: zero-click prompt injection lets a crafted email exfiltrate Microsoft 365 Copilot data (2025)
EchoLeak (CVE-2025-32711, CVSS 9.3) is a zero-click vulnerability in Microsoft 365 Copilot in which a crafted email could trigger indirect prompt injection.
Prompt injection in a public GitHub issue makes an MCP-connected agent leak private repository data (2025)
Invariant Labs showed that a malicious instruction placed in an issue on a public repository could be read by an agent connected through the GitHub MCP server.
Software component issue could allow unintended commands to run
The The Slim SEO – AI SEO Plugin, Lightweight, Fast & Automated plugin for WordPress is vulnerable to arbitrary shortcode execution in all versions up to, and including, 4.11.1 This is due to the software allowing users…
Software component issue could allow unintended commands to run
The DoubleScale | All-in-One CRM – Sales, Multi-Channel Marketing, Newsletter, Booking, Helpdesk, Automation, MCP & More plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including,…