What Ships · Sécurité
Sécurité du codage Vibe : quelles failles présentent les sites d'IA déjà mis en ligne, et comment les détecter depuis l'extérieur.
Vous avez mis en ligne un site créé par une IA, ou vous en avez hérité, et vous voulez maintenant savoir ce qu’il expose. Cette page vous présente les incidents, l’ensemble d’en-têtes que votre site doit envoyer et l’ordre à suivre pour corriger ces problèmes. Une consultation publique vous montre ce que voient les navigateurs de vos visiteurs, sans plus. Elle ne voit ni vos règles de base de données, ni vos identifiants de connexion, ni vos données d'analyse. Et tout cela reste derrière la « porte d'entrée ».

Sur cette page 11 sections
- 00Points clés à retenir
- 01Le vibe coding est-il sûr ?
- 02Quelles erreurs de sécurité les sites créés par l'IA commettent-ils le plus souvent ?
- 03Que peut révéler l'analyse des pages publiques de votre site sur sa sécurité ?
- 04Quels en-têtes un site créé par une IA doit-il envoyer ?
- 05Comment les clés exposées, les points de terminaison ouverts et les configurations par défaut apparaissent-ils ?
- 06Que corriger en premier sur un site créé en vibe coding ?
- 07Comment vérifier gratuitement le pilier Sécurité de votre site ?
- 08Vos questions, nos réponses
- 09Analyser votre propre site
- 10À propos de l'auteur
Points clés à retenir.
- Une clé de publication Supabase dans votre code JavaScript, c'est tout à fait normal. Mais sans sécurité au niveau des lignes (Row Level Security) sur chaque table, cette clé donne à n'importe qui un accès complet.
- Commencez par remplacer toutes les clés « sb_secret_ » ou « service_role » présentes dans vos bundles. Activez ensuite le RLS. Ajoutez les en-têtes, puis vérifiez le code.
- Tenzai a constaté qu'aucune des 15 applications développées par IA ne définissait d'en-têtes de sécurité. Vérifiez dès aujourd'hui vos propres en-têtes de réponse.
- Un accès en lecture publique montre ce que reçoivent les navigateurs. Vos politiques RLS, vos identifiants de connexion et vos données d'analyse lui échappent : vérifiez-les dans votre backend.
Le vibe coding est-il sûr ??
Non, vous ne pouvez pas partir du principe que votre site créé par « Vibe » est sûr : des études montrent que le code généré par l’IA comporte régulièrement des failles exploitables. Ouvrez vos outils de développement et consultez vos en-têtes de réponse. Voyez-vous des en-têtes de sécurité ? L’étude de Tenzai a examiné 15 applications développées sur Cursor, Claude Code, Replit, Devin et OpenAI Codex : aucune n’en comportait. Pas une seule. (Oui, même celles qui semblaient abouties dans le navigateur.) Vérifiez les vôtres.
Votre modèle ne vous sauvera pas. IOActive a constaté que le niveau moyen de sécurité de l’ensemble des modèles était de 59 %, et qu’aucun ne fournissait un résultat sécurisé à 100 %. Les modèles les plus récents n’y échappent pas. Selon une étude de décembre 2025 menée par les universités Carnegie Mellon, Columbia et Johns Hopkins, les principaux modèles produisent un code fonctionnellement correct dans 61 % des cas. Seuls 10 % des résultats sont à la fois corrects et sécurisés. Le Vibe Security Radar de Georgia Tech a recensé 35 nouvelles entrées CVE directement causées par du code généré par l’IA en mars 2026, contre six en janvier. C’est une tendance, et non un simple incident ponctuel. Avant votre prochain déploiement, vérifiez vos commits. Les corrections, c’est à vous de les apporter.
Vous êtes responsable de ce que vous publiez : votre outil ne garantit pas la sécurité de votre site. Relisez votre code, testez vos pages et corrigez ce que vous trouvez, et votre site pourra tenir. Si vous acceptez votre code tel quel, personne ne l’aura relu, pas même vous. Votre relecture est le seul contrôle que subit votre code. Lancez l'évaluation gratuite sur votre URL. Lisez vos en-têtes, puis corrigez-les en priorité.
Quelles erreurs de sécurité les sites créés par l'IA commettent-ils le plus souvent ??
Trois problèmes reviennent le plus souvent : des secrets dans votre navigateur, des bases de données laissées ouvertes faute de règles d’accès, et des en-têtes de sécurité absents. Cherchez « sb_secret_ » ou « service_role » dans votre code source et vos paquets. Si vous en trouvez un, vous avez livré à chaque visiteur la clé réservée à votre backend. Escape.tech a analysé 5 600 applications codées à la va-vite, comme la vôtre, et y a relevé plus de 2 000 vulnérabilités, plus de 400 secrets exposés et 175 cas de données personnelles exposées. Si vous avez codé votre application à la va-vite, votre bundle peut présenter les mêmes risques. Vérifiez-le.
Si vous utilisez Supabase, vérifiez votre configuration. VibeAppScanner indique que Supabase était la principale source de failles critiques parmi les applications analysées, presque toujours parce que la sécurité au niveau des lignes (Row Level Security) n'était pas activée. Activez-la sur vos tables. Vous lancez une application mobile ? Vos règles passent par le même test : Barrack AI attribue un incident survenu le 15 janvier 2026 à des règles Firebase écrites ainsi : « allow read: if true », et une analyse de 196 applications iOS d’IA a relevé des erreurs de configuration de Firebase dans 98,9 % des cas. Cherchez cette ligne dans vos règles (une seule ligne, facile à manquer). Si elle y est, corrigez-la en priorité.
Testez votre procédure de connexion et vos limites. IOActive a relevé des failles d'authentification, de limitation de débit et de cryptographie dans la quasi-totalité des modèles. Tous les outils analysés dans l'étude Tenzai présentaient aussi une vulnérabilité de type « Server-Side Request Forgery » (SSRF), une faille courante dans cette catégorie : testez votre application sur ce point, quel que soit l'outil que vous avez utilisé.
Que peut révéler l'analyse des pages publiques de votre site sur sa sécurité ??
Votre « public read » montre ce que votre site transmet au navigateur de chaque visiteur : les en-têtes de réponse, le balisage, les scripts et les URL qui répondent. Ouvrez votre page d'accueil et consultez l'onglet « Réseau » : vous verrez lesquels des en-têtes répertoriés par l'OWASP votre site envoie. Votre en-tête « Server » ou « X-Powered-By » révèle-t-il la composition de votre pile logicielle ? C'est un indice gratuit pour quiconque cherche à sonder votre site, et vous l'avez donné sans rien demander en échange.
Vous pouvez aussi trouver une URL de projet Supabase et une clé dans votre code JavaScript. Ce n'est pas en soi un échec de votre build. Wiz précise que cela ne signale pas automatiquement une faille de sécurité ; le danger tient à la configuration du backend associé à votre clé. Demandez-vous à quoi votre clé donne accès. Stingrai souligne qu’une URL et une clé exposées donnent accès à l’API REST générée automatiquement ; cherchez donc ces deux éléments dans votre propre bundle. Votre clé est une sonnette. Les paramètres de votre backend décident qui entre.
Une lecture publique ne vous dit pas si la sécurité au niveau des lignes est activée, ce que contiennent vos politiques, qui peut se connecter à votre site, ce qu'enregistrent vos outils d'analyse, ni comment le code de votre serveur traite les données saisies. Vous avez repéré un élément clé ? Vérifiez les paramètres de votre base de données. C’est une suggestion, pas un verdict. De plus, l’évaluation se limite à la lecture de vos pages publiques et ne se connecte à rien : vérifiez donc vous-même vos paramètres privés.
Quels en-têtes un site créé par une IA doit-il envoyer ??
Votre site doit envoyer les en-têtes Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, Referrer-Policy et Permissions-Policy, plus un contrôle de cadrage de votre choix. Les trois politiques Cross-Origin restent facultatives. Lisez les en-têtes de réponse de votre page d’accueil et cochez chaque nom présent. Selon l’OWASP, des en-têtes de réponse appropriés aident à prévenir les attaques de type « cross-site scripting », le « clickjacking » et la divulgation d’informations sur vos pages. Chaque nom manquant laisse une faille, discrète puisque rien ne se passe lorsqu’un en-tête est absent. Tenzai a constaté qu’aucune des 15 applications développées par IA n’en comportait : si vous avez développé la vôtre à l’aide de l’IA, vérifiez-la. Ajouter un en-tête ne coûte rien. En oublier un peut coûter très cher.
Envoyez votre CSP dans un en-tête HTTP, et non dans une balise meta. Selon l'OWASP, l'en-tête s'applique à toutes les réponses et prend en charge l'ensemble des fonctionnalités, alors qu'une balise meta n'offre ni protection contre le framing, ni sandboxing, ni journalisation des violations. Ajoutez « frame-ancestors » à votre en-tête : selon MDN, il vous donne plus d'options que « X-Frame-Options ». Vous voyez encore « X-Content-Security-Policy » ou « X-WebKit-CSP » dans vos réponses ? Supprimez-les tous les deux. Ils sont obsolètes et ne vous apportent rien.
Définissez « X-Content-Type-Options » sur « nosniff » : les navigateurs de vos visiteurs respecteront alors le type de contenu (Content-Type) que vous avez déclaré, ce qu'attendent aussi les testeurs de sécurité de votre site. « Strict-Transport-Security » exige une valeur « max-age » exprimée en secondes. Vous voulez activer le préchargement ? Il faut une durée d’au moins un an et inclure les sous-domaines (includeSubDomains) ; vérifiez donc d’abord votre valeur actuelle. N’activez pas pour autant le préchargement à la légère sur votre domaine, car il est difficile à désactiver par la suite. Lisez attentivement les exigences avant de modifier votre en-tête.
Comment les clés exposées, les points de terminaison ouverts et les configurations par défaut apparaissent-ils ??
Vous repérerez ces failles dans une clé de base de données logée dans votre code JavaScript, ou dans des chemins REST de votre site qui répondent sans authentification. Il y a aussi les valeurs par défaut que vous n’avez jamais modifiées. Vérifiez le préfixe de vos clés. Votre clé « sb_publishable_ » dispose de privilèges limités : vous pouvez l’exposer sans désactiver le RLS. Votre clé « sb_secret_ » est réservée au backend et contourne le RLS. Quant à vos anciennes clés « anon » et « service_role », elles correspondent à ces deux clés.
Moltbook vous montre les risques auxquels vous vous exposez. Sa clé Supabase était stockée dans du code JavaScript côté client, sans aucune politique RLS. Dans les trois jours qui ont suivi le lancement, Wiz a découvert que des données avaient été exposées : 1,5 million de jetons d’authentification API et 35 000 adresses e-mail, sans compter des messages privés. Sans RLS, cette clé donnait à n’importe qui accès à l’intégralité de la base de données, et la vôtre ferait de même. Votre clé est peut-être visible elle aussi ; ce sont donc vos politiques qui déterminent l’ampleur des dégâts. Cherchez dans votre bundle, puis consultez vos politiques.
Vos paramètres par défaut comptent aussi, alors vérifiez-les. La documentation de Supabase indique que les tables que vous créez en mode public dans vos projets existants se voient attribuer des privilèges SELECT, INSERT, UPDATE et DELETE pour les utilisateurs anonymes, authentifiés et « service_role », et que le paramètre par défaut de la plateforme est en train de changer. Cherchez dans vos politiques l'expression « to anon using ( true ) ». Si elle y figure, tout visiteur non authentifié peut consulter votre table. C'est le principe même de cette faille.
Que corriger en premier sur un site créé en vibe coding ??
Commencez par vos secrets backend exposés, puis passez aux règles d'accès à la base de données. Viennent ensuite vos en-têtes, et enfin les failles logiques qui demandent une révision de votre code. Cherchez « sb_secret_ » et « service_role » dans vos bundles. Si l'un des deux apparaît, procédez sans attendre à la rotation de cette clé : Stingrai le recommande en cas de clé « service_role » exposée. Gardez vos clés secrètes uniquement côté backend. Une clé divulguée reste exposée tant que vous ne l’avez pas remplacée, et supprimer la ligne correspondante de votre code ne la remplace pas.
Deuxièmement, activez le RLS sur chaque table de votre schéma exposé, comme l'indique la documentation Supabase. Lisez chacune de vos politiques contenant « to anon using ( true ) » et vérifiez que vous voulez bien les rendre publiques. Troisièmement, ajoutez les en-têtes mentionnés dans la section précédente. Ils limitent les dégâts, ils ne comblent aucune faille (leur place est donc après vos données).
Enfin, relisez dans votre code l'authentification, la limitation du débit, la protection contre les attaques CSRF et la gestion des attaques de type « Server-Side Request Forgery ». IOActive a constaté que les messages d'avertissement du type « écrivez du code sécurisé » étaient souvent inefficaces, voire contre-productifs. Mieux vaut donc relire le code vous-même que redemander à votre outil de s'en charger.
Comment vérifier gratuitement le pilier Sécurité de votre site ??
Saisissez l'adresse de votre site dans l'outil d'évaluation gratuit : vous obtenez votre note sur 100 en deux minutes environ, avec des éléments justificatifs pour chacun des huit piliers, dont la sécurité. L'évaluation vous demande votre adresse e-mail professionnelle et vous envoie le lien vers le rapport une seule fois. Vous pouvez lancer trois vérifications par heure et par connexion.
La sécurité pèse 12 % de votre note, comme l'indique votre rapport. L'évaluation analyse votre page d'accueil et jusqu'à huit pages tirées au hasard, en examinant vos en-têtes de réponse, votre balisage et vos scripts ; vos éléments de sécurité correspondent donc à ce que ces pages envoient au navigateur. Comparez votre rapport avec la liste d'en-têtes ci-dessus. Vous verrez tout de suite quels noms manquent à votre site. Et ces lacunes sont vos gains les plus rapides.
Votre score global vous place dans l'une de ces tranches : 80 à 100 « bonne santé », 60 à 79 « situation difficile », 40 à 59 « à risque » et 0 à 39 « situation héritée ». L'évaluation ne se connecte pas à votre site, ne consulte pas vos statistiques, n'extrait pas vos données de performance sur le terrain et ne vous pose aucune question. Vous voulez savoir si votre base de données est accessible ? Ouvrez vos propres paramètres d'administration : la réponse se trouve là, et nulle part ailleurs.
Vos questions, nos réponses.
01Une clé Supabase dans mon JavaScript est-elle une fuite ?
Pas en soi. Wiz précise que la présence d’identifiants Supabase dans le code client ne signifie pas automatiquement une faille de sécurité, car Supabase est conçu pour fonctionner avec certaines clés exposées. Une clé « publishable » ou « anon » exige une sécurité au niveau des lignes (Row Level Security) sur chaque table. Mais une clé « secret » ou « service_role » dans votre bundle ? Là, c'est toujours une fuite.
02L'analyse peut-elle me dire si ma base de données est ouverte ?
Non. L'évaluation analyse les pages publiques : en-têtes, balisage, scripts et données structurées. Elle ne peut pas savoir si vos politiques de sécurité au niveau des lignes sont activées, puisque ce paramètre se trouve dans votre backend. Une lecture publique peut révéler la présence d'une clé dans votre code JavaScript. Elle vous dit où chercher, pas ce que vous y trouverez.
03Ajouter un prompt de sécurité rend-il le code IA sûr ?
Pas de manière fiable. IOActive a constaté que des consignes simples telles que « écrivez du code sécurisé » s’avéraient souvent inefficaces, voire contre-productives, et qu’aucun modèle ne parvenait à produire un résultat sécurisé à 100 %. L’authentification, la limitation de débit et la cryptographie ont échoué sur la quasi-totalité des modèles. Vérifiez donc le code généré, puis ce que votre site envoie au navigateur.
04Les en-têtes de sécurité ont-ils une importance si c'est ma base de données qui représente le véritable risque ?
Oui, mais ensuite. Commencez par corriger les règles de votre base de données, car la faille de sécurité de Moltbook venait de l'absence de sécurité au niveau des lignes (Row Level Security), et non de l'absence d'en-têtes. Les en-têtes aident à prévenir les attaques de type « cross-site scripting », le « clickjacking » et la divulgation d’informations. Tenzai a constaté qu’aucune des 15 applications développées par IA n’en avait défini ; ajoutez-les donc dans un second temps. C'est une assurance peu coûteuse (mais pas la première dépense à engager).
Sources
Les faits de cette page proviennent des documents ci-dessous, vérifiés le 2026-10-25. Les chiffres sur l'analyse elle-même décrivent son fonctionnement.
- Vibe Coding Security Risks: What Founders Need to Know (2026) - Modall
- Is Supabase Safe? RLS, anon vs service_role & CVE-2025-48757
- Supabase Anon Key: Is It Safe to Expose? RLS and 2026 Keys
- Hacking Moltbook: AI Social Network Reveals 1.5M API Keys | Wiz Blog
- Every AI App Data Breach Since January 2025: 20 Incidents, Same Root Causes | Barrack AI
- Vibe Coding Security: Why 62% of AI-Generated Code Is vulnerable
- What Is AI Code Security? Risks in AI-Generated Code | Superblocks
- The Security Gap in AI-Generated Code - IOActive
D'autres articles de What Ships.
Dans deux minutes
