Skip to content

security: Bump urllib3 to 2.7.0 and python-multipart to 0.0.28 (3 high-sev Dependabot alerts)#221

Merged
williajm merged 3 commits into
mainfrom
fix/urllib3-cve-2026-44431
May 12, 2026
Merged

security: Bump urllib3 to 2.7.0 and python-multipart to 0.0.28 (3 high-sev Dependabot alerts)#221
williajm merged 3 commits into
mainfrom
fix/urllib3-cve-2026-44431

Conversation

@williajm
Copy link
Copy Markdown
Owner

@williajm williajm commented May 12, 2026

Resolves all 3 open high-severity Dependabot alerts on main.

Summary

  • urllib3 2.6.3 → 2.7.0 — fixes two advisories at once:
    • GHSA-qccp-gfcp-xxvc — sensitive headers (Authorization, Cookie, Proxy-Authorization) forwarded across origins in proxied low-level redirects (ProxyManager.connection_from_url().urlopen()).
    • GHSA-mf9v-mfxr-j63j — decompression-bomb safeguards bypassed in parts of the streaming API.
  • python-multipart 0.0.26 → 0.0.28 — fixes GHSA-pp6c-gr5w-3c5g: unbounded multipart part-header parsing → DoS. (0.0.27 is the patched line; 0.0.28 is the latest stable.)
  • Both packages enter only via transitive deps, so the pins are added directly in pyproject.toml alongside the existing CVE-driven pins to prevent future re-resolution from regressing the versions.
  • Lockfile regenerated without --exclude-newer to keep CI's uv sync --locked happy (same fix pattern as security: Bump authlib and python-multipart for Dependabot alerts mcp_kafka#43).

Test plan

  • CI: uv sync --all-extras --locked succeeds across Python 3.11 – 3.14
  • CI: ruff / mypy / unit / integration / E2E suites remain green
  • CI: pip-audit / CodeQL / SonarCloud / Scorecard pass

williajm and others added 3 commits May 12, 2026 20:55
GHSA-qccp-gfcp-xxvc: urllib3 prior to 2.7.0 forwards sensitive headers
(Authorization, Cookie, Proxy-Authorization) across origins when following
redirects via the low-level ProxyManager.connection_from_url().urlopen() API.

Pin urllib3>=2.7.0 directly in pyproject.toml so the constraint survives
future resolutions even though it only enters via transitive deps
(docker, requests).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previous commit regenerated the lock with --exclude-newer, which
embedded [options] exclude-newer in the lockfile. CI runs
uv sync --all-extras --locked without that flag, and uv rejected the
lock as modified (same failure mode previously hit in mcp_kafka #43).

Regenerated with UV_EXCLUDE_NEWER unset. Package versions unchanged
(urllib3 2.7.0).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…3c5g)

GHSA-pp6c-gr5w-3c5g (high): unbounded part-header parsing in python-multipart
allows a DoS via crafted multipart bodies. Fixed in 0.0.27.

Also update the urllib3 pin comment to call out GHSA-mf9v-mfxr-j63j
(decompression-bomb safeguard bypass), which is also fixed by the 2.7.0 bump
this PR already makes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@williajm williajm changed the title security: Bump urllib3 to 2.7.0 (CVE-2026-44431) security: Bump urllib3 to 2.7.0 and python-multipart to 0.0.28 (3 high-sev Dependabot alerts) May 12, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 12, 2026

🧪 Test Results for e9886b9

Summary

All tests passed!

Test Suite Status Passed Failed Skipped Duration
Unit Tests - Python 3.13 966 0 0 15s
Unit Tests - Python 3.12 966 0 0 15s
Unit Tests - Python 3.11 966 0 0 14s
Unit Tests - Python 3.14 966 0 0 15s
E2E 29 0 0 41s
Integration 5 0 0 0s

| Total | ✅ | 3898 | 0 | 0 | - |

📊 Coverage

Coverage reports are available in the workflow artifacts.

📦 Download Reports

📊 View Full Report |
📝 All Checks

@codecov
Copy link
Copy Markdown

codecov Bot commented May 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@sonarqubecloud
Copy link
Copy Markdown

@williajm williajm merged commit 29bf297 into main May 12, 2026
28 checks passed
@williajm williajm deleted the fix/urllib3-cve-2026-44431 branch May 12, 2026 20:06
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