`npm audit` signale une CVE critique dans une dépendance transitive utilisée en production. Quelle est la bonne réponse ?
Réponse courte
Le code transitif s'exécute dans votre application, donc une CVE critique est votre risque. Évaluez si le chemin de code vulnérable est réellement atteignable, puis remédiez en montant ou en surchargeant la version (ou en atténuant) et vérifiez en production. L'ignorer parce qu'elle est transitive laisse un trou connu qu'un attaquant peut exploiter. Supprimer l'avertissement ne fait que masquer le signal. Réinstaller node_modules ramène la même version vulnérable. Suivez-la via le SCA, ne la faites pas taire.
Une dépendance transitive est du code que vous n'avez pas choisi directement mais qui est tout de même livré et exécuté au sein de votre application. Une CVE critique qui s'y trouve est votre vulnérabilité, exactement comme si elle était dans votre propre code source. La réponse professionnelle est de trier puis de remédier, pas d'écarter.
La bonne réponse
- Évaluer l'atteignabilité et l'exploitabilité. Votre application appelle-t-elle réellement la fonction ou le chemin vulnérable, avec une entrée influencée par l'attaquant ? Un score CVSS critique dans un chemin de code non atteignable représente un risque réel moindre qu'un « moyen » que vous appelez à chaque requête. Cela priorise le travail sans jamais ignorer le problème.
- Remédier. Mettez à niveau le parent direct qui tire la mauvaise version ; s'il n'a pas publié de correctif, utilisez une résolution/
overridesde dépendance pour forcer la version transitive corrigée, ou appliquez une atténuation documentée (configuration, WAF, désactivation de la fonctionnalité) comme solution temporaire. - Vérifier et redéployer, puis confirmer que l'avis disparaît de votre outillage SCA.
Pourquoi les distracteurs sont faux ou risqués
- L'ignorer parce qu'elle est transitive témoigne d'une incompréhension du fonctionnement des dépendances — le code s'exécute quel que soit celui qui l'a déclaré, et les attaquants se moquent que vous ne l'ayez pas écrit.
- Supprimer node_modules et réinstaller réinstalle la même version vulnérable que vos plages/lockfile autorisent. Cela ne change rien à l'avis.
- Supprimer l'avertissement de l'audit masque le signal pendant que le code exploitable reste en production — le pire résultat, car plus personne ne le suit.
Ce que l'examinateur cherche à évaluer
Si vous traitez le risque des dépendances comme réel et vous incombant, savez prioriser via l'atteignabilité plutôt que paniquer devant chaque ligne rouge, et connaissez les mécanismes concrets — overrides/résolutions, comportement du lockfile et suivi SCA — pour piloter réellement la correction et l'empêcher de régresser silencieusement.
Questions de suivi probables
- Comment forcer une version corrigée d'une dépendance transitive quand le parent direct n'a pas été mis à jour ?
- Qu'apporte l'analyse d'« atteignabilité » par rapport à un simple décompte de CVE, et quelles en sont les limites ?
- Comment éviteriez-vous que cela se reproduise sur de nombreux dépôts ?