Skip to content

Releases

0.103.16

Choose a tag to compare

@ctz ctz released this 20 Oct 08:58

Distrust a small set of intermediate certificate subject public keys due to specific security concerns around their operation.

What's Changed

  • Cargo: avoid all-features in docs.rs by @cpu in #530
  • 0.103.16: reject cert paths containing distrusted SPKIs by @cpu in #546

Full Changelog: v/0.103.14...v/0.103.16

v/0.104.0-alpha.8

v/0.104.0-alpha.8 Pre-release
Pre-release

Choose a tag to compare

@ctz ctz released this 20 Oct 09:00

Distrust a small set of intermediate certificate subject public keys due to specific security concerns around their operation.

What's Changed

  • tests: add x509-limbo coverage by @cpu in #467
  • Avoid wrapping in malformed OIDs by @djc in #478
  • der: use get() instead of check + index by @djc in #477
  • Use eq_ignore_ascii_case() instead of providing our own by @djc in #476
  • Simplify IP address matching by @djc in #475
  • fuzz: add basic parser fuzz coverage by @cpu in #479
  • tests: avoid vendored limbo.json by @cpu in #480
  • Limbo tweaks by @djc in #481
  • Bump rcgen version to match actual requirements by @djc in #483
  • der: Reject non-canonical encoding of bit strings. by @briansmith in #484
  • Expose builder-like interface for path verification by @djc in #486
  • doc: change tools.ietf.org references to official rfc-editor.org, use https by @mcr in #495
  • Correct section number for id-ce-issuingDistributionPoint by @ctz in #498
  • Test borrowed CRL hashing by @xyzzyz in #501
  • Require CRL number extension by @xyzzyz in #500
  • Enforce module import formatting by @xyzzyz in #503
  • Further commentary fixes by @ctz in #499
  • Adopt rustls nightly formatting arrangement by @ctz in #504
  • Fix CRL selection by cRLNumber and scope by @xyzzyz in #491
  • build(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #506
  • ci: sync cargo-check-external-types nightly by @cpu in #507
  • update x509-limbo to latest by @cpu in #508
  • Verify usage of keyCertSign bit in keyUsage extensions by @djc in #510
  • Require end entities to have digitalSignatures key usage by @djc in #511
  • Force intermediates and revocation to be specified by @djc in #509
  • Tighten handling of trailing input by @ctz in #512
  • build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #513
  • crl: fix clippy::question_mark finding by @cpu in #516
  • build(deps): bump the crates-io group with 3 updates by @dependabot[bot] in #518
  • update x509-limbo pin for ML-DSA test coverage by @cpu in #517
  • Bump semver compatible deps, restore Python CI by @cpu in #520
  • Small CI tidying by @cpu in #521
  • build(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #522
  • SctParser: terminate for callers which ignore errors by @ctz in #524
  • subject_name: escape names in GeneralName's Debug output by @satokan in #527
  • build(deps): bump rcgen from 0.14.8 to 0.14.9 in the crates-io group by @dependabot[bot] in #529
  • remove copyright header comments by @cpu in #534
  • update x509-limbo to latest, fix empty name constraint seq handling by @cpu in #535
  • crl: use Input length helpers by @cpu in #536
  • build(deps): bump rcgen from 0.14.9 to 0.14.10 in the crates-io group by @dependabot[bot] in #537
  • ci: fix no-std toolchain target expansion by @cpu in #541
  • build(deps): bump serde_json from 1.0.151 to 1.0.152 in the crates-io group by @dependabot[bot] in #542
  • 0.104.0-alpha.8: reject cert paths containing distrusted SPKIs by @cpu in #545

New Contributors

Full Changelog: v/0.104.0-alpha.7...v/0.104.0-alpha.8

v/0.103.15

Choose a tag to compare

@cpu cpu released this 21 Aug 16:40
v/0.103.15

Fixes docs.rs build errors.

What's Changed

  • Cargo: avoid all-features in docs.rs by @cpu in #530

Full Changelog: https://github.com/rustls/webpki/compare/v/0.103.14..v/0.103.15

v/0.103.14

Choose a tag to compare

@cpu cpu released this 21 Aug 16:45
v/0.103.14

What's Changed

  • [0.103] Support stable ML-DSA by @djc in #523
  • [0.103] Mark ML-DSA algorithms as FIPS submitted by @djc in #525

Full Changelog: v/0.103.13...v/0.103.14

0.103.13

Choose a tag to compare

@ctz ctz released this 21 Apr 10:25
  • Fix reachable panic in parsing a CRL. This was reported to us as GHSA-82j2-j2ch-gfr8. Users who don't use CRLs are not affected.
  • For name constraints on URI names, we incorrectly processed excluded subtrees in a way which inverted the desired meaning. See #471. This was a case missing in the fix for GHSA-965h-392x-2mh5.

What's Changed

  • Actually fail closed for URI matching against excluded subtrees by @djc in #473
  • Prepare 0.103.13 by @ctz in #474

Full Changelog: v/0.103.12...v/0.103.13

0.104.0-alpha.7

0.104.0-alpha.7 Pre-release
Pre-release

Choose a tag to compare

@ctz ctz released this 21 Apr 10:02
  • Fix reachable panic in parsing a CRL. This was reported to us as GHSA-82j2-j2ch-gfr8. Users who don't use CRLs are not affected.
  • For name constraints on URI names, we incorrectly processed excluded subtrees in a way which inverted the desired meaning. See #471. This was a case missing in the fix for GHSA-965h-392x-2mh5.

What's Changed

Full Changelog: v/0.104.0-alpha.6...v/0.104.0-alpha.7

0.103.12

Choose a tag to compare

@ctz ctz released this 14 Apr 09:38

This release fixes two bugs in name constraint enforcement:

  • GHSA-965h-392x-2mh5: name constraints for URI names were ignored and therefore accepted. URI name constraints are now rejected unconditionally. Note this library does not provide an API for asserting URI names, and URI name constraints are otherwise not implemented.
  • GHSA-xgp8-3hg3-c2mh: permitted subtree name constraints for DNS names were accepted for certificates asserting a wildcard name. This was incorrect because, given a name constraint of accept.example.com, *.example.com could feasibly allow a name of reject.example.com which is outside the constraint. This is very similar to CVE-2025-61727.

Since name constraints are restrictions on otherwise properly-issued certificates, these bugs are reachable only after signature verification and require misissuance to exploit.

What's Changed

Full Changelog: v/0.103.11...v/0.103.12

0.103.11

Choose a tag to compare

@djc djc released this 10 Apr 12:49
v/0.103.11

In response to #464, we've slightly relaxed requirements for anchor_from_trust_cert() to ignore unknown extensions even if they're marked as critical. This only affects parsing a TrustAnchor from DER, for which most extensions are ignored anyway.

What's Changed

  • Backport parsing trust anchors with unknown critical extensions to 0.103 by @djc in #466

0.103.10

Choose a tag to compare

@ctz ctz released this 20 Mar 21:11

Correct selection of candidate CRLs by Distribution Point and Issuing Distribution Point. If a certificate had more than one distributionPoint, then only the first distributionPoint would be considered against each CRL's IssuingDistributionPoint distributionPoint, and then the certificate's subsequent distributionPoints would be ignored.

The impact was that correctly provided CRLs would not be consulted to check revocation. With UnknownStatusPolicy::Deny (the default) this would lead to incorrect but safe Error::UnknownRevocationStatus. With UnknownStatusPolicy::Allow this would lead to inappropriate acceptance of revoked certificates.

This vulnerability is thought to be of limited impact. This is because both the certificate and CRL are signed -- an attacker would need to compromise a trusted issuing authority to trigger this bug. An attacker with such capabilities could likely bypass revocation checking through other more impactful means (such as publishing a valid, empty CRL.)

More likely, this bug would be latent in normal use, and an attacker could leverage faulty revocation checking to continue using a revoked credential.

This vulnerability is identified by GHSA-pwjx-qhcg-rvj4. Thank you to @1seal for the report.

What's Changed

Full Changelog: v/0.103.9...v/0.103.10

0.104.0-alpha.5

0.104.0-alpha.5 Pre-release
Pre-release

Choose a tag to compare

@ctz ctz released this 20 Mar 21:19

Correct selection of candidate CRLs by Distribution Point and Issuing Distribution Point. If a certificate had more than one distributionPoint, then only the first distributionPoint would be considered against each CRL's IssuingDistributionPoint distributionPoint, and then the certificate's subsequent distributionPoints would be ignored.

The impact was that correct provided CRLs would not be consulted to check revocation. With UnknownStatusPolicy::Deny (the default) this would lead to incorrect but safe Error::UnknownRevocationStatus. With UnknownStatusPolicy::Allow this would lead to inappropriate acceptance of revoked certificates.

This vulnerability is thought to be of limited impact. This is because both the certificate and CRL are signed -- an attacker would need to compromise a trusted issuing authority to trigger this bug. An attacker with such capabilities could likely bypass revocation checking through other more impactful means (such as publishing a valid, empty CRL.)

More likely, this bug would be latent in normal use, and an attacker could leverage faulty revocation checking to continue using a revoked credential.

This vulnerability is identified by GHSA-pwjx-qhcg-rvj4. Thank you to @1seal for the report.

What's Changed

  • Take semver-compatible dependency updates by @djc in #448
  • fix rust 1.94 ambiguous panic macro warnings by @cpu in #449
  • avoid std::prelude imports by @cpu in #450
  • Take semver-compatible dependency updates by @djc in #451
  • Tweak SECURITY.md to provide guidance to sloperators by @djc in #454
  • Fix formatting by @ctz in #456
  • Take semver-compatible updates by @ctz in #459
  • Prepare 0.104.0-alpha.5 by @ctz in #457

Full Changelog: v/0.104.0-alpha.4...v/0.104.0-alpha.5