CVE-2024-38807

Falsification de signature
Affectations
Spring Boot
>=2.7.0, <=2.7.21 >=3.0.0, <=3.0.16 >=3.1.0, <=3.1.12 >=3.2.0, <=3.2.8 >=3.3.0, <=3.3.2
en
Printemps
Aucun élément n'a été trouvé.
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

Spring Boot fournit une préconfiguration prête à l'emploi de la plateforme Spring pour permettre aux utilisateurs de développer rapidement des applications Java. En s'appuyant sur Spring Framework, Spring Boot simplifie le développement d'applications web tout en offrant une variété d'outils pour gérer la configuration de l'application, l'accès aux données et la sécurité.

Une vulnérabilité de traversée de chemin par falsification de signature(CVE-2024-38807) a été identifiée dans Spring Boot. Cette vulnérabilité pourrait permettre à un pirate de faire en sorte qu'un contenu qui semble être signé par un utilisateur le soit en réalité par un autre. Cela affecte les applications qui utilisent spring-boot-loader ou spring-boot-loader-classic et qui utilisent un code personnalisé pour effectuer la vérification de la signature des jars imbriqués.

This issue affects Spring Boot versions >=2.7.0 through <=2.7.21, >=3.0.0 through <=3.0.16, >=3.1.0 through <=3.1.12, >=3.2.0 through <=3.2.8, and >=3.3.0 through<=3.3.2.

Détails

Informations sur le module

  • Produit : Spring Boot
  • Paquets et versions affectés : un texte
    • spring-boot-loader – versions >=2.7.0 through <=2.7.21
    • spring-boot-loader-classic – versions: >=3.0.0 through <=3.0.16, >=3.1.0 through <=3.1.12, >=3.2.0 through <=3.2.8, and >=3.3.0 through<=3.3.2
  • Dépôt GitHub : https://github.com/spring-projects/spring-boot 
  • Gestionnaire de paquets : Maven

Informations sur les vulnérabilités

Cette vulnérabilité de gravité moyenne est présente dans les paquets spring-boot-loader et spring-boot-loader-classic de Spring Boot dans les versions indiquées ci-dessus.

La vulnérabilité existe dans les applications Spring Boot qui utilisent un code personnalisé pour valider les jarres signées qui sont imbriquées dans d'autres jarres et qui peuvent attribuer de manière incorrecte la signature d'une jarre chargée précédemment.

La vulnérabilité est due à une lacune dans la manière dont les jarres imbriquées et les certificats sont chargés et traités au moment de l'exécution. Il en résulte que les applications qui dépendent des signatures cryptographiques avant d'exécuter du code dynamique peuvent valider une jarre non signée, non concordante ou autrement invalide comme étant signée. 

Étapes de la reproduction

Les étapes suivantes permettent de reproduire le chargement des signatures manquantes ou invalides :

  1. Créez ou choisissez une jarre et signez-la à l'aide de la fonction jarsign à l'aide de l'utilitaire jarsign.
  2. Ajouter un fichier de classe compilé séparément (par exemple Foo.class) au Jar (par exemple invalid.jar).
  3. Valider que le jar est bien invalide : jarsigner -verify invalid.jar
  4. Emboîter le jar invalide dans un autre jar (c.-à-d. parent.jar)
  5. Configurez votre application pour vous assurer que parent.jar est chargé, ainsi que invalid.jar.
  6. Notez que les deux jarres sont chargées sans avertissement. 

Notez que les applications qui effectuent une vérification personnalisée de la signature peuvent également être affectées. Les étapes pour reproduire cette vulnérabilité dépendent fortement de l'application, donc notre équipe mettra à jour nos étapes pour reproduire le problème le cas échéant. Si vous pensez que vos projets peuvent être affectés de cette manière, contactez l'équipe de HeroDevs pour discuter des circonstances spécifiques de votre projet.

Atténuation

  • Les utilisateurs de Spring Boot 3.2 et 3.3 doivent mettre à jour vers la dernière version source supportée par la communauté où ce problème est résolu (au moins 3.29 et 3.3.3 respectivement).  
  • Les autres versions de Spring Boot, y compris la 2.7, ne sont plus prises en charge par la communauté. La version supportée par la communauté ne recevra aucune mise à jour pour résoudre ce problème. Pour plus d'informations, voir ici.
  • Les utilisateurs de Spring Boot sur 2.6.x et moins ne sont pas directement affectés par cette vulnérabilité car la vérification des signatures a été introduite en 2.7.0, mais il est toujours possible que des Jars avec des signatures invalides se chargent sans erreur dans ces versions. Nous recommandons donc que tous les projets soient mis à jour vers une version supportée de Spring Boot. 
  • S'assurer que toutes les jarres sont correctement signées et valides afin de limiter les risques et d'éviter les erreurs d'exécution.

Les utilisateurs qui ont besoin de temps pour migrer peuvent faire appel à un partenaire commercial comme HeroDevs pour le support de sécurité post-EOL.

Crédit

Références

Détails de la vulnérabilité
ID
CVE-2024-38807
PROJET concerné
Spring Boot
Versions concernées
>=2.7.0, <=2.7.21 >=3.0.0, <=3.0.16 >=3.1.0, <=3.1.12 >=3.2.0, <=3.2.8 >=3.3.0, <=3.3.2
Date de publication
23 août 2024
≈ Date fixe
25 septembre 2024
Sévérité
Moyen
Catégorie
Falsification de signature