Une faille de sécurité vieille de 5 ans a été corrigée dans Docker !
Une faille de sécurité critique a été corrigée dans Docker ! Exploitable sous certaines conditions, elle pourrait permettre à un attaquant de contourner les plugins d'autorisation AuthZ. Faisons le point.
Cette faille de sécurité, associée à la référence CVE-2024-41110 et à un score CVSS de 10 sur 10, est en fait la résurrection d'une ancienne vulnérabilité. En effet, en janvier 2019, cette faiblesse a été découverte et corrigée dans Docker Engine v18.09.1. Mais, dans les versions suivantes de Docker, le correctif n'a pas été reporté, donc depuis plus de 5 ans, cette vulnérabilité est présente dans Docker.
Ceci a été découvert en avril 2024, et le nouveau correctif a été intégré dans les nouvelles versions de Docker publiées le 23 juillet 2024. Nous reviendrons sur ce point de façon plus précise en fin d'article.
Cette vulnérabilité permet une élévation de privilèges et d'outrepasser les contrôles AuthZ par l'intermédiaire d'une requête spéciale sur l'API Docker. Sur le site de Docker, nous pouvons lire : "Un attaquant peut exploiter ce bypass en utilisant une requête API avec Content-Length défini à 0, ce qui amène le démon Docker à transmettre la requête sans le body au plugin AuthZ, qui peut approuver la requête de manière incorrecte." - Les plugins AuthZ étant là pour mettre en place un meilleur contrôle d'accès sur Docker.
CVE-2024-41110 : quelles sont les versions affectées ? Comment se protéger ?
La faille de sécurité CVE-2024-41110 affecte de nombreuses versions de Docker Engine. Voici la liste des versions concernées (à chaque fois, comprenez "inférieur ou égal à") : 19.03.15, 20.10.27, 23.0.14, 24.0.9, 25.0.5, 26.0.2, 26.1.4, 27.0.3, et 27.1.0. Pour vous protéger, vous devez utiliser l'une des versions suivantes de Docker Engine : v23.0.14 et v27.1.1, ou supérieur.
De plus, le bulletin de sécurité de Docker précise : "Les utilisateurs de Docker Engine v19.03.x et des versions ultérieures qui ne s'appuient pas sur des plugins d'autorisation pour prendre des décisions de contrôle d'accès et les utilisateurs de toutes les versions de Mirantis Container Runtime ne sont pas vulnérables."
Du côté de Docker Desktop, toutes les versions jusqu'à la version 4.32.0 intègre une version vulnérable de Docker Engine. Un correctif sera intégré à la version 4.33 de Docker Desktop. Néanmoins, Docker Desktop est beaucoup moins impacté que les environnements de production, notamment parce que par défaut, il n'intègre pas la configuration de plugins AuthZ.
Si vous ne pouvez pas patcher, Docker vous recommande de sécuriser l'accès à l'API pour autoriser uniquement les hôtes de confiance en appliquant le principe du moindre privilèges.