Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
AC:H because a man-in-the-middle position is required; PR:N/UI:N as no auth or victim action is needed; C:H/I:H for exposed credentials/contents and message tampering, A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4Blast Radius
ecosystem impact- 19 cargo packages depend on lettre (15 direct, 4 indirect)
Ecosystem-wide dependent count for version 0.10.1.
DescriptionCVE.org
lettre is a a mailer library for Rust. Starting in version 0.10.1 and prior to version 0.11.22, an inverted-boolean bug in lettre's boring-tls integration silently disables TLS hostname verification for callers using the default (strict) configuration. An on-path attacker presenting any chain-valid certificate for any domain can intercept SMTP submission, including PLAIN/LOGIN credentials and message contents, against any lettre user built with the boring-tls feature. Other TLS backends (native-tls, rustls) are unaffected. Version 0.11.22 patches the issue.
AnalysisAI
TLS hostname verification bypass in the lettre Rust mailer library (0.10.1 through 0.11.21) exposes users of the boring-tls feature to man-in-the-middle attacks; an inverted boolean caused the default strict configuration to silently disable hostname checking. An on-path attacker holding any chain-valid certificate for any domain can transparently intercept SMTP submission, harvesting PLAIN/LOGIN credentials and full message contents. There is no public exploit identified at time of analysis, but the one-line root cause is visible in the public fix commit, making the flaw trivially understandable; native-tls and rustls backends are not affected.
Technical ContextAI
lettre is the de-facto SMTP client library for the Rust ecosystem, and this issue lives in its optional boring-tls backend (an integration with Google's BoringSSL via the boring crate). The root cause is CWE-295 (Improper Certificate Validation): in both the sync (net.rs) and async (async_net.rs) transports, the code passed the user's accept_invalid_hostnames flag directly into set_verify_hostname()/verify_hostname() instead of its negation. Because the boring API expects a 'verify hostname' boolean, feeding it the 'accept invalid hostnames' value inverted the meaning - with the default accept_invalid_hostnames=false, verification was set to false, disabling the check entirely while callers believed they were in strict mode. Certificate chain validation still occurred, so only the hostname-to-certificate binding was broken, which is precisely what lets any valid-but-mismatched certificate pass.
RemediationAI
Vendor-released patch: 0.11.22 - upgrade the lettre dependency to >= 0.11.22 (release: https://github.com/lettre/lettre/releases/tag/v0.11.22, fix commit f5efffc88360dbdbfcef80f465e42d5bce68ca35). This is the correct and complete remediation and should be applied by anyone using the boring-tls feature. As an interim measure until you can upgrade, switch the TLS backend to rustls or native-tls, which are unaffected - the trade-off is a dependency/feature change and a rebuild rather than a code change. If neither is possible immediately, restrict SMTP submission to trusted network paths (e.g., a fixed relay reachable only over a VPN or private link) so that no on-path attacker can interpose; this reduces exposure but does not restore hostname verification and adds operational/network constraints. Do not rely on rotating credentials alone, since message contents are also exposed. Advisory: https://github.com/lettre/lettre/security/advisories/GHSA-4pj9-g833-qx53.
An issue was discovered in the lettre crate before 0.9.6 for Rust. Rated critical severity (CVSS 9.8), this vulnerabilit
The lettre library through 0.10.0-alpha for Rust allows arbitrary sendmail option injection via transport/sendmail/mod.r
Same weakness CWE-295 – Improper Certificate Validation
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45982
GHSA-4pj9-g833-qx53