Skip to content

Commit 98281d3

Browse files
Bump thrift to ~=0.24.0 (CVE-clean + DBR-LTS-safe via wheels)
thrift 0.24.0 shipped (THRIFT-6067) after this PR was opened. It is the first release that both clears the open Apache Thrift CVEs (CVE-2025-48431 + the CVE-2026-41602..41636 set, all fixed in 0.23.0) AND is safe to install on DBR LTS: unlike the yanked 0.23.0 (sdist-only, setup.py sys.exit(0) → SEV0 ES-1960554), 0.24.0 ships prebuilt manylinux2014 wheels (cp310-cp314) + macOS/musl/Windows, so pip installs a wheel and never runs setup.py -- the ES-1960554 build break cannot trigger. Gated on the DBR LTS Install CI check. Supersedes the earlier "hold at ~=0.22.0 and accept the thrift CVEs as non-Python-binding" stance now that a build-safe fixed thrift exists. The supplementary NVD-CPE thrift watch is no longer needed and is removed. Lockfile regenerated: thrift 0.24.0; all other CVE deps unchanged and clean. OSV-Scanner: 0 findings. Co-authored-by: Isaac Signed-off-by: Vikrant Puppala <vikrant.puppala@databricks.com>
1 parent f0dae00 commit 98281d3

2 files changed

Lines changed: 56 additions & 34 deletions

File tree

poetry.lock

Lines changed: 41 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,21 @@ include = ["CHANGELOG.md"]
1010

1111
[tool.poetry.dependencies]
1212
python = "^3.10"
13-
# Keep the cap at <0.23.0. thrift ships sdist-only, and thrift 0.23.0's
14-
# setup.py calls sys.exit(0) on the build-success path, which kills the PEP
15-
# 517 build backend before pip writes output.json. On the OLD setuptools
16-
# shipped by DBR LTS (14.3 / 15.4) this is a hard `pip install` failure --
17-
# the SEV0 ES-1960554 incident (4.2.7 widened this to <0.24.0 and was yanked;
18-
# see PR #840). Do NOT re-widen until a fixed thrift (0.23.1 / 0.24.0, per
19-
# THRIFT-6067 / apache/thrift#3584) ships. The `DBR LTS Install` CI check
20-
# (.github/workflows/dbr-lts-install.yml) installs the built wheel on real DBR
21-
# LTS clusters and catches this regression when dependency pins change.
22-
#
23-
# SECURITY NOTE: thrift 0.22.0 IS affected by open Apache Thrift advisories
24-
# (CVE-2025-48431 and the CVE-2026-41602..41636 set), all fixed in 0.23.0.
25-
# We accept them here for two reasons:
26-
# (1) Apache Thrift is one monorepo shipping ~20 language libraries; the PyPI
27-
# `thrift` package is built only from `lib/py`. Each of these CVEs is in
28-
# a NON-Python binding -- verified against the upstream advisories:
29-
# Node.js (41636), Go (41602), c_glib/C (48431), Java (41603), Swift
30-
# (41604, 41605) -- so none touches the Python code paths we ship.
31-
# (2) The only fix (0.23.0) is the version that caused ES-1960554, so we
32-
# cannot take it until a build-safe thrift ships (see above).
33-
# NOTE these advisories are INVISIBLE to the OSV-Scanner gate: OSV and
34-
# Dependabot match by PyPI purl, but these CVEs are filed only against the
35-
# upstream CPE (cpe:2.3:a:apache:thrift) with no PyPI-package coordinate, so
36-
# neither reports them. This is a point-in-time, per-CVE determination -- a
37-
# FUTURE thrift CVE could land in `lib/py`. The weekly Security Scan therefore
38-
# runs a supplementary NVD-CPE check for thrift (see securityScan.yml) so a
39-
# Python-affecting thrift CVE surfaces instead of being silently missed.
40-
thrift = "~=0.22.0"
13+
# Floor is 0.24.0 -- the first release that both clears the open Apache Thrift
14+
# CVEs (CVE-2025-48431 + the CVE-2026-41602..41636 set, all fixed in 0.23.0)
15+
# AND is safe to install on DBR LTS. History: 0.23.0 fixed the CVEs but ships
16+
# sdist-only and its setup.py calls sys.exit(0) on the build-success path,
17+
# killing the PEP 517 backend on the OLD setuptools bundled by DBR LTS -- the
18+
# SEV0 ES-1960554 (4.2.7 widened to <0.24.0 and was yanked; PR #840), which is
19+
# why we held at ~=0.22.0. thrift 0.24.0 (THRIFT-6067) resolves this: it ships
20+
# prebuilt manylinux2014 wheels (cp310-cp314) + macOS/musl/Windows, so pip uses
21+
# a wheel and never runs setup.py on DBR LTS -- the build-time break cannot
22+
# trigger. The `DBR LTS Install` CI check (.github/workflows/dbr-lts-install.yml)
23+
# installs the built artifact on real DBR LTS clusters and is the authoritative
24+
# gate for this. Cap at <0.25.0: thrift is pre-1.0, each 0.x minor can carry
25+
# breaking changes or packaging regressions (see 0.23.0), so bump this
26+
# deliberately once a new minor ships and the DBR-LTS gate proves it safe.
27+
thrift = "~=0.24.0"
4128
pandas = [
4229
{ version = ">=1.2.5,<4.0.0", python = ">=3.10,<3.13" },
4330
{ version = ">=2.2.3,<4.0.0", python = ">=3.13" }

0 commit comments

Comments
 (0)