FICHE CVE

CVE-2026-79784

Publiée le 2026-08-25 · Dernière modification le 2026-09-24

🇫🇷 EN BREF

La bibliothèque Vocos est affectée car elle permet aux fichiers de configuration d'instancier des classes Python arbitraires sans restriction. Un attaquant peut obtenir l'exécution complète de code à distance sur votre système en vous incitant à charger un modèle provenant d'un dépôt Hugging Face malveillant. Cela ne nécessite aucune authentification ni privilège particulier, mais dépend du fait que l'utilisateur initie le processus de chargement du modèle non fiable.

CVSS 4.08.6 ÉLEVÉE
Type de faiblesse
Publiée2026-08-25
Dernière modification2026-09-24

DÉTAIL DU VECTEUR CVSS

Vecteur d'attaqueRéseau
Complexité d'attaqueFaible
Prérequis d'attaqueAucun
Privilèges requisAucun
Interaction utilisateurActive
Confidentialité (système vulnérable)Élevée
Intégrité (système vulnérable)Élevée
Disponibilité (système vulnérable)Élevée
Confidentialité (système subséquent)Aucune
Intégrité (système subséquent)Aucune
Disponibilité (système subséquent)Aucune

RÉFÉRENCES

Description officielle du NVD (en anglais)

Vocos instantiates a class named by a configuration file without restricting which class may be named. instantiate_class in vocos/pretrained.py takes the class_path value from the configuration, splits it into a module and an attribute, imports the module with __import__, resolves the attribute with getattr, and calls the result as args_class(*args, **kwargs) where kwargs is the config's own init_args mapping. No allowlist constrains the dotted path, so a configuration may name any importable callable and supply the arguments it is called with. Vocos.from_hparams reaches this for each of the feature_extractor, backbone and head entries, and Vocos.from_pretrained reaches it with a remote file: it downloads config.yaml from a caller-named Hugging Face repository and passes it straight to from_hparams. Loading a model from a repository the user does not control therefore executes code of the repository owner's choosing in the loading process. The neighbouring torch.load of the downloaded weights is a separate matter and is constrained on PyTorch releases that default weights_only to true, which leaves this path as the reachable one.