Un galop d’essai ou une campagne ciblée. Les experts de Palo Alto penchent pour la première solution à propos d’un ver touchant les instances Redis, un SGBD en mémoire. Baptisé P2PInfect, le ver, écrit en Rust, utilise un protocole de communication et un réseau point à point (P2P) personnalisés. Il exploite une vulnérabilité connue dans le langage Lua.

Selon Unit 42 (activité recherche de Palo Alto), « cette campagne P2PInfect prépare une attaque potentiellement plus puissante exploitant un solide réseau point à point de serveurs de commande et contrôle ». Le rapport ajoute « des occurrences du mot 'miner' sont présentes dans la boîte à outils malveillante de P2PInfect, même si les chercheurs n'ont pas trouvé la preuve formelle de la mise en œuvre d’opérations de cryptomining ».

La sandbox Lua vulnérable

Généralement, le langage de programmation multi-plateformes et moteur de script Lua est intégré en tant que bibliothèque en sandbox dans les applications pour la prise en charge des scripts. C'est également le cas de Redis qui propose à ses utilisateurs de télécharger et d'exécuter des scripts Lua sur le serveur afin d'étendre ses fonctionnalités. Jusque-là, l’infection des instances Redis par des acteurs malveillants et des botnets résultait principalement de l’exploitation de vulnérabilités ou d’erreurs de configuration dans Redis lui-même. Mais le ver P2PInfect exploite également dans la sandbox Lua une vulnérabilité critique, référencée CVE-2022-0543, qui affecte spécifiquement les paquets Redis sous Debian Linux. Selon les chercheurs de l'Unité 42, plus de 307 000 instances Redis sont actuellement accessibles sur Internet, mais seul un petit sous-ensemble d'environ 900 est vulnérable à cette faille. Reste que le ver va tenter de sonder et d'infecter toutes les instances publiques. « L'exploitation de la vulnérabilité CVE-2022-0543 rend P2PInfect efficace dans les environnements de conteneurs dans le cloud », ont déclaré les chercheurs. « Les conteneurs sont dotés d’un ensemble réduit de fonctionnalités. Par exemple, ils ne disposent pas de services 'cron'. La plupart des vers les plus actifs qui exploitent Redis utilisent une technique RCE à l'aide des services cron. Ce procédé ne fonctionne pas dans les conteneurs. P2PInfect intègre l'exploit ciblant la vulnérabilité CVE-2022-0543 afin de couvrir le plus grand nombre possible de scénarios vulnérables, y compris les environnements de conteneurs dans le cloud ».

Dans une analyse distincte, des chercheurs de Cado Networks ont observé un vecteur d'infection différent. Ces derniers ont également vu que l'un de leurs serveurs pot de miel Redis avait été compromis par le ver P2Pinfect. Mais au lieu d'utiliser la vulnérabilité CVE-2022-0543 pour s'introduire, les attaquants ont exploité la fonction de réplication de Redis qui permet aux nœuds Redis de fonctionner en tant qu'esclaves d'un nœud maître désigné. Cette fonctionnalité peut être déclenchée à l'aide d'une commande appelée SLAVEOF qui transforme le nœud en réplique du nœud maître. Dans le passé, cette technique a été utilisée par plusieurs groupes d'attaquants contre des instances Redis exposées publiquement en se connectant à elles et en les rendant esclaves d'instances Redis compromises. L'avantage de cette méthode, c’est que les attaquants peuvent alors insérer un fichier d'objets partagés Linux dans leur mode maître qui sera répliqué sur les esclaves compromis et pourra ensuite être chargé en tant que module sur les esclaves avec la commande MODULE LOAD. Les modules sont destinés à étendre les fonctionnalités de Redis et, dans ce cas, les attaquants en ont conçu un avec lequel ils peuvent accéder au shell inversé et implémenter une commande appelée system.exec. Ils ont pu ainsi exécuter des commandes shell arbitraires sur les systèmes des victimes.

Un malware multi-plateformes et résistant

Une fois que le dropper principal de P2PInfect est déployé, il se connecte au réseau P2P et télécharge des informations sur le protocole de communication personnalisé, qui fonctionne sur TLS 1.3, ainsi qu'une liste des nœuds actifs dans le réseau. Il met également à jour le réseau avec ses propres informations et choisit un port de communication aléatoire. Le fait que le ver utilise un protocole de commande et de contrôle point à point et des numéros de port aléatoires pour chaque nœud le rend résistant aux tentatives de débranchage (takedown), car il n'y a pas de point de défaillance central. Ses communications sont aussi plus difficiles à bloquer par des pare-feux, parce qu'il n'y a pas de port spécifique pour arrêter son trafic. Le ver est écrit en Rust, un langage de programmation moderne multi-plateformes, connu pour la sécurité de sa mémoire et de ses types, ce qui l’a rendu populaire dans les grandes entreprises. Les chercheurs ont pu observer le dropper P2PInfect en train d'infecter des instances Redis sous Linux et Windows et de déployer des charges utiles supplémentaires écrites en Rust. Certaines d'entre elles sont nommées linux, miner, winminer et windows.

Sur les systèmes Windows, les chercheurs de Palo Alto ont également constaté le déploiement d'un autre composant appelé Monitor, qui active la persistance et s'assure que le ver est en cours d'exécution. Après avoir déployé ses composants supplémentaires, le ver commence immédiatement à rechercher des instances Redis vulnérables, mais il recherche également dans des plages aléatoires d'adresses IP le port 22, normalement associé à SSH. La raison pour laquelle ce port est scanné n'est pas claire, car les chercheurs n'ont trouvé aucune preuve que le bot tente d'exploiter ou de se connecter à d'autres systèmes via SSH, du moins pas encore. « Nous recommandons aux entreprises de surveiller toutes les applications Redis, à la fois sur site et dans les environnements cloud, pour s'assurer qu'elles ne contiennent pas de noms de fichiers aléatoires dans le répertoire /tmp », ont déclaré les chercheurs. « En outre, le personnel DevOps devrait continuellement surveiller leurs instances Redis pour s'assurer qu'elles maintiennent des opérations légitimes et qu'elles conservent l'accès au réseau. Toutes les instances Redis doivent aussi être mises à jour vers leur dernière version ou toute version postérieure à redis/5:6.0.16-1+deb11u2, redis/5:5.0.14-1+deb10u2, redis/5:6.0.16-2 et redis/5:7.0~rc2-2 ».

P2PInfect est le dernier-né d'une série de botnets à propagation automatique qui ciblent les technologies cloud et de conteneurs. Les chercheurs d'Aqua Security ont récemment documenté un autre ver, baptisé Silentbob, qui cible les clusters Kubernetes, les API Docker, les instances Weave Scope, les déploiements JupyterLab et Jupyter Notebook, les serveurs Redis et les clusters Hadoop.