Exécution de code à distance non authentifiée dans Ivanti EPMM via injection EL dans la validation de bean (CVE-2025-4427 & CVE-2025-4428)

Une vulnérabilité critique a été découverte dans Ivanti Endpoint Manager Mobile (EPMM), permettant à des attaquants d’exécuter du code sur le serveur sans authentification. Le problème réside dans la manière dont le système valide les entrées avant de vérifier si un utilisateur est autorisé. Ce défaut permet de compromettre l’application simplement en envoyant une requête web spécialement conçue.

ProduitMobileIron-MDM
Date20/05/2025 14:04:56
Informations
  • Correctif disponible
  • Exploitation active

Résumé technique

Les CVE-2025-4427 et CVE-2025-4428 découlent de la manière dont Ivanti EPMM gère la validation et les contrôles de sécurité dans Spring MVC. Plus précisément :

  • Lorsqu’un utilisateur envoie une requête vers des points de terminaison tels que /api/v2/featureusage, les paramètres de la requête sont associés à un objet de données (DeviceFeatureUsageReportQueryRequest).
  • Si l’annotation @Valid est utilisée, Spring invoque les validateurs personnalisés comme DeviceFeatureUsageReportQueryRequestValidator avant de vérifier si l’utilisateur est authentifié ou autorisé.
  • Au sein de ce validateur, Ivanti utilise buildConstraintViolationWithTemplate() avec des entrées non filtrées contrôlées par l’attaquant.
  • Puisque Hibernate Validator peut traiter des expressions EL (par ex. ${3*333}), celles-ci sont évaluées immédiatement dans le contexte du serveur.
  • Par conséquent, un attaquant peut obtenir une exécution de code à distance (RCE) non authentifiée en injectant des expressions EL malveillantes (Expression Language Injection).
  • Un problème similaire existe également dans ScepSubjectValidator, déclenché lors de l’inscription SCEP aux certificats par un administrateur authentifié.
  • La vulnérabilité a été introduite en raison d’un défaut fondamental dans l’ordre de validation de Spring : la validation des beans (bean-validation) s’effectue avant les contrôles d’accès @PreAuthorize de Spring Security.

Exemple :

Une requête GET vers :

GET /api/v2/featureusage?format=${3*333} HTTP/2

renvoie :

Format '999' is invalid. Valid formats are 'json', 'csv'.

confirmant que les expressions EL sont évaluées, même sans authentification.

Recommandations

Les organisations utilisant Ivanti EPMM doivent mettre à jour immédiatement vers l’une des versions corrigées :

  • 11.12.0.5
  • 12.3.0.2
  • 12.4.0.2
  • 12.5.0.1

En outre :

  • Vérifiez les validateurs personnalisés pour vous assurer qu’ils n’insèrent pas de données non fiables dans les messages d’erreur.
  • Désactivez l’évaluation EL dans le rendu des modèles lorsque cela n’est pas nécessaire.
  • Assurez-vous que les contrôles d’autorisation s’effectuent toujours avant tout traitement des entrées utilisateur ou toute logique de validation.

[Callforaction-THREAT-Footer]

Leave a Reply

Your email address will not be published. Required fields are marked *