Executive brief
rustls-webpki is a Rust library used to validate X.509 certificates and certificate revocation lists (CRLs) in TLS applications. A flaw in its BIT STRING parsing causes the application to crash (denial of service) when processing a specially crafted CRL, but only if the application has explicitly enabled CRL revocation checking. The default configuration is unaffected.
Technical details
The vulnerability is an integer underflow in the bit_string_flags() function in src/der.rs when parsing named-bit BIT STRINGs. The input validation guard fails to reject a BIT STRING with content [0x00] (zero padding bits, no data bytes), causing raw_bits.len() - 1 to underflow to usize::MAX, followed by an out-of-bounds index access that panics. The flaw is reachable via the public API BorrowedCertRevocationList::from_der() when a CRL contains an issuingDistributionPoint extension with an onlySomeReasons value matching this pattern. Exploitation requires an application that explicitly passes RevocationOptions to verify_for_usage() and parses CRL bytes from an attacker-controlled source (e.g., via a custom Certificate Distribution Point URL or local network attack). A single malformed 103-byte CRL causes denial of service. Fixed in versions 0.103.13 and 0.104.0-alpha.7.
Affected products
- rustls webpki through 0.103.12 and 0.104.0-alpha releases before 0.104.0-alpha.7
Timeline
- 2026-04-21: disclosed
- 2026-04-21: patched: Fixed in 0.103.13 and 0.104.0-alpha.7
- 2026-09-18: advisory