Une injection de prompt dans un ticket d’assistance pousse l’agent Cursor à divulguer des tables privées via Supabase MCP
General Analysis a conçu une application d’assistance de démonstration sur Supabase et montré qu’un client pouvait glisser des instructions dans un ticket ; lorsque le développeur demandait à l’agent de Cursor, connecté via le serveur MCP de Supabase avec un accès service_role, de lister les tickets récents, l’agent lisait une table privée integration_tokens et en copiait le contenu dans le fil du ticket, visible du client. Le test utilisait des données fictives. Supabase a indiqué qu’aucun client n’avait signalé de fuite de données via MCP et renvoyé à des modes en lecture seule, limités au projet, qu’elle avait introduits.
Comme le rôle service_role contourne la sécurité au niveau des lignes, l’agent pouvait lire n’importe quelle table tout en traitant du texte rédigé par des clients. Simon Willison a décrit ce montage comme une « triade létale » réunie dans un seul serveur MCP.
Contesté. Supabase affirme que MCP ne contourne pas la sécurité au niveau des lignes, relevant que la démonstration s’exécutait avec un rôle à privilèges élevés, et qu’aucun client n’a signalé de fuite via MCP.
Ce qui l’aurait évité
Connecter les agents aux bases de données en lecture seule et avec un rôle étroitement délimité, jamais avec le rôle de service.
Garde-fous
- G1 Moindre privilège Défaillant L’agent se connectait avec des privilèges service_role qui contournent toute la sécurité au niveau des lignes.
- G2 Validation humaine Non évalué Une personne a-t-elle approuvé l’étape lourde de conséquences ou irréversible ?
- G3 Isolement Non évalué L’agent était-il séparé des systèmes de production et du monde extérieur ?
- G4 Intégrité des instructions Défaillant L’agent a traité comme des ordres les instructions contenues dans le texte d’un ticket soumis par un client.
- G5 Véracité Non évalué A-t-il rendu compte fidèlement de ce qu’il savait et de ce qu’il a fait ?
- G6 Limites Non évalué Un plafond limitait-il le rythme, les dépenses, le volume ou l’ampleur ?
- G7 Supervision Non évalué Une personne responsable pouvait-elle voir ce qu’il faisait et l’arrêter à temps ?
- G8 Réversibilité Non évalué Les dégâts pouvaient-ils être réparés ?
Sources
-
“In our July 2025 demonstration, instructions planted in the ticket connected those two permissions: the assistant read sensitive dummy data and copied it into a reply the customer could see.”
-
“MCP does not “bypass” our database-level protections like Row Level Security (RLS) - these remain fully enforced.”
-
“The cursor assistant operates the Supabase database with elevated access via the service_role, which bypasses all row-level security (RLS) protections.”
L’indice de confiance de 70 % provient de ces seules sources. Notre méthode
Historique
- 14 oct. 2026Ajouté au registre avec 3 sources