libcurl lets applications specify which specific TLS ciphers to use in
transfers, using the option called CURLOPT_SSL_CIPHER_LIST
. The cipher
selection is used for the TLS negotiation when a transfer is done involving
any of the TLS based transfer protocols libcurl supports, such as HTTPS, FTPS,
IMAPS, POP3S, SMTPS etc.
Due to a mistake in the code, the selected cipher set was stored in a single "static" variable in the library, which has the surprising side-effect that if an application sets up multiple concurrent transfers, the last one that sets the ciphers accidentally controls the set used by all transfers. In a worst-case scenario, this weakens transport security significantly.
{ "CWE": { "id": "CWE-488", "desc": "Exposure of Data Element to Wrong Session" }, "award": { "amount": "800", "currency": "USD" }, "URL": "https://curl.se/docs/CVE-2021-22897.json", "affects": "both", "package": "curl", "severity": "Low", "issue": "https://hackerone.com/reports/1172857", "www": "https://curl.se/docs/CVE-2021-22897.html", "last_affected": "7.76.1" }