Les déploiements de clusters Kubernetes ont le vent en poupe, mais les cyberattaques visant ces environnements très prisés des entreprises également. Si cette technologie d'orchestration de containers fait l'objet de travaux spécifiques dédiés à sa sécurité, certaines failles par rebond peuvent le rendre vulnérables. Après le runtime de container Runc, un autre levier de compromission a été identifié. « Un cluster Kubernetes utilisant une implémentation de réseau affectée est vulnérable », a alerté dans un billet Joël Smith, membre de l'équipe sécurité de Kubernetes dans un billet. Cette vulnérabilité a été répertoriée en tant que CVE-2020-10749. « En envoyant des publicités sur un routeur compromis, un conteneur malveillant peut reconfigurer l'hôte pour rediriger une partie ou la totalité du trafic IPv6 de l'hôte vers le conteneur contrôlé par l'attaquant. Même s'il n'y avait pas de trafic IPv6 auparavant, si le DNS renvoie des enregistrements A (IPv4) et AAAA (IPv6), de nombreuses bibliothèques HTTP essaieront de se connecter via IPv6 d'abord, puis se replieront sur IPv4, donnant à l'attaquant l'occasion de répondre ».

Les packages de versions kubelet concernées par cette compromission sont les suivantes : v1.18.0-v1.18.3, v1.17.0-v1.17.6 et versions inférieures à v1.16.11. Les implémentations réseau de cluster Kubernetes impactées incluent CNI Plugins (0.8.6 et versions antérieures), Calico et Calico Enterprise, Docker (antérieur à 19.03.11) et Weave Net (antérieur à 2.6.3). Ne seraient pas touchés les environnements Cilium, Juniper Contrail Networking, OpenShift SDN, OVN-Kubernetes et Tungsten Fabric.

Des correctifs attendus le 17 juin

Pour éviter qu'un attaquant utilise des privilèges CAP_NET_RAW, pour intercepter le trafic provenant d'autres conteneurs sur l'hôte voire de l'hôte lui-même, la première chose à faire en cas de doute et/ou de compromission est d'interdire CAP_NET_RAW pour les charges de travail ou les utilisateurs non approuvés et aussi recourir aux connexions TLS ayant leur propre certificat de validation. « Définissez l'hôte par défaut pour rejeter les publicités du routeur. Cela devrait empêcher les attaques de réussir, mais peut interrompre le trafic légitime, selon l'implémentation de la mise en réseau et le réseau sur lequel le cluster s'exécute. Pour modifier ce paramètre, définissez sysctl net.ipv6.conf.all.accept_ra sur 0 », précise Joël Smith.

Les packages suivants regrouperont des versions corrigées des plug-ins CNI Containernetworking qui étaient auparavant installés via le package kubernetes-cni. A savoir kubelet v1.19.0 + (branche principale # 91370), kubelet v1.18.4 + (# 91387), kubelet v1.17.7 + (# 91386) et kubelet v1.16.11 + (# 91388). « Étant donné que ces versions ne sont pas encore disponibles, les administrateurs de cluster utilisant des packages des référentiels Kubernetes peuvent choisir de mettre à niveau manuellement les plug-ins CNI en récupérant l'archive tar correspondante de la version containernetworking / plugins v0.8.6. Les versions des correctifs devraient être publiées le 17 juin, sous réserve de modifications », prévient Joël Smith.