Résumé
- À corriger2
- À vérifier1
- Écartées avec la raison28
Gravité des 31 failles
Quoi faire en premier
-
Clé secrète Stripe dans le code : src/lib/stripe.ts:3Révoquez la clé dans le tableau de bord Stripe, puis lisez-la depuis une variable d'environnement côté serveur.
Voir le prompt
Dans src/lib/stripe.ts:3 : Clé secrète Stripe dans le code. Révoquez la clé dans le tableau de bord Stripe, puis lisez-la depuis une variable d'environnement côté serveur. Corrige seulement ces endroits, puis explique-moi le changement.
-
Table Supabase sans RLS : supabase/migrations/003_orders.sql:1Ajoutez « alter table … enable row level security; » puis des règles qui limitent chaque ligne à son propriétaire (auth.uid()).
Voir le prompt
Dans supabase/migrations/003_orders.sql:1 : Table Supabase sans RLS. Ajoutez « alter table … enable row level security; » puis des règles qui limitent chaque ligne à son propriétaire (auth.uid()). Corrige seulement ces endroits, puis explique-moi le changement.
-
RLS désactivée sur une table : supabase/migrations/003_orders.sql:2Supprimez cette ligne et activez RLS avec des règles par utilisateur.
Voir le prompt
Dans supabase/migrations/003_orders.sql:2 : RLS désactivée sur une table. Supprimez cette ligne et activez RLS avec des règles par utilisateur. Corrige seulement ces endroits, puis explique-moi le changement.
-
Faire les 2 autres mises à journext 15.2.3, path-to-regexp 0.1.10
Voir le prompt
Fais ces mises à jour une par une, en lançant les tests après chacune : - Mets à jour next de la version 15.2.2 vers 15.2.3 ou plus récente (corrige CVE-2025-29927). Lance npm install next@15.2.3 pour mettre à jour package.json et le fichier de verrouillage. Ensuite, lance les tests et vérifie que l'application démarre. - Mets à jour path-to-regexp de la version 0.1.7 vers 0.1.10 ou plus récente (corrige CVE-2024-45296). path-to-regexp est une dépendance indirecte, arrivée par express : mets d'abord à jour express vers une version qui utilise path-to-regexp 0.1.10 ou plus ; sinon ajoute path-to-regexp dans overrides de package.json, puis relance l'installation avec npm. Ensuite, lance les tests et vérifie que l'application démarre.
-
Vérifier 1 paquetaxiosVoir
Paquets
Voir le prompt
Mets à jour next de la version 15.2.2 vers 15.2.3 ou plus récente (corrige CVE-2025-29927). Lance npm install next@15.2.3 pour mettre à jour package.json et le fichier de verrouillage. Ensuite, lance les tests et vérifie que l'application démarre.
La faille connue et la raison de la décision
- CVE-2025-29927 Contournement de la protection des pages privées À corriger : Gravité critique.
Voir le prompt
Mets à jour path-to-regexp de la version 0.1.7 vers 0.1.10 ou plus récente (corrige CVE-2024-45296). path-to-regexp est une dépendance indirecte, arrivée par express : mets d'abord à jour express vers une version qui utilise path-to-regexp 0.1.10 ou plus ; sinon ajoute path-to-regexp dans overrides de package.json, puis relance l'installation avec npm. Ensuite, lance les tests et vérifie que l'application démarre.
La faille connue et la raison de la décision
- CVE-2024-45296 Une adresse piégée peut bloquer le serveur À corriger : Gravité élevée.
Comment vérifier
Lisez l'avis et regardez si votre application utilise la fonction ou l'option concernée. Si oui, mettez à jour vers 1.6.0. Si non, vous pouvez ignorer ces failles. Avis : https://osv.dev/vulnerability/GHSA-wf5p-g6vw-rhxx
La faille connue et la raison de la décision
-
CVE-2023-45857
Le jeton XSRF peut partir vers un autre site
À vérifier : Gravité moyenne, probabilité d'exploitation inconnue.
Importé dans votre code :
src/lib/http.ts:1
Écartées sans action : 28 failles dans 15 paquets
- CVE-2024-4068 Le serveur peut être bloqué ou ralentiUncontrolled resource consumption in braces Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2024-21538 Le serveur peut être bloqué ou ralentiRegular Expression Denial of Service (ReDoS) in cross-spawn Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2022-46175 Modification des objets JavaScript (prototype pollution)Prototype Pollution in JSON5 via Parse Method Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
-
CVE-2021-23337
Injection de commande par la fonction template
Écartée par vous : notre code n'appelle jamais la partie vulnérable.
Importé dans votre code :
src/lib/http.ts:2 - CVE-2026-27904 Le serveur peut être bloqué ou ralentiminimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-26996 Le serveur peut être bloqué ou ralentiminimatch has a ReDoS via repeated wildcards with non-matching literal in pattern Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-27903 Le serveur peut être bloqué ou ralentiminimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2022-3517 Le serveur peut être bloqué ou ralentiminimatch ReDoS vulnerability Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-67214 Le serveur peut être bloqué ou ralentinanoid: non-secure generators can loop indefinitely with negative size Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-67213 Le serveur peut être bloqué ou ralentinanoid: custom generators can loop indefinitely when size is zero Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-73086 Erreur de mémoire : plantage ou exécution de codenanoid: Integer Overflow or Wraparound Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-45623 Accès à des fichiers hors du dossier prévuPostCSS: Arbitrary file read and information disclosure via attacker-controlled sourceMappingURL in CSS comments Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-73646 Accès à des fichiers hors du dossier prévuPostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2024-47068 Injection de script dans les pages (XSS)DOM Clobbering Gadget found in rollup bundled scripts that leads to XSS Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-27606 Accès à des fichiers hors du dossier prévuRollup 4 has Arbitrary File Write via Path Traversal Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2022-25858 Le serveur peut être bloqué ou ralentiTerser insecure use of regular expressions leads to ReDoS Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-76844 Accès à des fichiers hors du dossier prévuwebpack-dev-middleware vulnerable to Path Traversal via non-slash-terminated publicPath Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2024-29180 Accès à des fichiers hors du dossier prévuPath traversal in webpack-dev-middleware Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- GHSA-67mh-4wv8-2f99 esbuild enables any website to send any requests to the development server and read the response Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2024-4067 Le serveur peut être bloqué ou ralentiRegular Expression Denial of Service (ReDoS) in micromatch Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-118764 Le serveur peut être bloqué ou ralentiminimatch has potential denial of service via globparts amplification Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2024-55565 Le serveur peut être bloqué ou ralentiPredictable results in nanoid generation when given non-integer values Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2023-44270 PostCSS line return parsing error Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-69153 Accès à des fichiers hors du dossier prévuPostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled sourceMappingURL reads arbitrary .map files when `from` is unset Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2026-41305 Injection de script dans les pages (XSS)PostCSS has XSS via Unescaped </style> in its CSS Stringify Output Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2023-26136 Modification des objets JavaScript (prototype pollution)tough-cookie Prototype Pollution vulnerability Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2023-26115 Le serveur peut être bloqué ou ralentiword-wrap vulnerable to Regular Expression Denial of Service Écartée : Paquet utilisé seulement pour le développement, il n'est pas livré avec votre application.
- CVE-2024-47764 Caractères non filtrés dans le nom du cookie Écartée : Gravité faible.
Hygiène
Ce que Tamiso a vérifié autour des paquets et du code, et ce qu'il manque pour durcir le projet.
-
Paquets introuvables ou publiés il y a moins de 30 joursstripe-checkout-helper-ts : vérifiez qu'il s'agit bien des paquets voulus.
-
Aucun nom proche d'un paquet connuPas de faute de frappe qui imite un paquet très utilisé.
-
Aucune version retirée par ses auteursAucune version marquée « deprecated » ou « yanked ».
-
Toutes les versions sont préciséesChaque paquet a une version exacte.
-
Versions verrouilléesLe fichier de verrouillage fixe la version exacte de chaque paquet, avec son empreinte.
-
Pas de mises à jour automatiquesAjoutez .github/dependabot.yml : GitHub proposera chaque semaine les mises à jour de sécurité.
version: 2 updates: - package-ecosystem: "npm" directory: "/" schedule: interval: "weekly" -
Aucun fichier .env dans le code envoyéLes mots de passe et clés du .env ne voyagent pas avec le code.
-
1 secret écrit dans le codesrc/lib/stripe.ts:3 : voir l'onglet Code.
-
Pas de mode debug activé dans le codeLes erreurs n'affichent pas le code ni les variables aux visiteurs.
Paquets introuvables
Ils n'existent pas sur npm. Souvent un nom inventé par une IA : quelqu'un peut le publier plus tard avec du code malveillant. Sauf s'il vient d'un registre privé, retirez-le.
Si c'est un paquet interne de votre registre privé, le risque reste réel (dependency confusion) : réservez aussi ce nom, ou le scope @…, sur le registre public, et configurez le registre privé explicitement (.npmrc, --index-url) pour que l'installation ne cherche jamais ailleurs.
stripe-checkout-helper-ts
Comment Tamiso décide
Une faille passe « à corriger » si elle est exploitée activement (catalogue CISA KEV, version makiety), si sa probabilité d'exploitation EPSS dépasse 10 %, si sa gravité est critique, ou élevée avec une probabilité d'exploitation d'au moins 1 %. Elle est écartée si sa gravité est faible, ou moyenne avec une probabilité d'exploitation inférieure à 1 %, ou si le paquet ne sert qu'au développement. Le reste est « à vérifier ». Une seule mise à jour corrige souvent plusieurs failles : elles sont donc regroupées par paquet. Votre décision passe toujours avant la règle. Exception : une faille critique ou très probablement exploitée dans un paquet de développement reste « à vérifier », car ce paquet tourne sur vos machines et en CI.
Un paquet connu comme malveillant (base OpenSSF des paquets malveillants) est toujours « à corriger », même s'il ne sert qu'au développement : il agit dès son installation. Ce projet a aussi une analyse du code (01/11/2026) : une faille dans un paquet direct que le code n'importe jamais et dont aucun autre paquet n'a besoin (d'après le fichier de verrouillage) descend d'un niveau, et si l'analyse par l'IA a montré que le code n'utilise pas la partie vulnérable, la faille est écartée avec cette raison. Les failles exploitées activement ne sont jamais écartées ainsi.
Vos décisions suivent les statuts de la norme OpenVEX (« non concerné » avec sa justification, ou « concerné »). L'export OpenVEX les donne dans un fichier JSON au format standard (le même que lisent vexctl, Trivy ou Grype) : à joindre à votre SBOM pour vos clients et auditeurs. Les failles sans décision y figurent « en cours d'analyse ».
Comment Tamiso trie chaque faille
Des règles fixes, écrites à côté de chaque faille. Quand Tamiso n'est pas sûr, il vous demande de vérifier plutôt que d'écarter.
À corriger
Faille exploitée en ce moment (catalogue KEV de la CISA), paquet malveillant connu, forte probabilité d'exploitation (EPSS de 10 % ou plus), gravité critique, ou gravité élevée avec une exploitation possible.
À vérifier
Gravité élevée mais exploitation peu probable, gravité moyenne avec une exploitation possible, gravité inconnue. Tamiso dit quoi regarder dans votre code.
Écartée
Paquet de développement qui n'est pas livré, gravité faible, avis retiré par sa source, ou gravité moyenne avec une exploitation très peu probable.
Si le code du projet est aussi analysé, un paquet que votre code n'importe nulle part et dont aucun autre paquet n'a besoin descend d'un cran. Jamais pour une faille exploitée en ce moment.
Ce que vous pouvez envoyer
Un ou plusieurs fichiers dans la même analyse, une archive .zip du projet ou l'adresse d'un dépôt GitHub. Les paquets en double ne comptent qu'une fois.
JavaScript et TypeScript
package-lock.json pnpm-lock.yaml yarn.lock bun.lock package.json
Python
requirements.txt poetry.lock uv.lock Pipfile.lock pyproject.toml
PHP, Ruby, Go, Rust
composer.lock Gemfile.lock go.sum go.mod Cargo.lock
Java et .NET
pom.xml libs.versions.toml packages.lock.json
Rapports d'autres outils
SBOM CycloneDX ou SPDX en JSON, rapports Trivy, Snyk, OSV-Scanner, Dependabot ou SARIF. Tamiso reprend leurs paquets et refait le tri.
Et ensuite
Corriger avec votre assistant
Chaque mise à jour a un prompt prêt à coller dans Claude Code, Cursor ou un autre assistant de code.
Décider et le garder
Vous n'êtes pas d'accord avec le tri ? Changez la décision avec une justification. Elle est gardée au format OpenVEX et reprise aux analyses suivantes.
Suivre chaque jour
Dans un projet, Tamiso revérifie vos paquets chaque jour et signale les nouvelles failles, par e-mail dès l'offre Indie. Le SBOM CycloneDX s'exporte à chaque version.
Questions fréquentes
D'où viennent les failles ?
De la base OSV.dev, qui regroupe les avis de GitHub, PyPI, Go, RustSec et d'autres. La probabilité d'exploitation vient d'EPSS (FIRST), les failles exploitées en ce moment du catalogue KEV de la CISA, mis à jour une fois par jour.
Mon fichier ne donne pas de version exacte.
Avec une plage comme ^1.2.0, Tamiso prend la plus basse version encore acceptée. Une faille trouvée ainsi passe au mieux en « à vérifier », avec l'explication.
Pourquoi tant de failles écartées ?
La plupart des failles d'un projet touchent des paquets de développement ou ont une exploitation très peu probable. Elles restent visibles, avec la raison, et vous pouvez revenir sur chaque décision.