Canonical - CVE-2026-85526
Date de publication :
Il s'agit d'une vulnérabilité dans le driver de stockage Btrfs de Canonical LXD, dans la fonction unpackVolume.
LXD est un gestionnaire de conteneurs système et de machines virtuelles développé par Canonical. Il expose une API REST et un client en ligne de commande, lxc, pour administrer les instances.
Lors de la restauration d'une sauvegarde sur un pool btrfs, le démon lit le fichier backup/optimized_header.yaml de l'archive envoyée. Il joint chaque champ subvolumes[].path au point de montage du volume avec filepath.Join. Aucun nettoyage n'est fait. Aucun chemin .. ou absolu n'est rejeté et aucune vérification de préfixe n'est effectuée. Le chemin sort donc du point de montage, par exemple vers /etc/cron.d. Il atteint ensuite os.Remove, os.Rename et un ioctl btrfs, exécutés avec les droits root. Le nom des snapshots est validé, mais pas ce champ. Un utilisateur authentifié avec le droit can_create_instances (ou can_create_storage_volumes) peut envoyer l'archive piégée via POST /1.0/instances.
Elle permet à cet utilisateur de supprimer ou de remplacer des fichiers et des répertoires arbitraires du système hôte en tant que root. Dans un projet restreint multi-tenant, cela revient à une compromission du système de fichiers de l'hôte.
Informations
La faille est activement exploitée : Non
Un correctif existe : Oui
Une mesure de contournement existe : Oui
Élévation de privilèges
Exploitation
CWE-22 : Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Détails sur l'exploitation
• Vecteur d'attaque : Réseau
• Complexité de l'attaque : Faible
• Privilèges nécessaires pour réaliser l'attaque : Authentification utilisateur simple
• Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
• L'exploitation de la faille permet d'obtenir des droits privilégiés : Oui
Preuve de concept
Une preuve de concept est disponible en sources ouvertes.
Systèmes ou composants affectés
• LXD 4.0 versions antérieures à 4.0.14 (à partir de 4.0.2 selon l'avis GitHub, à partir de 4.0.0 selon le CNA)
• LXD 5.0 versions antérieures à 5.0.10
• LXD 5.21 versions antérieures à 5.21.8
• LXD 6 versions antérieures à 6.10, hors build 6.9-bf243da
Contournement provisoire
• Réserver can_create_instances et can_create_storage_volumes à des administrateurs de confiance.
• Accepter uniquement des sauvegardes issues de sources authentifiées et dont l'intégrité est vérifiée.
• Dans les projets restreints multi-tenants, envisager d'interdire l'import de sauvegardes aux membres non administrateurs.
Solutions ou recommandations
• LXD 5.0 versions 5.0.10 et supérieures
• LXD 5.21 versions 5.21.8 et supérieures
• LXD 6 versions 6.10 et supérieures
• LXD 6.9 version 6.9-bf243da