Les attaques de logiciels malveillants contre les conteneurs ne sont pas nouvelles. Mais jusqu’à présent elles se concentraient essentiellement sur les déploiements Linux, parce qu'ils sont les plus courants et parce que c'est dans cet environnement que sont nés les conteneurs. Mais les chercheurs ont trouvé un programme conçu pour s'échapper des conteneurs Windows Server et infecter les clusters Kubernetes, signe que les attaquants ciblent désormais les déploiements Docker sur Windows. Baptisé Siloscape,ce codet est fortement obfusqué, c’est-à-dire écrit dans un code illisible et difficilement compréhensible. De plus, il utilise une technique peu connue d'évasion des conteneurs Windows et Tor pour les communications de commande et de contrôle. Son objectif est d'accéder aux nœuds et aux clusters Kubernetes et en attente d'autres commandes de la part des attaquants.
Docker et Kubernetes sont les principales technologies permettant de déployer des applications conteneurisées sur une infrastructure cloud. Elles sont aussi à l’origine de la popularité de l'architecture microservice dans le développement moderne de logiciels. Docker est utilisé pour configurer les conteneurs et repose sur les fonctionnalités de virtualisation du noyau Linux, alors que la plateforme Kubernetes sert à gérer ces conteneurs et les applications qui y sont exécutées sur plusieurs hôtes (les nœuds) regroupés en réseaux (les clusters).
Mission évasion des conteneurs silo
Alors que ces deux plateformes étaient devenues très populaires pour le développement et le déploiement d'applications, Microsoft souhaitait que Docker et Kubernetes puissent également fonctionner sur Windows Server. Sauf que le noyau Windows ne disposait pas de certaines des fonctionnalités d'isolation des processus et des systèmes de fichiers qui permettaient aux conteneurs de partager le même noyau sous Linux. L’entreprise de Redmond a donc développé certaines de ces fonctionnalités qu’elle a intégrées pour la première fois dans Windows Server 2016 au sein de Windows containers. Celle-ci prend en charge deux modes d'isolation : l'isolation des processus, comparable au fonctionnement des conteneurs Linux où tous les conteneurs partagent le noyau de l'OS hôte, et l'isolation Hyper-V, qui utilise l'hyperviseur de Microsoft pour configurer des machines virtuelles légères où chaque conteneur dispose de son propre noyau.
Les conteneurs basés sur Hyper-V offrent une meilleure isolation, mais ils pèsent davantage sur les ressources matérielles puisque chaque conteneur est une machine virtuelle à part entière et pas seulement une barrière de sécurité renforcée au niveau du noyau. C'est la raison pour laquelle, sur Windows Server, les conteneurs passent par défaut au mode d'isolation des processus - également connu sous le nom de conteneurs silo - et que les utilisateurs exécutant Docker sur Windows Server, éventuellement couplé au service Azure Kubernetes (AKS) pour la gestion, sont susceptibles de les utiliser.
Une technique d'usurpation d'identité peu répandue
Selon les chercheurs de Palo Alto Networks qui ont découvert Siloscape, le logiciel malveillant ne peut s'échapper que des conteneurs de type silo et non des conteneurs Hyper-V. Le malware utilise une variante d'un mécanisme d'authentification de l'utilisateur. Pour ce faire, il utilise un dérivé d'une technique d'évasion contre laquelle les chercheurs avaient mis en garde l'année dernière. La méthode consiste à abuser des liens symboliques pour monter le système de fichiers hôte en se faisant passer pour un processus appelé CExecSvc qui s'exécute dans les conteneurs Windows. « Pour exécuter l'appel système NtSetInformationSymbolicLink qui permet l'évasion, il faut d'abord obtenir SeTcbPrivilege », a expliqué dans un blog Daniel Prizmant, chercheur chez Palo Alto. « Plusieurs méthodes sont possibles : par exemple, dans mes tests, j'ai injecté une DLL dans CExecSvc.exe, qui a les privilèges appropriés, et j'ai exécuté NtSetInformationSymbolicLink à partir du contexte CExecSvc.exe. Mais Siloscape, utilise une technique dite de Thread Impersonation. On trouve peu de documentation en ligne sur cette méthode et encore moins d'exemples fonctionnels. La fonction la plus critique avec cette technique concerne l'appel système non documenté NtImpersonateThread », a-t-il ajouté.
L'utilisation d'une technique d'usurpation d'identité peu connue suggère que les développeurs du malware sont compétents et sophistiqués. Cela se voit également dans le fort degré d’obfuscation du code et dans la transmission des informations du serveur C&C et du mot de passe sous forme d'argument de ligne de commande chiffré et non intégrée dans le binaire lui-même. Selon Daniel Prizmant, Siloscape est le premier malware documenté conçu pour cibler spécifiquement les conteneurs Windows et les clusters Kubernetes. Les attaquants pénètrent dans les conteneurs en exploitant des vulnérabilités d'exécution de code à distance, nouvelles mais publiques, dans les applications ou les serveurs Web exécutés dans le conteneur. Ils utilisent ensuite la technique d'élévation de privilèges via CExecSvc.exe pour s'échapper du conteneur et rechercher le binaire kubectl.exe et la configuration sur le système de fichiers du système hôte. Kubectl est un outil de ligne de commande qui permet aux utilisateurs d'exécuter des commandes sur les clusters Kubernetes, et son fichier de configuration peut contenir les informations d'identification nécessaires pour le faire.
Un back-door sur le cluster
Le malware émet une commande Kubectl pour vérifier si le nœud compromis dispose des autorisations nécessaires pour générer de nouveaux déploiements. Si Kubectl n'est pas trouvé sur l'hôte, l'attaque prend fin. Siloscape déploie également Tor sur l'hôte et l'utilise pour se connecter à une adresse de serveur .onion via le protocole IRC afin d'attendre les commandes des attaquants. « Contrairement à d'autres logiciels malveillants ciblant les conteneurs, lesquels sont pour la plupart axés sur le cryptojacking, Siloscape ne fait rien qui puisse nuire au cluster par lui-même », a encore déclaré le chercheur de Palo Alto. « Siloscape fait surtout en sorte de ne pas être détecté, de rester intraçable et il ouvre une porte dérobée sur le cluster ».