Des chercheurs en sécurité ont publié des détails techniques et un PoC pour une vulnérabilité critique corrigée la semaine dernière dans la solution de gestion de la sécurité des endpoints FortiClient Enterprise Management Server (FortiClient EMS) de Fortinet. Signalée à Fortinet comme faille zero-day par le National Cyber Security Centre (NCSC) du Royaume-Uni, la CVE-2023-48788, a été activement exploitée dans la nature au moment de l'application du correctif, mais vraisemblablement dans le cadre d'attaques très ciblées.

La disponibilité du récent PoC, même s'il n'est pas armé, pourrait permettre une exploitation plus large et une adoption plus facile par un plus grand nombre d'attaquants. La faille résulte d'une mauvaise vérification des éléments d'une commande SQL, qui pourrait être exploitée dans un scénario d'injection SQL pour exécuter du code ou des commandes non autorisées sur le FortiClient EMS. Il est conseillé aux clients de passer à la version 7.0.11 ou supérieure pour la série 7.0.x et à la version 7.2.3 ou supérieure pour la série 7.2.x.

Une vulnérabilité triviale de Fortinet à exploiter

FortiClient EMS est le composant serveur central utilisé pour gérer les terminaux sous FortiClient. Selon les chercheurs de Horizon3.ai (spécialisée dans le pen test) qui ont reconstitué la vulnérabilité, celle-ci se trouve dans un composant appelé FCTDas.exe, ou Data Access Server, qui communique avec la base de données Microsoft SQL Server pour stocker les informations reçues des points d'extrémité. Les terminaux sur lesquels FortiClient est installé communiquent avec un composant de l'EMS appelé FmcDaemon.exe sur le port 8013 à l'aide d'un protocole textuel personnalisé, crypté dans un second temps avec TLS à des fins de protection. FmcDaemon.exe transmet ensuite des informations à FCTDas.exe sous la forme de requêtes SQL exécutées dans la base de données.

Les chercheurs ont réussi à construire un script Python pour interagir avec FmcDaemon.exe et envoyer un simple message pour mettre à jour le FCTUID suivi d'une charge utile d'injection SQL pour déclencher une mise en veille de 10 secondes. Après quoi, ils ont observé que la charge utile était transmise à FCTDas.exe, confirmant ainsi la vulnérabilité. « Pour transformer cette vulnérabilité d'injection SQL en exécution de code à distance, nous avons utilisé la fonctionnalité xp_cmdshell intégrée de Microsoft SQL Server », ont expliqué les chercheurs dans leur rapport technique. « À l’origine, la base de données n'était pas configurée pour exécuter la commande xp_cmdshell. Cependant, elle a été activée de manière triviale à l'aide de quelques autres instructions SQL ». Les chercheurs ont intentionnellement laissé la partie exécution du code xp_cmdshell en dehors de l'exploit PoC, de sorte qu'il ne peut pas servir directement sans modification. Cependant, la technique xp_cmdshell est bien connue et a déjà été utilisée pour attaquer des bases de données SQL Server, ce qui signifie qu'il n'est pas difficile d'implémenter cette partie.

Des failles qui attirent les attaquants

En février, Fortinet a corrigé une autre vulnérabilité critique d'exécution de code à distance dans le service VPN SSL du système d'exploitation FortiOS utilisé sur ses appliances. Cette vulnérabilité, référencée CVE-2024-21762, était également accompagnée d'un avertissement indiquant qu'elle pouvait être exploitée dans la nature. L'entreprise a signalé par ailleurs que des groupes de cyberespions chinois avaient déjà exploité par le passé des vulnérabilités N-Day (dans la nature depuis plusieurs jours) FortiOS pour cibler des fournisseurs d'infrastructures critiques.

Cette semaine, la Shadowserver Foundation, une institution qui surveille le trafic Internet malveillant, a signalé qu'elle observait des tentatives d'exploitation à grande échelle de la vulnérabilité CVE-2024-21762 après la publication d'un programme d'exploitation et que plus de 133 000 appareils Fortinet exposés à Internet étaient toujours vulnérables un mois après l'application du correctif.