Skip to content

sec: bump vulnerable dependencies to resolve HIGH/CRITICAL CVEs#194

Closed
scale-ballen wants to merge 1 commit intomainfrom
sec/bump-vulnerable-deps
Closed

sec: bump vulnerable dependencies to resolve HIGH/CRITICAL CVEs#194
scale-ballen wants to merge 1 commit intomainfrom
sec/bump-vulnerable-deps

Conversation

@scale-ballen
Copy link
Copy Markdown
Contributor

@scale-ballen scale-ballen commented Apr 9, 2026

Summary

Bump vulnerable Python dependencies via workspace overrides and uv lock --upgrade to resolve HIGH/CRITICAL vulnerabilities in the agentex and agentex-auth container images.

Dependency Changes

Package Before After CVEs Resolved
aiohttp 3.12.15 3.13.5 CVE-2025-53643 (HIGH), CVE-2025-69226 (HIGH)
python-multipart 0.0.12 0.0.24 CVE-2026-24486 (MEDIUM)
starlette 0.46.2 1.0.0 CVE-2025-62727
fastapi 0.115.14 0.135.3 Transitive starlette fix
cryptography 46.0.7 Multiple
certifi 2025.8.3 2026.2.25 CA bundle update
uvicorn 0.35.0 0.44.0 Relaxed upper bound from <0.36
urllib3 1.26.20 2.6.3 Major version bump (1.x → 2.x)
pyjwt 2.10.1 2.12.1 Latest available
agentex-sdk 0.4.18 0.9.10 Latest available

What Changed

  1. pyproject.toml (workspace root): Expanded override-dependencies to force patched versions of aiohttp, python-multipart, starlette, cryptography, certifi. Bumped agentex-sdk floor to 0.9.10.
  2. agentex/pyproject.toml (backend): Bumped aiohttp floor to ≥3.13.5, python-multipart to ≥0.0.24, relaxed uvicorn upper bound (was <0.36).
  3. uv.lock: Regenerated with uv lock --upgrade.

Testing Results

  • Unit tests: 79/79 passed
  • Fixture-dependent tests: 108 errors (pre-existing — require Docker/Postgres, not caused by this change)
  • No import errors or resolution conflicts

Risk Assessment

  • urllib3 1.x → 2.x: Major version jump. urllib3 2.x removes deprecated APIs but aiohttp/httpx abstract this. No direct urllib3 usage in agentex source code.
  • starlette 0.46 → 1.0: Major version. Deprecated decorators removed. No usage of deprecated APIs found in codebase.
  • uvicorn relaxed bound: Was pinned <0.36. Now allows latest (0.44.0). uvicorn follows semver — patch/minor bumps are safe.
  • agentex-sdk 0.4.18 → 0.9.10: Large version jump. Same fastapi<0.116 constraint (overridden by workspace). SDK is a leaf dependency.

Notes

  • agentex-sdk still pins fastapi<0.116 — the workspace override (fastapi>=0.135.0) is required
  • This PR must merge before the parent agentex repo PR can merge (submodule reference)

Test Plan

  • uv lock --upgrade resolves without conflicts
  • Unit tests pass (79/79)
  • No deprecated API usage found in codebase
  • CI pipeline passes
  • Docker build succeeds (FIPS and standard variants)
  • Deploy to dev environment and verify service health

🤖 Generated with Claude Code

Greptile Summary

This PR bumps a set of Python dependencies to resolve HIGH and CRITICAL CVEs, using uv workspace-level override-dependencies to force patched versions regardless of the agentex-sdk's pinned constraints, then regenerates uv.lock. The approach is sound: overrides are correctly scoped, the lock file resolves without conflicts, and the starlette <2.0 upper bound guards against a future major version pulling in breaking changes.

Confidence Score: 5/5

Safe to merge — targeted security dependency bumps with no functional code changes, passing unit tests, and no deprecated API usage in the codebase.

All changes are dependency version pins and a regenerated lock file. The starlette imports in the codebase (BackgroundTask, BaseHTTPMiddleware, ASGIApp, TestClient, etc.) are all stable APIs present in starlette 1.0.0. No P0 or P1 findings identified.

No files require special attention.

Vulnerabilities

This PR is specifically a security remediation. All patched CVEs (aiohttp CVE-2025-53643/CVE-2025-69226, python-multipart CVE-2026-24486, starlette CVE-2025-62727) are addressed by the resolved package versions in uv.lock. No new secrets or auth-boundary changes were introduced. The cryptography and certifi overrides are appropriate belt-and-suspenders hardening. No new security concerns identified.

Important Files Changed

Filename Overview
pyproject.toml Adds five new override-dependencies (aiohttp, python-multipart, starlette, certifi, cryptography) and bumps agentex-sdk floor to 0.9.10; <2.0 guard on starlette is a good defensive bound.
agentex/pyproject.toml Bumps aiohttp floor to >=3.13.5, python-multipart to >=0.0.24, and removes the overly-tight uvicorn <0.36 upper bound; all changes are consistent with the workspace overrides.
uv.lock Auto-generated lock file regenerated with uv lock --upgrade; resolves aiohttp@3.13.5, starlette@1.0.0, fastapi@0.135.3, uvicorn@0.44.0, urllib3@2.6.3, cryptography@46.0.7, certifi@2026.2.25 with no conflicts.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["pyproject.toml\n(workspace root)\noverride-dependencies"] -->|forces| B["fastapi>=0.135.0\nstarlette>=0.52.1,<2.0\naiohttp>=3.13.5\npython-multipart>=0.0.24\ncertifi>=2026.2.25\ncryptography>=46.0.7"]
    C["agentex/pyproject.toml\n(backend direct deps)"] -->|declares| D["aiohttp>=3.13.5,<4\npython-multipart>=0.0.24\nuvicorn>=0.35.0 (no upper)"]
    E["agentex-sdk@0.9.10\n(transitive)"] -->|pins| F["fastapi<0.116"]
    A -->|workspace override wins| F
    B --> G["uv.lock\n(resolved)"]
    D --> G
    G --> H["aiohttp 3.13.5\nfastapi 0.135.3\nstarlette 1.0.0\nuvicorn 0.44.0\nurllib3 2.6.3\ncryptography 46.0.7\ncertifi 2026.2.25"]
Loading

Reviews (2): Last reviewed commit: "sec: bump vulnerable dependencies to res..." | Re-trigger Greptile

@scale-ballen scale-ballen requested a review from a team as a code owner April 9, 2026 15:42
Workspace override updates to force patched versions:
- aiohttp: 3.12.15 → 3.13.5 (CVE-2025-53643, CVE-2025-69226)
- python-multipart: 0.0.12 → 0.0.24 (CVE-2026-24486)
- starlette: 0.46.2 → 1.0.0 (CVE-2025-62727)
- cryptography: → 46.0.7
- certifi: 2025.8.3 → 2026.2.25
- fastapi: 0.115.14 → 0.135.3

Additional bumps via uv lock --upgrade:
- uvicorn: 0.35.0 → 0.44.0 (relaxed upper bound from <0.36)
- urllib3: 1.26.20 → 2.6.3
- pyjwt: 2.10.1 → 2.12.1
- agentex-sdk: 0.4.18 → 0.9.10

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@scale-ballen scale-ballen force-pushed the sec/bump-vulnerable-deps branch from 5e86617 to f2ad54b Compare April 9, 2026 16:05
@scale-ballen
Copy link
Copy Markdown
Contributor Author

Closing — changes should be made in the private agentex repo, not the public submodule. The FIPS images are built and mirrored from the private repo's CI.

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.

1 participant