Skip to content

chore(deps): update dependency cryptography to v46 [security]#21

Open
renovate[bot] wants to merge 1 commit intodevelopfrom
renovate/pypi-cryptography-vulnerability
Open

chore(deps): update dependency cryptography to v46 [security]#21
renovate[bot] wants to merge 1 commit intodevelopfrom
renovate/pypi-cryptography-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Nov 5, 2025

This PR contains the following updates:

Package Change Age Confidence
cryptography (changelog) 44.0.046.0.6 age confidence

GitHub Vulnerability Alerts

CVE-2024-12797

pyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 42.0.0-44.0.0 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20250211.txt.

If you are building cryptography source ("sdist") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) need to update their cryptography versions.

CVE-2026-26007

Vulnerability Summary

The public_key_from_numbers (or EllipticCurvePublicNumbers.public_key()), EllipticCurvePublicNumbers.public_key(), load_der_public_key() and load_pem_public_key() functions do not verify that the point belongs to the expected prime-order subgroup of the curve.

This missing validation allows an attacker to provide a public key point P from a small-order subgroup. This can lead to security issues in various situations, such as the most commonly used signature verification (ECDSA) and shared key negotiation (ECDH). When the victim computes the shared secret as S = [victim_private_key]P via ECDH, this leaks information about victim_private_key mod (small_subgroup_order). For curves with cofactor > 1, this reveals the least significant bits of the private key. When these weak public keys are used in ECDSA , it's easy to forge signatures on the small subgroup.

Only SECT curves are impacted by this.

Credit

This vulnerability was discovered by:

  • XlabAI Team of Tencent Xuanwu Lab
  • Atuin Automated Vulnerability Discovery Engine

CVE-2026-34073

Summary

In versions of cryptography prior to 46.0.5, DNS name constraints were only validated against SANs within child certificates, and not the "peer name" presented during each validation. Consequently, cryptography would allow a peer named bar.example.com to validate against a wildcard leaf certificate for *.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint for bar.example.com.

This behavior resulted from a gap between RFC 5280 (which defines Name Constraint semantics) and RFC 9525 (which defines service identity semantics): put together, neither states definitively whether Name Constraints should be applied to peer names. To close this gap, cryptography now conservatively rejects any validation where the peer name would be rejected by a name constraint if it were a SAN instead.

In practice, exploitation of this bypass requires an uncommon X.509 topology, one that the Web PKI avoids because it exhibits these kinds of problems. Consequently, we consider this a medium-to-low impact severity.

See CVE-2025-61727 for a similar bypass in Go's crypto/x509.

Remediation

Users should upgrade to 46.0.6 or newer.

Attribution

Reporter: @​1seal


Release Notes

pyca/cryptography (cryptography)

v46.0.6

Compare Source

v46.0.5

Compare Source

v46.0.4

Compare Source

v46.0.3

Compare Source

v46.0.2

Compare Source

v46.0.1

Compare Source

v46.0.0

Compare Source

v45.0.7

Compare Source

v45.0.6

Compare Source

v45.0.5

Compare Source

v45.0.4

Compare Source

v45.0.3

Compare Source

v45.0.2

Compare Source

v45.0.1

Compare Source

v45.0.0

Compare Source

v44.0.3

Compare Source

v44.0.2

Compare Source

v44.0.1

Compare Source


Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch 2 times, most recently from aba2655 to cbc57a2 Compare January 22, 2026 00:14
@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch from cbc57a2 to 5f49909 Compare February 11, 2026 05:15
@renovate renovate bot changed the title fix(deps): update dependency cryptography to <44.0.2,>=44.0.1 [security] fix(deps): update dependency cryptography to v46 [security] Feb 11, 2026
@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch from 5f49909 to 5587f1e Compare March 13, 2026 11:43
NiklasRosenstein added a commit that referenced this pull request Mar 15, 2026
## Summary

This PR wires up fully-automatic maintenance for the repo so that open
security PRs merge themselves and a new PyPI release follows
automatically.

### 1. `renovate.json` — automerge for Renovate PRs

- **Security updates** (`matchCategories: ["security"]`): automerged
immediately with highest priority. This will finally close the 4
long-standing security PRs (#21, #24, #25, #27).
- **Minor/patch updates**: automerged after a 3-day stabilisation period
(grouped).
- `platformAutomerge: true` — uses GitHub's native auto-merge so it
respects branch protection rules.
- Adds a `dependencies` label to all Renovate PRs for easy filtering.

### 2. `pyproject.toml` — loosen overly tight dependency pins

The previous constraints had patch-level upper bounds that directly
blocked the open Renovate PRs:

| Dep | Before | After |
|---|---|---|
| `cryptography` | `>=44.0.0,<44.0.1` | `>=44.0.0` |
| `urllib3` | `>=2.6.3,<2.6.4` | `>=2.6.3` |

`PyJWT<3.0.0` and `requests<3.0.0` are intentional major-version guards
and are left as-is.

### 3. `.github/workflows/auto-release.yml` — automatic version tagging

After the existing **Python CI** workflow passes on `develop`, this
workflow:

**Path A — unreleased commits exist (e.g. after Renovate PRs merge):**
1. Auto-bumps the patch version in `pyproject.toml` and `__init__.py`
2. Generates a `.changelog/<new_version>.toml` entry summarising the
merged commits
3. Pushes the commit + tag → triggers `release.yml` → publishes to PyPI

**Path B — version was manually bumped in a PR:**
1. Checks that a `.changelog/<version>.toml` entry exists
2. If so, tags the version → triggers `release.yml`

> **Note:** The auto-release commit is pushed with a `RELEASE_TOKEN`
secret (falls back to `GITHUB_TOKEN`). For the tag push to trigger
`release.yml`, a PAT stored as `RELEASE_TOKEN` is needed (pushes via
`GITHUB_TOKEN` do not trigger further workflows). If you don't have one
set up, you can add a fine-grained PAT with `contents: write` scope.

## Test plan

- [ ] Merge this PR
- [ ] Verify Renovate re-evaluates the open security PRs and enables
auto-merge on them
- [ ] Confirm that once a security PR merges and CI passes,
`auto-release.yml` runs and a new patch tag appears
- [ ] Confirm `release.yml` picks up the tag and publishes to PyPI

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch from 5587f1e to 6d19dd4 Compare March 15, 2026 15:13
@renovate renovate bot changed the title fix(deps): update dependency cryptography to v46 [security] chore(deps): update dependency cryptography to v46 [security] Mar 15, 2026
@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch from 6d19dd4 to 2172517 Compare March 15, 2026 15:15
@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch from 2172517 to c64c9c6 Compare March 26, 2026 22:17
@renovate renovate bot changed the title chore(deps): update dependency cryptography to v46 [security] chore(deps): update dependency cryptography to v46 [security] - autoclosed Mar 27, 2026
@renovate renovate bot closed this Mar 27, 2026
@renovate renovate bot deleted the renovate/pypi-cryptography-vulnerability branch March 27, 2026 01:41
@renovate renovate bot changed the title chore(deps): update dependency cryptography to v46 [security] - autoclosed chore(deps): update dependency cryptography to v46 [security] Mar 28, 2026
@renovate renovate bot reopened this Mar 28, 2026
@renovate renovate bot force-pushed the renovate/pypi-cryptography-vulnerability branch from c64c9c6 to 53a2c06 Compare March 28, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants