CVE-2025-2000·Python vulnerability
A maliciously crafted QPY file can potential execute arbitrary-code embedded in the payload without privilege escalation when deserialising QPY formats < 13. A python process calling Qiskit 0.18.0 through 1.4.1's `qiskit.qpy.load()` function could potentially execute any arbitrary Python code embedded in the correct place in the binary file as part of specially constructed payload.
- Severity
- critical
- Software
- Python
- Fixed in
- 1.4.2
- Published
How likely is exploitation
FIRST's Exploit Prediction Scoring System puts the probability of this CVE being exploited in the next 30 days at 0.74% — higher than 50% of all published CVEs. EPSS is an independent forecast of exploitation, not a severity rating: it says nothing about how much damage a successful attack does, which is what a CVSS score measures.
Read the two together. CVE-2025-2000 scores 9.8 on CVSS, so a successful attack would be serious — but at 0.74%, almost nobody is currently attempting it. That is a different situation from a flaw under mass exploitation, and it is usually the difference between patching on your next maintenance window and patching tonight.
Affected versions
From: 0.18.0
Until: 1.4.2
Fixed in: 1.4.2
How to fix this CVE
Update Qiskit to version 1.4.2 or later to remediate the arbitrary code execution vulnerability in QPY deserialization. Systems running Qiskit 0.18.0 through 1.4.1 should prioritize this update immediately, as untrusted QPY files can trigger code execution during the load operation. Ensure all Python environments and virtual machines using vulnerable Qiskit versions are patched without delay.
sudo dnf update python3-qiskitDefensia detects this vulnerability
How to check if you are affected
- Check installed Qiskit version: python3 -c "import qiskit; print(qiskit.__version__)"
- Identify Qiskit usage in your codebase: grep -r "qiskit.qpy.load" /path/to/app/
- Search application logs for qpy.load() calls with external file sources: grep -i "qpy.load" /var/log/application.log
- Verify patched version is installed: python3 -c "import qiskit; assert qiskit.__version__ >= '1.4.2', 'Vulnerable version detected'"
FAQ
What is CVE-2025-2000?
CVE-2025-2000 is a critical arbitrary code execution vulnerability in Qiskit's QPY file deserialization mechanism. Malformed QPY files with embedded Python code can execute arbitrary commands when loaded via the qiskit.qpy.load() function, bypassing normal privilege escalation requirements.
Is CVE-2025-2000 being actively exploited?
No, CVE-2025-2000 is not currently listed in the CISA Known Exploited Vulnerabilities (KEV) catalog and no public exploits are available. However, the critical CVSS score (9.8) warrants immediate patching.
What versions of Qiskit are affected by CVE-2025-2000?
Qiskit versions 0.18.0 through 1.4.1 are vulnerable. Version 1.4.2 and later contain the fix. The vulnerability affects QPY file formats version 13 and earlier.
How do I check if my server is vulnerable to CVE-2025-2000?
Run: python3 -c "import qiskit; print(qiskit.__version__)" and verify the version is 1.4.2 or higher. If the output shows 0.18.0 through 1.4.1, your installation is vulnerable.
Does Defensia detect CVE-2025-2000?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Qiskit is installed on a monitored server, CVE-2025-2000 will appear in your dashboard with remediation steps.
Related Python CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2025-2000. Free for 1 server.
Get started free