En décembre, l'éditeur de solutions de sécurité réseau Fortinet a révélé qu'une vulnérabilité critique dans son système d'exploitation FortiOS était exploitée par des attaquants dans la nature. En fin de semaine dernière, après une analyse supplémentaire, l’équipementier a livré plus de détails sur l’implant de malware que ces attaquants ont déployé en exploitant la vulnérabilité. Sur la base des informations actuellement disponibles, l'attaque zero-day initiale ciblait fortement des entités liées à des instances gouvernementales. Cependant, comme la vulnérabilité est connue depuis plus d'un mois, tous les clients devraient la corriger dès que possible, car d'autres attaquants pourraient commencer à l'utiliser.
Exécution de code à distance dans FortiOS SSL-VPN
La vulnérabilité, référencée CVE-2022-42475, se situe dans la fonctionnalité SSL-VPN de FortiOS et elle est exploitable par des attaquants à distance sans authentification. Une exploitation réussie peut entraîner l'exécution de code et de commandes arbitraires. Fortinet a évalué la vulnérabilité à 9.3 (Critique) sur l'échelle du Common Vulnerability Scoring System (CVSS) et a publié des mises à jour pour les principales variantes de FortiOS, FortiOS-6K7K et FortiProxy, la solution de passerelle web sécurisée du fournisseur. FortiOS fonctionne sur les pares-feux de sécurité réseau FortiGate et d'autres appareils de l’équipementier. Les clients qui ne sont pas en mesure de déployer immédiatement les mises à jour peuvent, en guise de contournement, désactiver entièrement SSL-VPN, ce qui pourrait s’avérer difficile pour les entreprises qui s’appuient sur cette fonctionnalité pour leurs environnements de travail à distance ou hybrides. Le fournisseur a également publié une signature IPS (système de prévention des intrusions) pour détecter les tentatives d'exploitation, ainsi que des règles de détection pour l'implant connu dans son moteur antivirus. Les clients peuvent également rechercher dans leurs journaux les entrées suivantes qui pourraient révéler des tentatives d'exploitation : Logdesc="Application crashed" et msg="[...] application:sslvpnd,[...], Signal 11 received, Backtrace : [...]"
L’implant, caché derrière une version trojanisée du moteur IPS de FortiOS
Dans l'attaque analysée par Fortinet, les attaquants ont exploité la vulnérabilité et copié une version trojanisée du moteur FortiOS IPS dans le système de fichiers. Cette modification montre que les attaquants sont très qualifiés et qu’ils sont capables de faire de la rétro-ingénierie de composants FortiOS personnalisés. La version malveillante du moteur IPS a été enregistrée sur le système de fichiers sous le nom de /data/lib/libips.bak. Il s’agit d’une copie de la version légitime /data/lib/libips.so mais avec des modifications malveillantes. En effet, la version malveillante exporte deux fonctions légitimes appelées ips_so_patch_urldb et ips_so_query_interface normalement associées à la version légitime libips.so, mais elles ont été détournées pour exécuter du code stocké dans d'autres composants malveillants. « Si libps.bak est nommé libips.so dans le répertoire /data/lib, le code malveillant sera exécuté automatiquement car les composants de FortiOS appelleront ces fonctions exportées », ont indiqué les analystes de Fortinet. « Le binaire ne tente pas de revenir au code propre du moteur IPS, de sorte que la fonctionnalité IPS est également compromise », ont-ils aussi précisé. En d'autres termes, une fois que la version malveillante est exécutée, la fonctionnalité IPS légitime ne fonctionne plus correctement. Les fonctions détournées exécutent un code malveillant qui lit et écrit ensuite dans un certain nombre de fichiers appelés libiptcp.so, libgif.so, .sslvpnconfigbk et libipudp.so.
Les analystes n'ont pas été en mesure de récupérer tous ces fichiers à partir de l'appareil compromis qu'ils ont analysé, et n'ont donc pas pu reconstituer toute la chaîne d'attaque. Néanmoins, ils ont trouvé un fichier appelé wxd.conf dont le contenu est similaire au fichier de configuration d'un proxy inverse open-source qui peut être utilisé pour exposer un système situé derrière un routeur NAT (Network Address Tanslation) à Internet. L'analyse des captures de paquets réseau de l'appareil suggère que le logiciel malveillant a connecté deux serveurs externes contrôlés par l'attaquant pour télécharger des charges utiles et des commandes supplémentaires à exécuter. L'un des serveurs était toujours en activité et disposait d'un dossier contenant des binaires conçus spécifiquement pour différentes versions du matériel FortiGate. Ainsi, les chercheurs ont pu analyser des fichiers supplémentaires qui, selon eux, ont été exécutés par les attaquants sur les systèmes pour manipuler la fonctionnalité de journalisation dans FortiOS.
Selon les chercheurs :
- Le malware patche les processus de journalisation de FortiOS afin de manipuler les journaux pour échapper à la détection. - /bin/miglogd & /bin/syslogd.
- Il comprend des offsets et des opcodes pour 27 modèles et paires de versions de FortiGate. Le malware ouvre une poignée ou handle sur les processus et y injecte des données.
- Les versions concernées vont de 6.0.5 à 7.2.1.
- Les modèles sont FG100F, FG101F, FG200D, FG200E, FG201F, FG240D, FG3H0E, FG5H0E, FG6H1E, FG800D, FGT5HD, FGT60F, FGT80F.
- Le malware peut manipuler les fichiers logs. Il recherche les fichiers elog, dénomination des journaux d'événements dans FortiOS. Après les avoir décompressés en mémoire, il recherche une chaîne de caractères spécifiée par l'attaquant, la supprime et reconstruit les journaux.
- Le malware peut également détruire les processus de journalisation.
Les chercheurs ont également trouvé sur le service d’analyse de fichiers en ligne VirusTotal de Google un échantillon d'un binaire Windows dont le code présente des similitudes avec le binaire Linux présent sur FortiOS. Cet échantillon Windows a été compilé sur une machine localisée dans le fuseau horaire UTC+8, qui comprend l'Australie, la Chine, la Russie, Singapour et d'autres pays d'Asie orientale. Les certificats auto-signés utilisés par les attaquants ont aussi été créés entre les fuseaux UTC+3 et +8. « Il est difficile d'en tirer des conclusions, car les pirates n'opèrent pas nécessairement pendant les heures de bureau, mais se calent souvent sur les heures de bureau de leurs victimes pour noyer leur activité dans le trafic réseau global », ont déclaré les chercheurs. L'avis de Fortinet contient de nombreux indicateurs de compromission, notamment des chemins de fichiers, des hachages de fichiers, des adresses IP, et même des signatures permettant de détecter les communications malveillantes de cet implant à l'intérieur des captures de paquets réseau.