Skip to content

Upgrade LiteLLM to fix CVE-2026-114612 - #129

Merged
nicot merged 3 commits into
mainfrom
fix/litellm-cve-2026-114612
Nov 4, 2026
Merged

nicot merged 3 commits into
mainfrom
fix/litellm-cve-2026-114612

Conversation

@nicot

@nicot nicot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Why

CVE-2026-114612 (CVSS 9.9): an internal user of a LiteLLM proxy can forge a proxy-admin token and run commands through the MCP stdio endpoint. It affects 1.87.0 until 1.100.4 / 1.101.3 / 1.102.2 / 1.103.1 / 1.104.0-rc.2. Compass only uses the LiteLLM SDK, not the proxy server, so this isn't exploitable through Compass, but the locked 1.98.0 is in the affected range and scanners flag it.

Changes

  • pyproject.toml: litellm>=1.55,<2 → litellm>=1.104.0,<2. Every final release from 1.104.0 on includes the fix; a floor of 1.100.4 would still allow vulnerable 1.101.0–1.101.2.
  • uv.lock: uv lock --upgrade-package litellm → litellm 1.108.0. It requires boto3>=1.43.117, so boto3/botocore go to 1.43.124 and certifi to 2026.10.23. httpx[http2] adds h2, hpack and hyperframe.
  • third_party/license_overrides.yaml: OSV-Scanner reports no license for the new boto3, botocore and hyperframe releases. Added overrides matching their PyPI metadata: boto3 and botocore are Apache-2.0, hyperframe is MIT (its classifier is License :: OSI Approved :: MIT License).
  • Regenerated THIRD_PARTY_LICENSES.md, third_party/licenses.jsonl and third_party/NOTICES.txt with make update-licenses (OSV-Scanner v2.3.3, the CI version).

Testing

  • make check-licenses, tools/check_copyright_headers.py, ruff check, ruff format --check
  • pytest: 941 passed

Note: #124 also changes uv.lock and the license disclosures, so whichever PR merges second will need uv lock and make update-licenses rerun.

Raise the LiteLLM floor to 1.104.0 and lock 1.108.0. CVE-2026-114612
(CVSS 9.9) lets an internal user of a LiteLLM proxy forge a proxy-admin
token. It affects 1.87.0 until 1.100.4, 1.101.3, 1.102.2, 1.103.1 and
1.104.0-rc.2. Compass uses the LiteLLM SDK, not the proxy server, but the
locked 1.98.0 is in the affected range and scanners flag it.

LiteLLM 1.108.0 requires boto3>=1.43.117, so boto3 and botocore move to
1.43.124, and httpx[http2] adds h2, hpack and hyperframe. OSV-Scanner
reports no license for the new boto3, botocore and hyperframe releases,
so they get overrides matching their PyPI metadata (Apache-2.0,
Apache-2.0, MIT). Disclosures are regenerated with make update-licenses.
@nicot
nicot marked this pull request as ready for review November 4, 2026 22:01
nicot added 2 commits November 4, 2026 22:04
LiteLLM 1.108 types embedding() as EmbeddingResponse | Coroutine, since it
returns a coroutine when aembedding=True. Check the type so ty accepts the
synchronous call's return value.
tests/test_merge.py imports helpers as tests.test_trace_contract. That only
worked because importing LiteLLM 1.98 added the working directory to
sys.path; LiteLLM 1.108 does not, so collection failed under plain pytest.
@nicot
nicot merged commit 11e308e into main Nov 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants