Use-after-free of a server-side SSLContext when sni_callback switches contexts
- Published
- Last modified
- Status
- published
- Known exploitation
- Not listed in CISA KEV
- Fix
- Fixed in 3.10.22, 3.11.17, 3.12.15, 3.13.16, 3.14.8, and 1 more
- Public exploit
- None on Exploit-DB
Summary
A remote, unauthenticated TLS client can make a server crash or call through a freed pointer if its sni_callback assigns a different context to SSLSocket.context (the documented way to select a certificate per server name) and nothing else keeps the original ssl.SSLContext alive. Typical cases are servers that create an SSLContext per connection or replace it while connections are open; servers that wrap their listening socket with it are not affected. Mitigation: keep a reference to every SSLContext that sets sni_callback for the lifetime of the server. TLS clients are not affected.
Affected versions
- Python Software Foundation CPython
fixed in 3.10.22; From 3.11.0 · fixed in 3.11.17; From 3.12.0 · fixed in 3.12.15; From 3.13.0 · fixed in 3.13.16; From 3.14.0 · fixed in 3.14.8; From 3.15.0a1 · fixed in 3.15.0rc3
- libpythonBitnami
fixed in 3.10.22; From 3.11.0 · fixed in 3.11.17; From 3.12.0 · fixed in 3.12.15; From 3.13.0 · fixed in 3.13.16; From 3.14.0 · fixed in 3.14.8
- pythonBitnami
fixed in 3.10.22; From 3.11.0 · fixed in 3.11.17; From 3.12.0 · fixed in 3.12.15; From 3.13.0 · fixed in 3.13.16; From 3.14.0 · fixed in 3.14.8
- python-minBitnami
fixed in 3.10.22; From 3.11.0 · fixed in 3.11.17; From 3.12.0 · fixed in 3.12.15; From 3.13.0 · fixed in 3.13.16; From 3.14.0 · fixed in 3.14.8