Retour au blog

Sécurité d'une app vibe-codée : 7 erreurs à corriger avant de publier

Code6 min de lecture · 27 septembre 2026

L'équipe GetPack

Ton application marche. Le formulaire enregistre, la page affiche, le bouton exporte. Ça ne veut pas dire qu’elle est sûre. Une IA de code répond à ce que tu lui demandes, pas à « fais en sorte que personne d’autre ne puisse lire les données des autres utilisateurs » si tu ne le précises jamais. Voici les sept erreurs qui reviennent le plus souvent dans les applications vibe-codées, avec le correctif pour chacune.

Pourquoi ça ne peut pas attendre

Fin septembre 2026, une enquête a recensé environ 16 000 bases de données Supabase laissant filtrer des données personnelles (noms, adresses, mots de passe) à cause d’applications mal configurées. Quelques mois plus tôt, un chercheur avait déjà documenté la faille CVE-2025-48757 : plus de 170 applications construites avec l’outil Lovable exposaient l’intégralité de leur base à n’importe qui, sans même se connecter, à cause d’un seul réglage manquant. Ce ne sont pas des cas isolés : ce sont des erreurs de configuration qui reviennent, parce que les mêmes outils d’IA scaffoldent les projets de la même façon.

Ces sept familles de failles sont si fréquentes qu’elles correspondent, une par une, à des catégories du Top 10 OWASP 2025, la référence mondiale des risques de sécurité web, mise à jour en 2025 avec deux nouvelles catégories (dont une consacrée directement aux dépendances logicielles).

Pourquoi un projet étudiant est autant concerné qu’une startup

Tu pourrais penser que ces sept erreurs concernent surtout des entreprises qui gèrent des milliers de clients. En réalité, un projet étudiant coche souvent toutes les cases qui l’exposent : un dépôt GitHub public pour montrer ton travail dans un portfolio, un lien partagé largement sur un Discord d’école ou un groupe de promo, une démonstration présentée pendant un hackathon. Rien de tout ça n’est un problème en soi, mais ça veut dire que ton projet peut être consulté, testé et parfois attaqué par bien plus de monde que les quelques camarades à qui tu penses au moment de le publier. Les correctifs ci-dessous ne demandent pas plus de compétences que le reste du projet : ils demandent juste de s’en occuper avant de partager le lien, pas après.

Les 7 erreurs, et leur correctif

1. Clé API secrète exposée côté navigateur. Une clé destinée à rester secrète (base de données, service payant, IA) se retrouve écrite en clair dans le code JavaScript envoyé au navigateur. N’importe qui peut l’extraire en trois clics avec les outils de développement. Correctif : une clé secrète ne doit jamais quitter ton serveur. Distingue toujours une clé publique (« anon » ou « publishable », prévue pour être visible) d’une clé secrète (« service_role » ou « secret », qui doit rester côté serveur uniquement, dans une fonction backend).

2. Fichier .env commité dans Git. Le fichier qui contient tes clés part avec le reste du code au premier git push, souvent sur un dépôt public. Le rapport 2025 de GitGuardian sur la fuite de secrets a recensé plus de 23,8 millions de nouveaux secrets exposés sur GitHub public en 2024, soit 25 % de plus que l’année précédente. Correctif : ajoute .env à ton fichier .gitignore avant le premier commit, jamais après. Si un secret a déjà été poussé, considère-le comme compromis et régénère-le : le retirer de l’historique ne suffit pas, il faut le changer.

3. Base de données sans Row Level Security (RLS). Sur Supabase (la base de données la plus utilisée par les outils de vibe-coding), la documentation officielle est sans détour : « une table dans un schéma exposé, sans RLS, est lisible et modifiable par n’importe quel rôle ayant un droit d’accès dessus. » C’est exactement la cause de la faille CVE-2025-48757 : Supabase désactive la RLS par défaut sur chaque nouvelle table, et le code généré par l’outil ne l’activait jamais. Correctif : active la RLS sur chaque table (alter table nom_table enable row level security;) et écris une politique par opération, par exemple pour qu’un utilisateur ne voie que ses propres lignes :

create policy "Chacun voit ses propres données"
on ma_table for select
to authenticated
using ( (select auth.uid()) = user_id );

