HD-2024-2201

Injection de commande
Affectations
Vue 2, Nuxt 2
Vue 2.6, Vue 2.7 et Nuxt 2
en
Vue 2 NES
Nuxt NES
Icône de cercle d'exclamation
Patch disponible
Cette vulnérabilité a été corrigée dans la version Never-Ending Support (NES) proposée par HeroDevs.

Aperçu

CVE-2021-23337 est une vulnérabilité d'injection de commande de haute sévérité dans lodash.template@4.5.0, dont dépendent Vue 2.6, Vue 2.7 et Nuxt 2. Cette vulnérabilité de dépendance a été corrigée dans la dernière version NES de Vue. Nous avons testé et déployé de nouvelles versions correctives de Vue core et de tous ses sous-paquets associés (en particulier vue-server-renderer, dont dépendent les utilisateurs de Nuxt).

Atténuation

Les instructions permettant aux clients de NES Nuxt d'adopter la nouvelle version de vue-server-renderer sont disponibles dans la documentation de NES Nuxt.

Cette vulnérabilité de Lodash n'affecte pas les utilisateurs de Vue 3 ou Nuxt 3. Cependant, pour les clients de HeroDevs NES qui n'ont pas encore terminé leur migration vers Vue 3 ou Nuxt 3, vous devrez installer ce nouveau correctif.

Il peut être difficile de corriger ce problème soi-même car les dépendances directes lodash.template et lodash.uniq ne sont plus publiées en tant que paquets individuels sur NPM. Il n'est donc pas simple de remplacer les dépendances sans reconstruire tous les paquets. Les anciennes versions de Vue ont dû être reconstruites pour utiliser la nouvelle structure d'empaquetage de Lodash. Bien que nous ayons l'infrastructure pour le faire au sein de l'équipe HeroDevs NES, c'est un travail que beaucoup d'équipes ne souhaitent pas faire elles-mêmes. En plus de la correction fonctionnelle, nous analysons également les versions corrigées de Vue pour valider que toutes les nouvelles dépendances transitives sont dédupliquées et que la taille du bundle de votre application reste optimisée.

Instructions pour les utilisateurs de NES Vue et Nuxt

Les dernières instructions et les numéros de version à utiliser, ainsi que la manière de configurer NES Vue et Nuxt pour la première fois, sont disponibles sur les pages Vue ou Nuxt Getting Started. Il vous suffira de mettre à jour votre package.json pour qu'il pointe vers les nouvelles versions.

Vérification du correctif

Pour vérifier que le paquet lodash.template n'est plus dépendant de Nuxt ou Vue, vous pouvez utiliser la commande why de votre gestionnaire de paquets. En général, il s'agit de npm why, yarn why ou pnpm why.

npm why lodash.template # Ne devrait pas imprimer "nuxt" ou "vue".

Maintenant, lorsque vous lancez npm why, vous devriez voir qu'une version plus récente de Lodash, pas lodash.template@4.5.0, est résolue.

npm why lodash # Devrait renvoyer une réponse positive et résoudre une version qui satisfait ^4.17.21

Approche de ce patch

Au sein de l'équipe NES, nous nous efforçons d'agir en tant qu'intendants du projet et d'apporter des changements qui ne sont pas révolutionnaires et qui sont dans le meilleur intérêt des utilisateurs actuels. Comme le paquet publié sur npm sous le nom de lodash.template n'est plus publié, il n'y a techniquement pas de "dernière" version vers laquelle mettre à jour.

Cependant, Lodash lui-même reste bien entretenu. Nous avons opté pour une mise à jour de Lodash afin de recevoir tous les changements et correctifs actuels. Nous dépendons maintenant directement de Lodash et suivons la syntaxe d'importation moderne (mais rétrocompatible !) qu'ils recommandent.

Il y a plusieurs raisons à cela.

Tout d'abord, un certain nombre de vulnérabilités ont été corrigées dans les dernières versions de Lodash. À l'avenir, il pourrait y en avoir d'autres. Parce que nous avons choisi d'utiliser le paquetage maintenu publiquement et de définir une gamme de versions qui accepte les mises à jour de correctifs, vous serez en mesure de recevoir automatiquement tous les futurs correctifs dans le cadre de la fusion de toutes les Pull Requests de Renovate ou de Dependabot. Cela signifie que vous serez en mesure de recevoir automatiquement tous les correctifs futurs sans avoir besoin de toucher explicitement aux dépendances Vue de votre projet !

Deuxièmement, il existe plusieurs paquets Lodash dont dépend Vue, à la fois directement et de manière transitoire. Le projet Lodash et ses nombreux sous-paquets, fonctions et modules sont conçus pour être construits ensemble et rattachés à une version unique tout au long de votre application afin de ne pas envoyer de code en double. En mettant à jour vers la dernière version de Lodash, nous sommes en mesure de nous assurer que votre outil de construction est capable d'arborer correctement vos dépendances et de ne pas inclure deux fois certains des paquets utilitaires les plus basiques.

Résumé

Nous avons corrigé Vue et Nuxt d'un grand nombre de problèmes liés à Lodash et élargi la gamme de versions pour inclure les correctifs futurs. Nous avons pris soin d'assurer la compatibilité ascendante et descendante, la parité fonctionnelle de la production et la taille des paquets.

Vous pouvez maintenir vos applications Vue et Nuxt sécurisées, conformes et à jour en mettant à jour votre fichier package.json avec les versions que nous avons publiées.

  • Utilisateurs de Vue 2.7 NES : Assurez-vous que toutes les versions du paquetage de base de Vue se résolvent en versions supérieures à @neverendingsupport/vue2@2.7.21.
  • Utilisateurs de Vue 2.6 NES : Assurez-vous que toutes les versions du paquetage de base de Vue sont supérieures à @neverendingsupport/vue2@>=2.6.19 (mais veillez à ne pas mettre à jour vers des versions non corrigées de Vue 2.7).
Détails de la vulnérabilité
ID
HD-2024-2201
PROJET concerné
Vue 2, Nuxt 2
Versions concernées
Vue 2.6, Vue 2.7 et Nuxt 2
Date de publication
8 octobre 2024
≈ Date fixe
3 octobre 2024
Fixé en
Sévérité
Haut
Catégorie
Injection de commande