Yes, if the PyArrow version is old and the files come from outside. GitHub's advisory for CVE-2023-47248 covers deserialization of untrusted data in PyArrow's IPC and Parquet readers from 0.14.0 up to but not including 14.0.1. The fixed version is 14.0.1. Upgrade, and avoid reading untrusted files on privileged hosts.
What the advisory says
The advisory is titled for PyArrow versions 0.14.0 to 14.0.0 and describes deserialization of untrusted data in the IPC and Parquet readers, which lets an attacker run code. Applications are exposed when they read IPC, Feather or Parquet files from untrusted sources, such as user uploads. It states that other Apache Arrow implementations and bindings are not affected. Affected range: 0.14.0 up to but not including 14.0.1. Patched version: 14.0.1.
The details here rest on the GitHub advisory alone. Check the advisory text and your own versions before acting.
Why it matters for data teams
Parquet and Feather are the "safe, modern" alternatives people choose when they give up pickle. This advisory is a reminder that a data format is only as safe as the parser. The code path matters more than the file extension.
Pandas, Spark connectors, DuckDB wrappers and many notebook tools can bring PyArrow in as a transitive dependency. You may have it without ever having installed it on purpose.
How to check your exposure
- Print the version in each environment that reads outside files.
- List which services accept uploads, partner feeds or files from shared drives.
- Search lock files for pyarrow, including transitive entries.
- Check container images, not just the repository, because old images can keep old versions.
import pyarrow
print(pyarrow.__version__)
If the printed version is below 14.0.1 and the environment reads files from sources you do not control, plan the upgrade.
Fixing it
Upgrade PyArrow to 14.0.1 or later, then regenerate your lock file so the new version is recorded. Rebuild images. Run the tests that read your real file layouts, since a major version jump can change type handling.
Where you cannot upgrade immediately, reduce exposure: stop accepting external files of these types, or parse them in a sandbox with no credentials and no network, then pass on a plain converted copy.
What to tell stakeholders
Keep the message short and factual. Say which services read external files of these types, which PyArrow version each runs, and the date each will move to 14.0.1 or later. If a service only carries the package and never reads outside files, say that too, and note that you will still update it in the normal cycle.
Whether you are actually reachable
A vulnerable library in the dependency tree is not automatically exploitable. It becomes urgent when your code reads untrusted IPC, Feather or Parquet input. Reachability analysis helps separate the services that do from the ones that only carry the package.
Try it yourself
Click through it at your own pace, or open it full screen. Look at how exploitability depends on whether the vulnerable path is used.
Where Safeguard fits
Safeguard's dependency scanning and reachability analysis can flag a vulnerable PyArrow and show whether your code reaches the affected path. Run a free scan to check your projects.
Quick check
Does using Parquet instead of pickle remove all deserialization risk?
No. Safer formats reduce risk, but the parser can still have flaws, as this advisory shows. Keep libraries current.
Which version fixes it?
PyArrow 14.0.1, according to the advisory.
Sources
Last reviewed: 19 October 2026.