4. Authentification « maison ». Réécrire soi-même la gestion des mots de passe, des sessions ou des tokens, plutôt que d’utiliser un système éprouvé. C’est la catégorie « Authentication Failures » du Top 10 OWASP 2025. Correctif : utilise le système d’authentification déjà fourni par ta plateforme (Supabase Auth ou équivalent) plutôt que d’inventer le tien. Ce n’est presque jamais plus rapide de le faire soi-même, et c’est beaucoup plus risqué.

5. Absence de validation des entrées. Faire confiance à ce qu’un formulaire ou une requête envoie, sans jamais vérifier le format, la taille ou le contenu. C’est la catégorie « Injection » du Top 10 OWASP 2025, historiquement l’une des plus exploitées. Correctif : valide et nettoie chaque entrée côté serveur (pas seulement côté navigateur, qui peut être contourné), et utilise des requêtes préparées plutôt que d’assembler du texte SQL à la main.

6. CORS grand ouvert. Une API configurée pour répondre à n’importe quel site web (Access-Control-Allow-Origin: *), ce qui permet à un site malveillant d’appeler ton API au nom d’un utilisateur connecté. C’est un exemple classique de la catégorie « Security Misconfiguration » du Top 10 OWASP 2025. Correctif : autorise explicitement une liste précise de domaines de confiance, et ne renvoie jamais l’en-tête Origin du visiteur tel quel dans ta réponse.

7. Dépendances vulnérables. Installer des paquets sans jamais vérifier s’ils contiennent des failles connues. Le Top 10 OWASP 2025 a créé une catégorie dédiée, « Software Supply Chain Failures », qui élargit l’ancienne catégorie « composants vulnérables et obsolètes » de 2021, signe que le sujet est jugé encore plus critique qu’avant. Correctif : lance npm audit (ou l’équivalent de ton langage), qui « soumet une description des dépendances de ton projet à ton registre par défaut et demande un rapport des failles connues », d’après la documentation officielle de npm. Garde un fichier de verrouillage (package-lock.json) et mets à jour régulièrement.

Une checklist avant de publier

Avant de partager le lien de ton projet, vérifie dans l’ordre :

  • Aucune clé secrète ne figure dans le code envoyé au navigateur (inspecte le code source affiché par ton navigateur, pas seulement tes fichiers).
  • .env figure dans .gitignore, et aucun secret ne traîne dans l’historique Git.
  • La RLS est activée sur chaque table de ta base, avec au moins une politique testée.
  • Tu utilises un système d’authentification existant, pas le tien.
  • Chaque formulaire et chaque route d’API valide ses entrées côté serveur.
  • Ton API n’autorise que les domaines dont tu as vraiment besoin.
  • npm audit (ou équivalent) ne remonte aucune faille critique non corrigée.
  • Aucun secret n’apparaît dans l’historique Git de ton dépôt, même dans un commit ancien que tu penses avoir « corrigé » depuis.
  • Tu as testé l’application avec un second compte pour vérifier qu’il ne voit jamais les données du premier.

À retenir

  • Une app qui « marche » à l’écran peut quand même exposer les données de tous ses utilisateurs : le test visuel ne suffit pas.
  • Les sept erreurs les plus fréquentes correspondent chacune à une catégorie reconnue du Top 10 OWASP 2025.
  • La faille la plus documentée dans les outils de vibe-coding est l’absence de Row Level Security sur Supabase : active-la systématiquement, sur chaque table.
  • Une clé secrète qui a été committée ou envoyée au navigateur doit être régénérée, pas seulement supprimée.
  • Si ton projet manipule des données personnelles réelles (même celles de camarades de classe), traite-le avec le même sérieux qu’un projet professionnel.

Pour une vérification guidée de ces sept points sur ton propre projet, la skill securite-app-vibe reprend cette checklist pas à pas.

Sources

  1. OWASP Top 10:2025 — OWASP Foundation · consulté le 27 septembre 2026
  2. Row Level Security — Supabase Docs · consulté le 27 septembre 2026
  3. The State of Secrets Sprawl 2025 — GitGuardian · consulté le 27 septembre 2026
  4. CVE-2025-48757 — Matt Palmer · consulté le 27 septembre 2026
  5. NPM Security Cheat Sheet — OWASP Cheat Sheet Series · consulté le 27 septembre 2026
  6. Some Supabase customers are publicly exposing reams of people's data to the web — TechCrunch · consulté le 27 septembre 2026
PartagerWhatsAppLinkedInXE-mail

Lire l'article suivant

Code27 septembre 2026

