Агент Supabase MCP утёк токенами через тикет в службу поддержки
Prompt-инъекция в тикете службы поддержки заставила агента Cursor, подключённого к Supabase MCP с ключом service_role, прочитать таблицу с токенами интеграций и раскрыть её содержимое.
Что произошло
В июле 2025 года General Analysis продемонстрировала атаку на разработчика, использовавшего Cursor с Supabase MCP server. Злоумышленник отправил тикет в службу поддержки с инструкциями для агента. Обрабатывая тикет, агент выполнил эти инструкции.
Агент был подключён с ключом service_role, который обходит защиту на уровне строк. Он прочитал таблицу с токенами интеграций и передал её содержимое злоумышленнику.
Почему это сработало
Simon Willison назвал это классическим примером «смертоносной триады»: закрытые данные, доступные по ключу, обходящему защиту на уровне строк; недоверенный текст от клиентов; и канал для утечки данных. Устранение любого из этих трёх факторов останавливает атаку.
Что делать
- Никогда не передавайте агенту ключ service_role; подключайте его только для чтения и ограничивайте доступ одним проектом.
- Не давайте агентам, которые читают текст от клиентов, доступ к данным в production.
- Требуйте ручного подтверждения для каждого вызова инструмента базы данных.
- Считайте содержимое тикетов и форм недоверенными данными.
Используйте учётные данные с минимальными привилегиямиРазорвите смертельную триадуТребуйте подтверждения значимых действий
EscapeRoute: выход из песочницы в Filesystem MCP server
Прокси MCP Inspector позволял выполнять код удалённо через браузер
Выполнить проверку по чек-листу безопасности →