Vulnérabilité CVE-2023-54391

📋 Description

La vulnérabilité CVE-2023-54391 est une faille de contournement d'authentification critique affectant Proxmox Virtual Environment (VE), édité par Proxmox Server Solutions GmbH. Selon la description officielle, les versions 7.0 à 8.0 contiennent une vulnérabilité dans le composant libpve-access-control (versions antérieures à 8.0.4) qui permet à des attaquants non authentifiés de s'authentifier en tant que n'importe quel utilisateur activé existant sans second facteur configuré, en fournissant une valeur arbitraire dans le paramètre tfa-challenge du endpoint de connexion API.

Le mécanisme d'attaque consiste à envoyer une requête POST au endpoint API de ticket d'accès avec n'importe quelle valeur dans le paramètre tfa-challenge pour contourner complètement la vérification du mot de passe, permettant ainsi un accès non autorisé y compris au compte root@pam. Cette vulnérabilité est classée CWE-304 (Missing Critical Step in Authentication) et présente un score CVSS v3 de 9.8 (CRITICAL) et un score CVSS v4 de 9.3 (CRITICAL). Toutes les versions affectées sont en fin de vie (end of life).

⚠️ Enjeu & Impact

Cette vulnérabilité permet un contournement complet de l'authentification sur les systèmes affectés. Un attaquant peut obtenir un accès non autorisé à n'importe quel compte utilisateur activé, y compris le compte privilégié root@pam, sans avoir besoin de connaître le mot de passe ni de disposer d'un second facteur d'authentification.

  • Accès non autorisé complet : L'attaquant peut s'authentifier en tant que n'importe quel utilisateur existant activé sur le système
  • Compromission du compte root : L'accès au compte root@pam est possible, donnant un contrôle total sur l'hyperviseur
  • Absence de prérequis : Aucun privilège préalable n'est requis (PR:N), aucune interaction utilisateur n'est nécessaire (UI:N), et l'attaque est réalisable à distance via le réseau (AV:N) avec une faible complexité (AC:L)
  • Exploitation observée : Selon l'avis officiel du vendeur, de nombreux rapports indépendants ont signalé une exploitation de cette vulnérabilité dans la nature

Le vecteur d'attaque est le réseau, avec une complexité faible, ne nécessitant aucun privilège ni aucune interaction utilisateur. L'impact sur la confidentialité, l'intégrité et la disponibilité est élevé (C:H/I:H/A:H).

🔩 Composants affectés

La vulnérabilité affecte le composant libpve-access-control de Proxmox Virtual Environment. Les versions concernées sont documentées précisément dans les sources officielles.

  • Produit : Proxmox Virtual Environment (VE)
  • Versions affectées : 7.0 → ≤ 7.4, et 8.0
  • Plage exacte du paquet : libpve-access-control >= 7.0-7 et < 8.0.4
  • Version corrigée : libpve-access-control 8.0.4

Il est important de noter que toutes les versions affectées sont actuellement en fin de vie (end of life). Les installations dont l'API n'est pas accessible par des attaquants potentiels ne sont pas exposées. De plus, les utilisateurs ayant configuré un second facteur d'authentification pour la connexion ne sont pas affectés par cette vulnérabilité.

✅ Solution & Mitigation

La mesure prioritaire est de mettre à jour le paquet libpve-access-control vers la version 8.0.4 ou supérieure. Pour les installations qui ne peuvent pas être mises à jour immédiatement, un correctif temporaire est disponible sous forme de patch qui ajoute une étape de validation au chemin de code affecté : chaque valeur 'tfa-challenge' doit alors être un ticket de défi TFA valide et signé, qu'un attaquant ne peut pas falsifier. Les connexions normales par mot de passe et les connexions à deux facteurs continuent de fonctionner après application du patch.

  1. Vérifier la version installée : Déterminer si la version de libpve-access-control est comprise dans la plage affectée (>= 7.0-7 et < 8.0.4)
  2. Appliquer la mise à jour : Mettre à jour libpve-access-control vers la version 8.0.4 ou supérieure
  3. Si la mise à jour n'est pas possible immédiatement, appliquer le patch temporaire officiel suivant :
sed -i.bck 's/^\t# This is the 2nd factor, use the password for the OTP response.$/\tverify_ticket($tfa_challenge, 0, $username);\n\t# This is the 2nd factor, use the password for the OTP response./' /usr/share/perl5/PVE/AccessControl.pm

grep -n 'verify_ticket($tfa_challenge, 0, $username)' /usr/share/perl5/PVE/AccessControl.pm | wc -l

systemctl reload-or-restart pvedaemon pveproxy

Vérification du patch : La commande grep doit afficher 3 (occurrences de la ligne verify_ticket dans le fichier). Si elle affiche autre chose, le patch n'a pas été appliqué et l'installation est toujours vulnérable. Pour annuler le patch, restaurer la sauvegarde '.bck'.

Il est également recommandé de restreindre l'accès réseau à l'API de Proxmox VE aux seuls réseaux de confiance, et de configurer l'authentification à deux facteurs pour tous les utilisateurs, ce qui constitue une mesure de protection supplémentaire contre cette vulnérabilité.

🔗 Sources