Slopsquatting : quand l'IA recommande des paquets qui n'existent pas

Veille27 septembre 2026

Veille IA : l'essentiel de la semaine du 21 au 27 septembre 2026

Code27 septembre 2026

Vibe-coding : ce que c'est vraiment (et comment ne pas te planter)

Actu IA27 septembre 2026

Pourquoi Yann LeCun veut AMI : l'IA au-delà des LLM

Tutoriel26 septembre 2026

Brancher un connecteur MCP dans Claude, sans écrire une ligne de code

Orientation26 septembre 2026

Choisir sa formation avec les vraies données MonMaster et InserSup

Méthode26 septembre 2026

APA 7, ISO 690, Vancouver : comment bien citer tes sources

Décryptage26 septembre 2026

Les « codes cachés » de ChatGPT vus sur TikTok : le vrai du faux

Santé26 septembre 2026

Médecine : réviser l'EDN avec la Base de données publique des médicaments

Carrière26 septembre 2026

Gratification de stage et salaire d'apprenti en 2026 : les règles

Décryptage26 septembre 2026

IA et intégrité académique : ce que disent vraiment les universités

Tutoriel26 septembre 2026

Installer une skill dans Claude en 2 minutes

Mémoire26 septembre 2026

Mémoire : construire sa problématique et son plan avec l'IA

Méthode26 septembre 2026

Faire son rétroplanning de partiels avec l'IA, sans le rater

Méthode26 septembre 2026

Réviser avec l'IA sans tricher : rappel actif, Feynman, quiz

Carrière26 septembre 2026

Choisir son alternance avec les vrais chiffres d'insertion

Code27 septembre 2026

Apprendre à coder à l'ère de l'IA : ce qu'il faut encore savoir faire soi-même

Code27 septembre 2026

Le mini cahier des charges à écrire avant de lancer une IA de code

Mémoire27 septembre 2026

Citer ChatGPT ou Claude dans un mémoire : APA, MLA, ISO 690

Code27 septembre 2026

Claude Code pour débutants : installation, premier lancement, CLAUDE.md

Actu IA27 septembre 2026

Claude Opus 5.5 : ce qui change vraiment (et comment t'en servir pour étudier)

Analyse27 septembre 2026

Course à l'IA : pourquoi certains ont peur et d'autres pas

Code27 septembre 2026

Créer son premier serveur MCP, pas à pas

Code27 septembre 2026

Déployer son premier site gratuitement : Vercel, Netlify, Cloudflare Pages ou GitHub Pages

Décryptage27 septembre 2026

Détecteurs d'IA : Compilatio, Turnitin, GPTZero sont-ils fiables ?

Code27 septembre 2026

Écrire sa propre skill Claude : structure, SKILL.md et description qui déclenche

Carrière27 septembre 2026

Le statut national d'étudiant-entrepreneur (SNEE) et les PEPITE : ce que ça apporte vraiment

Analyse27 septembre 2026

La France dans la course à l'IA : Mistral, énergie, talents

Actu IA27 septembre 2026

French Tech et IA : les startups françaises à connaître en 2026

Code27 septembre 2026

Git sans peur : comprendre commit, branche, remote, puis les commandes qui sauvent

Décryptage27 septembre 2026

IA chinoises : DeepSeek, Qwen, Kimi… pourquoi l'Europe se méfie

Santé27 septembre 2026

IA en études de médecine : réviser PASS, LAS et EDN sans se piéger

Outils27 septembre 2026

IA gratuites pour étudiants : offres et réductions en 2026

Carrière27 septembre 2026

IA en stage ou alternance : ce qui est permis, ce qui ne l'est pas

Code27 septembre 2026

Des IDE aux ADE : coder avec des agents IA en 2026

Code27 septembre 2026

Lire une erreur sans paniquer : anatomie d'une stack trace (Python et JavaScript)

Outils27 septembre 2026

Meilleures IA pour étudiants en 2026 : le comparatif honnête

Outils27 septembre 2026

Nouveaux modèles d'IA en 2026 : lequel choisir pour étudier ?

Outils27 septembre 2026

IA françaises méconnues : Noota, Moshi, Vibe (ex-Le Chat)…

Analyse27 septembre 2026

Pourquoi l'IA coûte si cher (et les IA américaines encore plus)

Code27 septembre 2026

Bien prompter une IA de code : la méthode qui change tout

Rejoins GetPack

Déjà un compte ? Se connecter