← News
/DISPATCH · 2026-08-26

CVE-2026-79784: Vocos Model-Loading Framework Exposes Arbitrary Class Instantiation RCE — AI Model Supply Chain Sounds the Alarm Again

AI audio framework Vocos disclosed CVE-2026-79784 (CVSS 8.8). A malicious Hugging Face config.yaml can instantiate arbitrary Python classes at load time and execute arbitrary code.

Incident Overview

On 25 August 2026, researchers disclosed a high-severity bug in the AI audio model framework Vocos: CVE-2026-79784, CVSS v3.1 8.8, CWE-749: Exposed Dangerous Method or Function. Vocos is widely used for TTS, voice cloning, and audio codec work. It is the core backend for several star speech-synthesis models on Hugging Face (WavLLM, Vall-E series, and others). The bug is in `instantiate_class` in `vocos/pretrained.py`. A Hugging Face repo owner can set arbitrary `class_path` and `init_args` in `config.yaml`. When a user calls `Vocos.from_pretrained()`, arbitrary Python runs. After the early-August ChainDrop / Shai-Hulud npm worm, this is another classic model supply-chain attack surface.

Technical Details

Vocos exposes `from_pretrained()`. It pulls `config.yaml` from Hugging Face and instantiates model components. Execution path:

# vocos/pretrained.py (simplified)
def instantiate_class(class_path, init_args):
    module_path, attr = class_path.rsplit(".", 1)
    module = importlib.import_module(module_path)
    cls = getattr(module, attr)
    return cls(**init_args)

# Vocos.from_pretrained call chain
config = load_config(repo_id)        # pull config.yaml from Hugging Face
feature_extractor = instantiate_class(config["feature_extractor"]["class_path"],
                                      config["feature_extractor"]["init_args"])
backbone = instantiate_class(config["backbone"]["class_path"],
                             config["backbone"]["init_args"])
head = instantiate_class(config["head"]["class_path"],
                         config["head"]["init_args"])

The defect: `class_path` has no allowlist. When a user loads a malicious Hugging Face repo, the owner points `config.yaml` at any Python callable, including `os.system`, `subprocess.Popen`, `shutil.rmtree`, `urllib.request.urlretrieve`, and other dangerous system calls. Trigger conditions:

Impact Assessment

From an attack-surface view, CVE-2026-79784 aligns with recent model/package supply-chain incidents:

Remediation

Detection Rules

# Host layer (auditd) — anomalous commands spawned by the model-loading process
auditctl -w /usr/bin/python3 -p x -k vocos_loading
ausearch -k vocos_loading -ts recent | grep -E 'execve.*(curl|wget|nc|bash|sh|ssh)'

# Network layer — anomalous outbound traffic during the model-download phase
tcpdump -i any -nn 'src host <training-host> and not dst net 10.0.0.0/8 and not dst net 172.16.0.0/12'

# Application layer — brief shell activity around Vocos.from_pretrained
strace -f -e trace=execve -p <pid> 2>&1 | grep -E 'class_path|init_args|/bin/(ba)?sh'

# SBOM-level dependency monitoring
pip-audit --strict -r requirements.txt | grep -i vocos

References