PyArrow: Arbitrary code execution when loading a malicious data fileGHSA-5wvp-7f3h-6wmm
CRITICALFix: apache/arrow@f141709GHSA-5wvp-7f3h-6wmm is a critical-severity (CVSS 9.8) Deserialization of Untrusted Data vulnerability in pyarrow. EPSS puts its 30-day exploitation probability at 14.5% (97th percentile). A fix is available for pyarrow — see the affected versions and patch details below.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
pyarrowReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.
Description
Deserialization of untrusted data in IPC and Parquet readers in PyArrow versions 0.14.0 to 14.0.0 allows arbitrary code execution. An application is vulnerable if it reads Arrow IPC, Feather or Parquet data from untrusted sources (for example user-supplied input files).
This vulnerability only affects PyArrow, not other Apache Arrow implementations or bindings.
It is recommended that users of PyArrow upgrade to 14.0.1. Similarly, it is recommended that downstream libraries upgrade their dependency requirements to PyArrow 14.0.1 or later. PyPI packages are already available, and we hope that conda-forge packages will be available soon.
If it is not possible to upgrade, maintainers provide a separate package pyarrow-hotfix that disables the vulnerability on older PyArrow versions. See https://pypi.org/project/pyarrow-hotfix/ for instructions.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | pyarrow | ≥ 0.14.0&&< 14.0.1 | 14.0.1pip install --upgrade 'pyarrow==14.0.1' |
Affected Products
pyarrowapacheDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for pyarrow, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update pyarrow to 14.0.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-5wvp-7f3h-6wmm is resolved across your whole dependency graph.
Workarounds
Do not deserialise data from untrusted sources: where the format allows it, restrict deserialisation to an explicit allowlist of expected types, and prefer a data-only format (JSON, Protobuf) over one that can reconstruct arbitrary objects until you can upgrade.
How to detect GHSA-5wvp-7f3h-6wmm
A community-maintained Nuclei template exists for this CVE. You can scan for it directly:
nuclei -id ghsa-5wvp-7f3h-6wmm -u https://target- Template
- PyArrow Flight RPC - Remote Code Execution
- Severity
- critical
- Impact
- Unauthenticated attackers can exploit deserialization vulnerabilities through maliciously crafted Python-defined extension types in Flight RPC to execute arbitrary code and completely compromise PyArrow installations.
- Remediation
- Upgrade to PyArrow v14.0.1 or later.
Template by ProjectDiscovery nuclei-templates (smolse), MIT licensed. View the full template. Scan only systems you are authorised to test.
Frequently Asked Questions
Is GHSA-5wvp-7f3h-6wmm in your dependencies?
Find it across PyPI, including transitive dependencies.