CVE-2024-29847
Ivanti Endpoint Manager (EPM) Pre-Auth RCE

Introduction


 

Remote   
Authenticated   
Default config   
Source  🌍 

 

Versions concernées 

  • EPM 2022 <= SU5 
  • EPM 2024  

Détails


Le 10 septembre 2024, la société Ivanti a annoncé une vulnérabilité critique (CVSSv3.0: 10), identifiée comme CVE-2024-29847, permettant une exécution de code arbitraire à distance sans authentification préalable.  

Depuis environ un an, les vulnérabilités critiques ne cessent d’apparaître sur les différents produits Ivanti, la première de la série étant probablement la CVE-2023-35078 sur le produit EPMM en juillet 2023. Le nombre de grandes entreprises et d’institutions ayant recours à ces produits étant important, cela en fait une cible de choix pour les attaquants. 

Parmi les victimes des vulnérabilités passées, on trouve par exemple des ministères norvégiens ou  encore plus récemment le MITRE, ou le CISA rappelant une nouvelle fois qu’aucune organisation n’est à l’abri de ce type d’attaque, peu importe sa maturité en termes de protection contre les cyber-menaces. 

Ces différentes vulnérabilités sont donc  régulièrement exploitées dans des attaques de masse sitôt une preuve de concept fonctionnelle publiée. 

 

La CVE-2024-29847 repose sur la désérialisation de données non fiables (CWE-502). La désérialisation est le processus de conversion de données d’un format stocké ou transmis (comme JSON, XML, etc.) en un objet ou une structure de données utilisable par un programme. Elle permet de recréer un objet à partir d’une chaîne de données préalablement sérialisées. 

Toutefois, si les données reçues sont malveillantes ou insuffisamment assainies, cela peut entraîner un déni de service, une modification des données ou, comme ce cas précis, une exécution de code arbitraire. 

La vulnérabilité, rapportée par Sina Kheirkhah (@SinSinology), s‘appuie comme il l’indique lui-même dans sa publication, sur les travaux de James Forshaw concernant l’exploitation de .NET Remoting . 

 

La technologie .NET Remoting est par ailleurs considérée comme non sécurisée par Microsoft qui recommande une migration vers WCF (Windows Communication Foundation). 

Détection


Les vulnérabilités telles que la CVE-2024-29847 sont relativement difficiles à détecter du fait des nombreux chemins d’attaques possibles. 

Malgré l’absence de règle de détection publique lors de la rédaction de cet article. En se basant sur la preuve de concept publiée, Gatewatcher est en mesure de proposer des règles permettant la détection de tentative d’exploitation de cette CVE.  

Ces règles de détection se base sur la présence des différentes étapes et particularité des requêtes afin de limiter le nombre de faux-positifs : 

 

alert tcp any any -> any any (msg: »GWLAB CURR_EVT Step 1″; flow:established,to_server; content: »Register »; content: »ILease »; distance: 40; content: « System.Collections.IEqualityComparer »; distance:100; content: »System.IConvertible »; distance:0; content: « tcp:// »; distance:0; xbits: set,remoting_ilease_connectback, track ip_pair, expire 300; noalert; reference: cve,CVE-2024-29847; metadata: provider Gatewatcher,  signature_severity Informational; sid:1000001; rev: 1; )  

  

alert tcp any any -> any any (msg: »GWLab CURR_EVT Step2 low bypass »; flow: established; xbits: isset,remoting_ilease_connectback, track ip_pair; content: »ToType »; content: »System.IConvertible »; distance: 0; xbits: set, remoting_ilease_step2, track ip_pair, expire 300; noalert; reference: cve,CVE-2024-29847; metadata: provider Gatewatcher,  signature_severity Informational;  sid: 1000002; rev:1;)  

  

alert tcp any any -> any any (msg: »GWLab CURR_EVT Step3 FileInfo »; flow: established,to_client; xbits: isset, remoting_ilease_connectback,track ip_pair; xbits: isset, remoting_ilease_step2, track ip_pair; content: »System.IO.FileInfo »; content: »OriginalPath|08|FullPath »; distance: 0; content: »LANDesk|5C|ManagementSuite »; distance: 0; xbits: set, remoting_ilease_fileinfo, track ip_pair, expire 300; noalert; reference: cve,CVE-2024-29847; metadata: provider Gatewatcher,  signature_severity Informational; sid: 1000003; rev:1;)  

  

alert tcp any any -> any any (msg: »GWLab CURR_EVT Possible Ivanti EPM RCE attempt « ; flow: established,to_client; xbits: isset, remoting_ilease_connectback,track ip_pair; xbits: isset, remoting_ilease_step2, track ip_pair; xbits: isset, remoting_ilease_fileinfo, track ip_pair; content: »System.IO.FileInfo »; content: »OriginalPath|08|FullPath »; distance: 0; content: »LANDesk|5C|ManagementSuite »; distance: 0; content: »System.Collections.IEqualityComparer »; distance: 0; xbits: unset,remoting_ilease_connectback, track ip_pair; xbits: unset,remoting_ilease_step2, track ip_pair; xbits: unset,remoting_ilease_fileinfo, track ip_pair; reference: cve,CVE-2024-29847; metadata: provider Gatewatcher,  signature_severity Critical; sid: 1000004; rev:1;) 

 

Chaque environnement étant spécifique, il est nécessaire de tester ces règles avant leur mise en production. 

 

Correction


L’éditeur a d’ores et déjà publié les correctifs nécessaires, le détail des versions corrigées étant disponible dans le bulletin d’alerte 

La société Ivanti ne propose pas de solution de contournement  dans le cas où la mise à jour n’est pas immédiatement possible. 

Pour faire suite à la récente évolution des vulnérabilités et à l’engouement des cybercriminels pour l’exploitation des instances vulnérables Ivanti, il est recommandé d’appliquer les correctifs au plus vite mais également de vérifier que celles-ci n’ont pas été compromises avant la correction. 

Enfin, il est à noter que d’après la communication de la société, les multiples vulnérabilités découvertes récémment sont le résultat des efforts consacrés à la sécurisation de leurs produits.