Skip to content

fix(deps): raise the tornado and pypdf floors for six new advisories - #39188

Merged
mateo-berri merged 5 commits into
litellm_internal_stagingfrom
litellm_bump_tornado_658
Sep 2, 2026
Merged

fix(deps): raise the tornado and pypdf floors for six new advisories#39188
mateo-berri merged 5 commits into
litellm_internal_stagingfrom
litellm_bump_tornado_658

Conversation

@mateo-berri

@mateo-berri mateo-berri commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

TLDR

Problem this solves:

  • osv-scan is red on every branch since 2026-09-01 20:32Z
  • Three new tornado advisories flag 6.5.7 in uv.lock
  • Three new pypdf advisories flag 6.15.0 in uv.lock
  • All six are fixed in tornado 6.5.8 and pypdf 6.16.1

How it solves it:

  • Raises the tornado constraint floor from 6.5.6 to 6.5.8
  • Raises the pypdf floor in the proxy-runtime extra from 6.12.0 to 6.16.1
  • Re-locks so uv.lock resolves tornado 6.5.8 and pypdf 6.16.2

User Flow

Before: anyone who scans a litellm install or opens a PR sees tornado and pypdf flagged, with CI red through no fault of their change

  1. A contributor opens any PR and the osv-scan check fails with six findings from uv.lock: pypdf 6.15.0 flagged by https://osv.dev/GHSA-jp53-mhqp-8xcg (CVSS 6.9), https://osv.dev/GHSA-23w6-3w8w-8484 (CVSS 4.8) and https://osv.dev/GHSA-763m-79hh-57f2 (CVSS 4.8), and tornado 6.5.7 flagged by https://osv.dev/GHSA-mpf4-983q-p7j4 (CVSS 7.5), https://osv.dev/GHSA-8423-8fgw-73vq (CVSS 6.9) and https://osv.dev/GHSA-wwv5-g3v4-889x (CVSS 2.3)
  2. An operator running a vulnerability scanner against their litellm environment gets the same six findings

After: the same scans come back clean

  1. The contributor's PR runs osv-scan and it passes; no pypdf or tornado findings
  2. The operator's scanner sees tornado 6.5.8 and pypdf 6.16.2, which none of the six advisories cover

Relevant issues

Closes #39217

osv-scan went red on litellm_internal_staging itself between the 19:50Z run (green) and the 20:32Z run (red) on 2026-09-01, with no lockfile change in between: the tornado advisories were published upstream that evening, the pypdf ones about an hour later, and a third tornado advisory this morning. One PR carries both bumps rather than a second uv.lock PR needing its own two approvals. Same shape as #32985 (soupsieve) and #33233 (httplib2/setuptools floors)

Supersedes #39277 and #39285 (lock-only bumps of the same two packages) and dependabot's #39191 (tornado) and #39205 (pypdf 6.16.1, which the lock already passes)

Linear ticket

Resolves LIT-6648

Pre-Submission checklist

Please complete all items before asking a LiteLLM maintainer to review your PR

  • I have added meaningful tests (n/a: dependency floor bump, verified by the osv-scan CI check and the local scan below)
  • The handful of test files covering my change pass locally, e.g. uv run pytest tests/test_litellm/<your_test_file>.py -v. Leave the suites (make test-unit-*, make test-unit) to CI: it finishes in ~15 minutes where a laptop takes an hour or more
  • My PR passes all required CI/CD checks (e.g., lint, schema.d.ts sync check, etc.)
  • My PR's scope is as isolated as possible; it only solves 1 specific problem
  • I have received a Greptile Confidence Score of at least 4/5 before requesting a maintainer review (Greptile reviews automatically once the PR is opened; only comment @greptileai to re-request a review after pushing changes)

Screenshots / Proof of Fix

Both sides run the scanner the workflow pins (osv-scanner v2.3.8, sha256-verified) with the repo's osv-scanner.toml, the same command .github/workflows/osv-scan.yml runs:

osv-scanner scan source --config osv-scanner.toml -L uv.lock -L ui/litellm-dashboard/package-lock.json

Before (2ce4e3f)

  1. The scan exits 1 with six findings:
Total 2 packages affected by 6 known vulnerabilities (0 Critical, 1 High, 4 Medium, 1 Low, 0 Unknown) from 1 ecosystem.
6 vulnerabilities can be fixed.
| OSV URL                             | CVSS | ECOSYSTEM | PACKAGE | VERSION | FIXED VERSION | SOURCE  |
| https://osv.dev/GHSA-23w6-3w8w-8484 | 4.8  | PyPI      | pypdf   | 6.15.0  | 6.16.1        | uv.lock |
| https://osv.dev/GHSA-763m-79hh-57f2 | 4.8  | PyPI      | pypdf   | 6.15.0  | 6.16.1        | uv.lock |
| https://osv.dev/GHSA-jp53-mhqp-8xcg | 6.9  | PyPI      | pypdf   | 6.15.0  | 6.16.0        | uv.lock |
| https://osv.dev/GHSA-8423-8fgw-73vq | 6.9  | PyPI      | tornado | 6.5.7   | 6.5.8         | uv.lock |
| https://osv.dev/GHSA-mpf4-983q-p7j4 | 7.5  | PyPI      | tornado | 6.5.7   | 6.5.8         | uv.lock |
| https://osv.dev/GHSA-wwv5-g3v4-889x | 2.3  | PyPI      | tornado | 6.5.7   | 6.5.8         | uv.lock |
  1. The latest osv-scan run on the staging branch fails the same way, minus the tornado advisory published after it ran (run)

