VICE : un audit de sécurité web qui lit vos bundles JS et vos policies RLS
⏱️ Temps de lecture estimé : 4 minutes
📌 VICE est un CLI d’audit de sécurité web qui prend soit une URL, soit un dossier de projet, et qui remonte les vrais ennuis : clés Supabase et Stripe oubliées dans un bundle, table sans RLS, injection SQL dans une requête, avec le correctif écrit à côté. Open source, MIT.
Le reproche habituel contre les scanners de sécurité, c’est de ne voir que la porte d’entrée : un HSTS manquant, un CSP trop permissif. VICE vise la couche applicative, celle qui fabrique réellement les incidents. Il est développé par Webba Creative Technologies, sous licence MIT, et s’installe d’une seule ligne : npm install -g vice-security. Node 22.12 minimum, Chromium reste facultatif pour l’audit local mais sert au crawl navigateur complet en scan distant.
Le mode distant prend une URL et travaille de l’extérieur. Le moteur lance un navigateur headless, fait défiler la page, récupère les chunks chargés à la volée, puis analyse ce que le navigateur sert réellement au public. Les contrôles : secrets dans les bundles (Supabase, Stripe, AWS, Firebase, GitHub) et mots de passe en dur, fichiers exposés (.env, .git/config, source maps), en-têtes manquants, audit RLS table par table avec la clé anon, ports de service qualifiés par bannière, SPF/DKIM/DMARC et CNAME dangling, buckets de stockage, WebSocket, sous-domaines.
Le mode local se passe du dossier. vice audit . lit les sources et sort les secrets en dur avec leur numéro de ligne, le .env oublié dans .gitignore, les vrais secrets qui traînent dans un .env.example, et lance npm audit pour les CVE. Il dissecte ensuite les migrations Supabase à la recherche des ENABLE ROW LEVEL SECURITY manquants, des policies trop larges et des fonctions SECURITY DEFINER. Puis le classique, automatisé et sourcé : XSS (v-html, dangerouslySetInnerHTML, innerHTML), injections SQL par template literals, eval(), injection de commandes, open redirects, crypto faible, ReDoS. L’historique git, Docker et les workflows CI/CD passent dans le même lot.

Je trouve l’approche convaincante parce qu’elle colle la preuve au constat : chaque finding garde la pièce brute — la réponse HTTP, la ligne de code, la policy fautive — à côté de la remédiation, dans un format directement collable : un patch SQL pour un RLS manquant, une ligne de config pour un en-tête. C’est ce qui change la donne par rapport aux rapports que personne ne lit.
Le score suit. Chaque run sort une note sur 100 et une lettre de A à F, avec un impact par sévérité : -15 pour un critical, -8 pour un high, -3 pour un medium, -1 pour un low. vice audit . --ci --min-score 70 renvoie un code de sortie en échec sous le seuil, et le rapport HTML de scans/ se partage tel quel.
- 🔍 Crawl navigateur réel, chunks lazy-loaded inclus
- 🔑 Clés Supabase, Stripe, AWS, Firebase débusquées dans les bundles
- 🛡️ RLS audité table par table, policies et grants des migrations
- 🧪 XSS, SQLi,
eval, ReDoS avec numéro de ligne et correctif - 📊 Score sur 100, seuil CI, rapport HTML et historique
- 🤖 Action GitHub : commentaire de PR, SARIF vers Code Scanning, badge
L’action GitHub est le morceau que je mettrais en place demain. Trois permissions dans le YAML, et le workflow poste un commentaire unique mis à jour à chaque commit (score, sévérités, delta face à la base), dépose les findings en SARIF vers Code Scanning, en annotations inline sur les lignes changées de la PR, et rafraîchit un badge dans .github/vice-badge.json. Une régression qui fait tomber le score sous 70 fait échouer le build.
Deux nuances. Le module Login Audit observe les méthodes de formulaire, le CSRF, le rate limiting visible, l’énumération et les temps de réponse, mais ne soumet aucun formulaire qui change d’état : vous n’aurez donc pas de brute force massif dans le rapport. Ensuite, le CLI est gratuit et MIT, mais l’espace managé ne l’est pas : le domaine se prouve par un enregistrement DNS TXT, et les checks approfondis démarrent à 7 €/mois sur le palier Solo, 10 audits par mois.
Pour un solo qui shippe en prod, le rapport valeur/effort est difficile à battre : vice scan sur l’URL, vice audit . sur le dépôt, et vous découvrez en général au moins une chose que vous ne saviez pas.
Sources






