Skip to content

fix(deps): override clerk-backend-api cap to clear cryptography CVEs (CI run #13) - #159

Draft
Sbussiso wants to merge 1 commit into
masterfrom
ci-fix/31367891577
Draft

fix(deps): override clerk-backend-api cap to clear cryptography CVEs (CI run #13)#159
Sbussiso wants to merge 1 commit into
masterfrom
ci-fix/31367891577

Conversation

@Sbussiso

Copy link
Copy Markdown
Contributor

Root cause

Weekly dependency refresh run #13 (31367891577) failed at the pip-audit --strict gate:

Found 3 known vulnerabilities in 1 package
Name         Version ID              Fix Versions
------------ ------- --------------- ------------
cryptography 48.0.1  PYSEC-2026-3552 50.0.0
cryptography 48.0.1  PYSEC-2026-3553 49.0.0
cryptography 48.0.1  PYSEC-2026-3554 49.0.0

Three CVEs in cryptography 48.0.1, all disclosed since the last green refresh:

ID CVE Summary Fixed in
PYSEC-2026-3552 CVE-2026-69247 PKCS#7 EnvelopedData Bleichenbacher oracle (distinguishable errors/timing) 50.0.0
PYSEC-2026-3553 CVE-2026-69249 Duplicate self-signed intermediates → exponential path-building (DoS) 49.0.0
PYSEC-2026-3554 CVE-2026-69248 Verifier accepts wildcard DNS names escaping permittedSubtrees 49.0.0

Why a plain lock refresh could not fix it

The existing constraint cryptography>=48.0.1 is a floor, not a cap, so uv lock --upgrade should have pulled a newer version — but it stayed pinned at 48.0.1. Root cause: clerk-backend-api 6.0.1 (the latest release on PyPI) declares cryptography<49.0.0,>=45.0.0, and uv respects that transitive upper bound. There is no newer clerk-backend-api release. So the fix versions (49.0.0 / 50.0.0) are unreachable through normal resolution.

Fix

Add a tool.uv.override-dependencies entry forcing cryptography>=50.0.0 past clerk-backend-api's cap. uv's override mechanism is the sanctioned way to ignore a transitive constraint that blocks a security fix.

cryptography is purely transitive in this backend — there are no direct cryptography imports. The backend uses PyJWT + clerk-backend-api for JWT/JWS verification, not the x509/PKCS#7 or certificate-path-building code paths these CVEs target, so the override carries no behavioral risk.

Verification (parity with the weekly workflow's gates)

Ran locally against the patched lock:

Gate Result
uv lock --upgrade cryptography → 50.0.0
uv run ruff check ✅ All checks passed
uv run pip-audit --strict ✅ No known vulnerabilities found
uv run pytest -q ✅ 699 passed

Cleanup note

Remove the override-dependencies block and the cryptography>=48.0.1 constraint floor once clerk-backend-api ships a release that allows cryptography>=49.0.0. Both are documented inline in backend/pyproject.toml.

Draft until CI on this branch confirms the fix reproduces green in GitHub Actions.

Weekly dependency refresh run #13 (31367891577) failed at the
'pip-audit --strict' gate: cryptography 48.0.1 has three advisories
that landed since the last green refresh:

  PYSEC-2026-3552 / CVE-2026-69247 — PKCS#7 EnvelopedData Bleichenbacher
    oracle (fixed in 50.0.0)
  PYSEC-2026-3553 / CVE-2026-69249 — duplicate self-signed intermediates
    cause exponential path-building (fixed in 49.0.0)
  PYSEC-2026-3554 / CVE-2026-69248 — verifier accepts wildcard DNS names
    escaping permittedSubtrees (fixed in 49.0.0)

The constraint floor 'cryptography>=48.0.1' can't reach the fix versions
because clerk-backend-api 6.0.1 (the latest release) declares
'cryptography<49.0.0,>=45.0.0', and uv respects that transitive cap.
No newer clerk-backend-api exists. Add an 'override-dependencies' entry
forcing cryptography>=50.0.0 past the cap.

Verified locally (parity with the weekly workflow's gates):
  - uv lock --upgrade      -> cryptography 50.0.0
  - ruff check             -> All checks passed
  - pip-audit --strict     -> No known vulnerabilities found
  - pytest -q              -> 699 passed

cryptography is purely transitive here (the backend uses PyJWT +
clerk-backend-api for JWT/JWS, not cryptography's x509/PKCS#7 paths
the CVEs target), so the override carries no behavioral risk. Remove
the override + floor once clerk-backend-api ships a release allowing
cryptography>=49.0.0.
Sbussiso referenced this pull request Aug 10, 2026
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.4 to 10.8.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v9.39.4...v10.8.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.8.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
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