After (f7b37e4)

  1. uv lock --upgrade-package pypdf with the raised floor: Updated pypdf v6.15.0 -> v6.16.2; the lock diff touches only pypdf, tornado (from the earlier commit) and the relative exclude-newer stamp
  2. The same scan exits 0:
Scanned uv.lock file and found 453 packages
Scanned ui/litellm-dashboard/package-lock.json file and found 879 packages
GHSA-w8v5-vhqr-4h9v and 2 aliases have been filtered out because: diskcache has no fixed release published; remove this entry once one exists
GHSA-h7x2-h6g9-p789 and 1 alias have been filtered out because: mlflow has no fixed release published; remove this entry once one exists
Filtered 3 vulnerabilities from output
No issues found
  1. This PR's own osv-scan check passes at this commit (run)

Type

🐛 Bug Fix

Caveats (if any)

Low

  • litellm[proxy-runtime] now needs pypdf 6.16.1 or newer; an environment pinning pypdf below that stops resolving

Final Attestation

  • The tests check the right things, including the edge cases, and regressions in the respective real-world customer use-cases are not possible after this PR

Note

Low Risk
Patch-level dependency floor bumps with no code changes; main impact is stricter resolution for installs pinning older tornado or pypdf.

Overview
Raises dependency floors so osv-scan stops flagging six newly published advisories on locked versions.

tornado is bumped via [tool.uv] constraint-dependencies from >=6.5.6 to >=6.5.8; the lock resolves 6.5.8 (was 6.5.7). pypdf in the proxy-runtime extra moves from >=6.12.0 to >=6.16.1; the lock resolves 6.16.2 (was 6.15.0). uv.lock is refreshed accordingly (including the exclude-newer stamp).

No application code changes—only version policy and lockfile updates to clear CI and downstream vulnerability scans.

Reviewed by Cursor Bugbot for commit f7b37e4. Bugbot is set up for automated code reviews on this repo. Configure here.

@mateo-berri
mateo-berri requested a review from a team September 1, 2026 20:55
@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@greptile-apps

greptile-apps Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR raises two dependency floors and refreshes the lockfile to consume patched releases.

  • Raises the proxy-runtime pypdf requirement and resolves pypdf 6.16.2.
  • Raises the global Tornado constraint and resolves Tornado 6.5.8.
  • Refreshes the lockfile’s generated package metadata and cutoff timestamp.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
pyproject.toml Raises the pypdf and Tornado minimum versions consistently with the stated dependency-hardening goal.
uv.lock Reflects both updated constraints and resolves the intended patched package versions with matching artifacts.

Reviews (2): Last reviewed commit: "Merge remote-tracking branch 'origin/lit..." | Re-trigger Greptile

@codspeed-hq

codspeed-hq Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 31 untouched benchmarks


Comparing litellm_bump_tornado_658 (f7b37e4) with litellm_internal_staging (4049a07)

Open in CodSpeed

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 1eea8e2. Configure here.

@mateo-berri mateo-berri added run-ci and removed run-ci labels Sep 1, 2026
@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 647f32c. Configure here.

lzhan011 commented Sep 1, 2026

Copy link
Copy Markdown

OSV now also flags pypdf 6.15.0 under three advisories; updating pypdf to 6.16.2 alongside tornado restores a clean scan

GHSA-jp53-mhqp-8xcg (fixed in 6.16.0), GHSA-23w6-3w8w-8484 and
GHSA-763m-79hh-57f2 (fixed in 6.16.1) flag pypdf 6.15.0 in uv.lock and
keep osv-scan red alongside the tornado advisories. The proxy-runtime
extra now requires pypdf>=6.16.1 and the lock resolves 6.16.2.
@mateo-berri mateo-berri changed the title fix(deps): raise the tornado floor to 6.5.8 for two new advisories fix(deps): raise the tornado and pypdf floors for six new advisories Sep 2, 2026
@mateo-berri

Copy link
Copy Markdown
Contributor Author

bugbot run

@mateo-berri

Copy link
Copy Markdown
Contributor Author

@greptileai

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit f7b37e4. Configure here.

@mateo-berri
mateo-berri merged commit 2f0f068 into litellm_internal_staging Sep 2, 2026
95 checks passed
@mateo-berri
mateo-berri deleted the litellm_bump_tornado_658 branch September 2, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: OSV Scan fails on fork PRs due to vulnerable pypdf and tornado locks

4 participants