# CVE-2026-93599: rustls-webpki before 0.103.13 Panic via empty BIT STRING

> A crafted CRL causes a panic in rustls-webpki when CRL revocation checking is enabled, leading to denial of service.

- **Severity:** High 8.7 (`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 18 Sep 2026
- **Updated:** 18 Sep 2026
- **Also known as:** AZL-103469, AZL-103494, AZL-103506, AZL-103518, CLEANSTART-2026-YH54406, DEBIAN-CVE-2026-93599, GHSA-82j2-j2ch-gfr8, GHSA-g42g-9vm4-7gfj, MINI-2p6c-7394-5rpw, MINI-376x-84mg-g8c4, MINI-47rc-vpv4-r58r, MINI-4r8p-vvhj-8845, MINI-59cg-pqc9-mxr5, MINI-756h-jxwg-gp29, MINI-7856-2jwx-326j, MINI-7j9f-833g-32gc, MINI-8239-vxj6-q428, MINI-928m-f545-w7fc, MINI-9cxg-655j-c76x, MINI-f2fc-pp9j-xx84, MINI-g7hr-3wr2-w95g, MINI-gf4r-hrr2-7jgq, MINI-hgf2-x2p5-2m6j, MINI-hh4c-hf8m-r62f, MINI-j6hf-7v84-g345, MINI-m3jp-fcjj-5g8h, MINI-pfgg-px3x-hmr8, MINI-ph53-8jcq-g5q7, MINI-q6xg-7m3v-992w, MINI-qg93-c783-w66x, MINI-rhj4-597r-867r, MINI-v3vx-m524-2jmm, RHSA-2026:57200, RHSA-2026:66076, RUSTSEC-2026-0104, UBUNTU-CVE-2026-93599, openSUSE-SU-2026:11861-1, openSUSE-SU-2026:11976-1, openSUSE-SU-2026:12161-1

## What is CVE-2026-93599?

CVE-2026-93599 is a high-severity denial of service vulnerability in rustls webpki, published on 18 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

rustls-webpki through 0.103.12 (and 0.104.0-alpha releases before 0.104.0-alpha.7) contains a reachable panic in bit_string_flags() in src/der.rs. The input guard fails to reject a named-bit BIT STRING whose content is exactly [0x00] (zero padding bits and no data bytes), so raw_bits.len() - 1 underflows on the empty slice and the subsequent index operation panics (subtract-with-overflow in debug, index-out-of-bounds in release). The condition is reachable through the public API BorrowedCertRevocationList::from_der() when a CRL contains an issuingDistributionPoint extension with such an onlySomeReasons value. Exploitation requires an application that explicitly opts in to CRL revocation checking by passing RevocationOptions to verify_for_usage() and that parses CRL bytes obtained from a source the attacker can influence; the default rustls configuration, which does not use RevocationOptions, is unaffected. A crafted CRL causes a denial of service via the panic. Fixed in 0.103.13 and 0.104.0-alpha.7.

Weakness: CWE-191 (Integer Underflow (Wrap or Wraparound))

## Which versions are affected by CVE-2026-93599?

5 open source packages ship an affected version, including rustls-webpki.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `rustls-webpki` | crates.io | All versions | 0.103.13 |
| `rustls-webpki` | crates.io | All versions | 0.103.13 |
| `rustls-webpki` | crates.io | From 0.0.0-0 | 0.103.13, 0.104.0-alpha.7 |
| `rustls-webpki` | crates.io | From 0.104.0-alpha.1 | 0.104.0-alpha.7 |
| `rustls-webpki` | crates.io | From 0.104.0-alpha.1 | 0.104.0-alpha.7 |
| `cargo` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `clippy` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `netavark` | Red Hat:hummingbird:1 | All versions | 0:2.1.0-1.hum1 |
| `netavark-tests` | Red Hat:hummingbird:1 | All versions | 0:2.1.0-1.hum1 |
| `rust` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-analyzer` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-debugger-common` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-doc` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-gdb` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-lldb` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-src` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-aarch64-unknown-none-softfloat` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-aarch64-unknown-uefi` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-i686-pc-windows-gnu` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-wasm32-unknown-unknown` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-wasm32-wasip1` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-x86_64-pc-windows-gnu` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-x86_64-unknown-none` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rust-std-static-x86_64-unknown-uefi` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `rustfmt` | Red Hat:hummingbird:1 | All versions | 0:1.98.1-1.hum1 |
| `aws-nitro-enclaves-cli` | openSUSE:Tumbleweed | All versions | 1.5.2~git0.1c496ed-1.1 |
| `obs-service-cargo` | openSUSE:Tumbleweed | All versions | 7.2.2-3.1 |
| `shadowsocks-rust` | openSUSE:Tumbleweed | All versions | 1.25.0-2.1 |

## How do I fix CVE-2026-93599?

Upgrade rustls-webpki to a fixed version for your release line: 0.103.13 or 0.104.0-alpha.7.

## Is CVE-2026-93599 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-93599 exists.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-93599 and fix it if it is affected.

What it is: CVE-2026-93599 is a high-severity denial of service vulnerability in rustls webpki, published on 18 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-93599 exists.

Affected packages and fixed versions:
- rustls-webpki (crates.io): affected all versions; fixed in 0.103.13
- rustls-webpki (crates.io): affected all versions; fixed in 0.103.13
- rustls-webpki (crates.io): affected from 0.0.0-0; fixed in 0.103.13, 0.104.0-alpha.7
- rustls-webpki (crates.io): affected from 0.104.0-alpha.1; fixed in 0.104.0-alpha.7
- rustls-webpki (crates.io): affected from 0.104.0-alpha.1; fixed in 0.104.0-alpha.7

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-93599/ (Markdown: https://insights.sbomify.com/CVE-2026-93599/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-93599
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-93599
- OSV: https://osv.dev/vulnerability/CVE-2026-93599

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-93599/
Summaries are generated and may contain mistakes; the official description above is the record.
