Summary
libsql's tls feature (which is on by default) pins hyper-rustls = "0.25". That version line only ever depended on rustls 0.22, which in turn requires rustls-webpki ^0.102. Because 0.102.8 is the last release in the 0.102 line, and the relevant fixes only landed in 0.103.10 / 0.103.12 / 0.103.13, every downstream consumer of libsql inherits four rustls-webpki advisories with no reachable fix.
The chain
libsql 0.9.30 (tls, default)
-> hyper-rustls 0.25.0 (only 0.25.x release)
-> rustls 0.22.4 (last 0.22.x release)
-> rustls-webpki ^0.102 -> 0.102.8 (last 0.102.x release)
Every link is already at its ceiling, so no cargo update can resolve this.
Advisories inherited
To be clear about impact: we assessed the two CRL ones as not reachable through libsql, since rustls only parses CRLs when they're explicitly supplied via with_crls(), and neither libsql nor hyper-rustls 0.25 ever does. So this is primarily a dependency-hygiene / compliance problem rather than an exploitable one — but it still surfaces as an unresolvable high-severity Dependabot alert in every downstream repo, which is painful for anyone under SOC2-style "no open highs" policies. We ended up having to dismiss them with written justification.
Why it isn't a one-line bump
hyper-rustls moved to rustls 0.23 (and thus webpki 0.103) in 0.26, but 0.26+ also requires hyper 1.x. libsql is still on hyper = "0.14":
https://github.com/tursodatabase/libsql/blob/main/libsql/Cargo.toml#L20-L21
So closing this properly means a hyper 0.14 → 1.x migration for the remote/sync HTTP client. Confirmed still present on main, and on 0.10.0-pre.4.
Possible options, roughly in order of effort
- Migrate to hyper 1.x + hyper-rustls 0.27. The real fix; also unblocks a lot of other modernization.
- Swap the TLS stack for
rustls 0.23 directly behind libsql's own connector, decoupling from hyper-rustls' hyper requirement.
- Interim mitigation — drop
tls from default. Consumers that only use local databases (Builder::new_local) currently pull the whole rustls 0.22 stack for nothing. Notably tls is already independent: remote, sync, and replication do not depend on it, so making it opt-in would be a small change that lets local-only users escape these advisories entirely. It is technically a breaking change for anyone relying on defaults for remote TLS, so it'd want a minor-version note.
Happy to put up a PR for (3) if that's a direction you'd accept — it's the one that would unblock downstream consumers soonest. (1) looks like it needs a maintainer to scope.
Environment
- libsql 0.9.30 (also verified against
main and 0.10.0-pre.4)
- Discovered via Dependabot on a downstream Rust project that uses libsql only through
Builder::new_local
Summary
libsql'stlsfeature (which is on by default) pinshyper-rustls = "0.25". That version line only ever depended onrustls0.22, which in turn requiresrustls-webpki ^0.102. Because 0.102.8 is the last release in the 0.102 line, and the relevant fixes only landed in 0.103.10 / 0.103.12 / 0.103.13, every downstream consumer of libsql inherits fourrustls-webpkiadvisories with no reachable fix.The chain
Every link is already at its ceiling, so no
cargo updatecan resolve this.Advisories inherited
To be clear about impact: we assessed the two CRL ones as not reachable through libsql, since
rustlsonly parses CRLs when they're explicitly supplied viawith_crls(), and neither libsql nor hyper-rustls 0.25 ever does. So this is primarily a dependency-hygiene / compliance problem rather than an exploitable one — but it still surfaces as an unresolvable high-severity Dependabot alert in every downstream repo, which is painful for anyone under SOC2-style "no open highs" policies. We ended up having to dismiss them with written justification.Why it isn't a one-line bump
hyper-rustlsmoved torustls0.23 (and thus webpki 0.103) in 0.26, but 0.26+ also requires hyper 1.x. libsql is still onhyper = "0.14":https://github.com/tursodatabase/libsql/blob/main/libsql/Cargo.toml#L20-L21
So closing this properly means a hyper 0.14 → 1.x migration for the remote/sync HTTP client. Confirmed still present on
main, and on0.10.0-pre.4.Possible options, roughly in order of effort
rustls0.23 directly behind libsql's own connector, decoupling from hyper-rustls' hyper requirement.tlsfromdefault. Consumers that only use local databases (Builder::new_local) currently pull the whole rustls 0.22 stack for nothing. Notablytlsis already independent:remote,sync, andreplicationdo not depend on it, so making it opt-in would be a small change that lets local-only users escape these advisories entirely. It is technically a breaking change for anyone relying on defaults for remote TLS, so it'd want a minor-version note.Happy to put up a PR for (3) if that's a direction you'd accept — it's the one that would unblock downstream consumers soonest. (1) looks like it needs a maintainer to scope.
Environment
mainand0.10.0-pre.4)Builder::new_local