CVE-2026-76843: Flair 0.15.0 and 0.15.1 Deserialization of Untrusted Data via ClusteringModel.load
The official Flair wheels for 0.15.0 and 0.15.1 still contain flair/models/clustering.py, whose ClusteringModel.load static method returns pickle.loads(joblib.load(str(modelfile))) and so executes arbitrary Python while loading a model file. Loading a model supplied by an attacker therefore runs that attacker's code with the privileges of the loading process. This is the same sink and the same file as CVE-2024-10073, which records 0.15.0 as the fixed version on the basis that clustering support was dropped in that release; the module was removed from the documented API but remains present in the distributed artifact and reachable by importing flair.models.clustering directly, so the earlier record's fixed version does not hold for the shipped package.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
flairto a version that resolves this vulnerability.Fixed in 0.15.1 - Upgrade
Upgrade
flairto a version that resolves this vulnerability.Fixed in 0.15.0
Event History
Frequently Asked Questions
Which deployments are exposed despite clustering support no longer being part of the documented API?
Installations using the official Flair 0.15.0 or 0.15.1 wheels are exposed if code can import flair.models.clustering directly and invoke ClusteringModel.load. The vulnerable module remains in the distributed artifact even though clustering support was removed from the documented API.
What does an attacker need to exploit this issue?
The attacker must cause the application to load an attacker-supplied model file through ClusteringModel.load. Exploitation requires user interaction because a process must load the malicious file, but no privileges are required by the attacker beforehand.
What is the impact if a malicious model is loaded?
Loading the file can execute arbitrary Python code with the privileges of the process performing the load. This can affect confidentiality, integrity, and availability of resources accessible to that process.
How can teams determine whether their package is affected?
Check whether the installed Flair distribution is an official 0.15.0 or 0.15.1 wheel and contains flair/models/clustering.py. Also identify code paths that directly import flair.models.clustering or call ClusteringModel.load on model files from untrusted sources.