CVE-2024-5535

CRITICALNVD 9.19.1
EchelonGraph scoreMEDIUM confidence

Score 9.1 from GitHub Security Advisory (severity: CRITICAL) published 2024-06-27. NVD baseline CVSS 9.1; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
Elevated
9.1
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS: 6%CVSS: 9.1Exploit: NoneExposed: 0

A fix is available — apply it.

Issue summary: Calling the OpenSSL API function SSL_select_next_proto with an empty supported client protocols buffer may cause a crash or memory contents to be sent to the peer.

Impact summary: A buffer overread can have a range of potential consequences such as unexpected application beahviour or a crash. In particular this issue could result in up to 255 bytes of arbitrary private data from memory being sent to the peer leading to a loss of confidentiality. However, only applications that directly call the SSL_select_next_proto function with a 0 length list of supported client protocols are affected by this issue. This would normally never be a valid scenario and is typically not under attacker control but may occur by accident in the case of a configuration or programming error in the calling application.

The OpenSSL API function SSL_select_next_proto is typically used by TLS applications that support ALPN (Application Layer Protocol Negotiation) or NPN (Next Protocol Negotiation). NPN is older, was never standardised and is deprecated in favour of ALPN. We believe that ALPN is significantly more widely deployed than NPN. The SSL_select_next_proto function accepts a list of protocols from the server and a list of protocols from the client and returns the first protocol that appears in the server list that also appears in the client list. In the case of no overlap between the two lists it returns the first item in the client list. In either case it will signal whether an overlap between the two lists was found. In the case where SSL_select_next_proto is called with a zero length client list it fails to notice this condition and returns the memory immediately following the client list pointer (and reports that there was no overlap in the lists).

This function is typically called from a server side application callback for ALPN or a client side application callback for NPN. In the case of ALPN the list of protocols supplied by the client is guaranteed by libssl to never be zero in length. The list of server protocols comes from the application and should never normally be expected to be of zero length. In this case if the SSL_select_next_proto function has been called as expected (with the list supplied by the client passed in the client/client_len parameters), then the application will not be vulnerable to this issue. If the application has accidentally been configured with a zero length server list, and has accidentally passed that zero length server list in the client/client_len parameters, and has additionally failed to correctly handle a "no overlap" response (which would normally result in a handshake failure in ALPN) then it will be vulnerable to this problem.

In the case of NPN, the protocol permits the client to opportunistically select a protocol when there is no overlap. OpenSSL returns the first client protocol in the no overlap case in support of this. The list of client protocols comes from the application and should never normally be expected to be of zero length. However if the SSL_select_next_proto function is accidentally called with a client_len of 0 then an invalid memory pointer will be returned instead. If the application uses this output as the opportunistic protocol then the loss of confidentiality will occur.

This issue has been assessed as Low severity because applications are most likely to be vulnerable if they are using NPN instead of ALPN - but NPN is not widely used. It also requires an application configuration or programming error. Finally, this issue would not typically be under attacker control making active exploitation unlikely.

The FIPS modules in 3.3, 3.2, 3.1 and 3.0 are not affected by this issue.

Due to the low severity of this issue we are not issuing new releases of OpenSSL at this time. The fix will be included in the next releases when they become available.

CVSS v3
9.1
EG Score
9.1(medium)
EPSS
92.0%
KEV
Not listed

Published

June 27, 2024

Last Modified

May 12, 2026

Advisory Details (10)

Auto-updated May 12, 2026
No patch confirmed yet.
generic

oss-security - Re: feedback requested regarding deprecation of TLS 1.0/1.1

http://www.openwall.com/lists/oss-security/2024/08/15/1
generic

oss-security - Fwd: [Security-announce][CVE-2024-5642] Buffer over-read in SSLContext.set_npn_protocols() for Python 3.9 and earlier

http://www.openwall.com/lists/oss-security/2024/06/28/4
generic

oss-security - CVE-2024-5535: OpenSSL: SSL_select_next_proto buffer overread

http://www.openwall.com/lists/oss-security/2024/06/27/1
generic

Fix SSL_select_next_proto · openssl/openssl@e86ac43 · GitHub

https://github.com/openssl/openssl/commit/e86ac436f0bd54d4517745483e2315650fae7b2c
generic

Fix SSL_select_next_proto · openssl/openssl@cf6f91f · GitHub

https://github.com/openssl/openssl/commit/cf6f91f6121f4db167405db2f0de410a456f260c
generic

Fix SSL_select_next_proto · openssl/openssl@99fb785 · GitHub

https://github.com/openssl/openssl/commit/99fb785a5f85315b95288921a321a935ea29a51e
generic

Fix SSL_select_next_proto · openssl/openssl@4ada436 · GitHub

https://github.com/openssl/openssl/commit/4ada436a1946cbb24db5ab4ca082b69c1bc10f37

Patch Availability(9)

Vendor / EcosystemFixed in / PatchReleasedSource
ubuntuqemu-efi-riscv64 (2025.02-3ubuntu2.2) @ plucky2026-05-22ubuntu
ubuntuopenssl (3.0.13-0ubuntu3.2) @ noble2026-05-22ubuntu
redhatopenssl-1:3.0.7-29.el9_42025-04-08redhat
redhatjbcs-httpd24-openssl-1:1.1.1k-19.el7jbcs2025-04-02redhat
redhatopenssl2025-04-02redhat
redhatmysql:8.0-8100020250212154709.489197e62025-02-19redhat
redhatmysql-0:8.0.41-2.el9_52025-02-19redhat
redhatopenssl-1:3.2.2-6.el9_52024-11-12redhat
redhatopenssl-1:1.1.1k-14.el8_62024-10-09redhat

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Weakness Classification(1)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Additional Vendor Advisories

(3)

Vendors that published advisories for this CVE beyond the curated set above. Broader coverage but minimal per-row detail — click through for the original advisory.

Data Freshness Timeline

(refreshed 8× in last 7d / 41× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

Showing the most recent 100 of 106 total refreshes for this CVE.

  1. 2026-07-18 10:03 UTCEPSS rescore
  2. 2026-07-16 17:02 UTCEPSS rescore
  3. 2026-07-15 16:57 UTCEPSS rescore
  4. 2026-07-15 01:59 UTCEPSS rescore
  5. 2026-07-15 01:59 UTCEPSS rescore
  6. 2026-07-13 22:29 UTCEPSS rescore
  7. 2026-07-13 06:12 UTCEPSS rescore
  8. 2026-07-12 05:45 UTCEPSS rescore
  9. 2026-07-11 08:26 UTCEPSS rescore
  10. 2026-07-11 04:11 UTCOSV refresh
  11. 2026-07-09 19:09 UTCEPSS rescore
  12. 2026-07-09 19:09 UTCEPSS rescore
  13. 2026-07-08 15:14 UTCEPSS rescore
  14. 2026-07-06 16:26 UTCEPSS rescore
  15. 2026-07-06 16:26 UTCEPSS rescore
  16. 2026-07-06 02:22 UTCEPSS rescore
  17. 2026-07-05 02:29 UTCEPSS rescore
  18. 2026-07-04 06:30 UTCEPSS rescore
  19. 2026-07-04 06:30 UTCEPSS rescore
  20. 2026-07-01 15:06 UTCEPSS rescore
  21. 2026-06-30 23:21 UTCEPSS rescore
  22. 2026-06-30 23:21 UTCEPSS rescore
  23. 2026-06-29 14:05 UTCEPSS rescore
  24. 2026-06-28 14:07 UTCEPSS rescore
  25. 2026-06-28 04:55 UTCEPSS rescore
Show 75 more
  1. 2026-06-28 04:55 UTCEPSS rescore
  2. 2026-06-27 03:08 UTCEPSS rescore
  3. 2026-06-27 03:07 UTCEPSS rescore
  4. 2026-06-25 13:49 UTCEPSS rescore
  5. 2026-06-25 13:49 UTCEPSS rescore
  6. 2026-06-24 14:04 UTCEPSS rescore
  7. 2026-06-24 14:04 UTCEPSS rescore
  8. 2026-06-23 21:32 UTCEPSS rescore
  9. 2026-06-22 14:25 UTCEPSS rescore
  10. 2026-06-22 14:25 UTCEPSS rescore
  11. 2026-06-22 11:04 UTCOSV refresh
  12. 2026-06-21 14:56 UTCEPSS rescore
  13. 2026-06-21 14:56 UTCEPSS rescore
  14. 2026-06-21 01:59 UTCEPSS rescore
  15. 2026-06-19 19:25 UTCEPSS rescore
  16. 2026-06-19 19:25 UTCEPSS rescore
  17. 2026-06-18 17:52 UTCEPSS rescore
  18. 2026-06-18 17:52 UTCEPSS rescore
  19. 2026-06-17 17:52 UTCEPSS rescore
  20. 2026-06-16 17:52 UTCEPSS rescore
  21. 2026-06-15 17:48 UTCEPSS rescore
  22. 2026-06-14 23:17 UTCEPSS rescore
  23. 2026-06-13 22:59 UTCEPSS rescore
  24. 2026-06-13 22:59 UTCEPSS rescore
  25. 2026-06-12 23:11 UTCEPSS rescore
  26. 2026-06-12 23:11 UTCEPSS rescore
  27. 2026-06-11 13:59 UTCEPSS rescore
  28. 2026-06-11 13:59 UTCEPSS rescore
  29. 2026-06-10 22:18 UTCEPSS rescore
  30. 2026-06-10 22:18 UTCEPSS rescore
  31. 2026-06-10 13:21 UTCEPSS rescore
  32. 2026-06-08 14:16 UTCEPSS rescore
  33. 2026-06-08 14:16 UTCEPSS rescore
  34. 2026-06-07 15:24 UTCEPSS rescore
  35. 2026-06-07 15:24 UTCEPSS rescore
  36. 2026-06-06 13:46 UTCEPSS rescore
  37. 2026-06-06 13:46 UTCEPSS rescore
  38. 2026-06-05 22:46 UTCEPSS rescore
  39. 2026-06-05 22:46 UTCEPSS rescore
  40. 2026-06-04 15:39 UTCOSV refresh
  41. 2026-06-04 13:11 UTCEPSS rescore
  42. 2026-06-04 13:11 UTCEPSS rescore
  43. 2026-06-02 20:12 UTCEPSS rescore
  44. 2026-06-02 20:12 UTCEPSS rescore
  45. 2026-06-01 13:51 UTCEPSS rescore
  46. 2026-06-01 13:51 UTCEPSS rescore
  47. 2026-06-01 13:51 UTCEPSS rescore
  48. 2026-05-31 22:30 UTCEPSS rescore
  49. 2026-05-31 22:30 UTCEPSS rescore
  50. 2026-05-31 00:16 UTCEPSS rescore
  51. 2026-05-31 00:16 UTCEPSS rescore
  52. 2026-05-29 13:43 UTCEPSS rescore
  53. 2026-05-28 13:44 UTCEPSS rescore
  54. 2026-05-28 13:44 UTCEPSS rescore
  55. 2026-05-28 13:44 UTCEPSS rescore
  56. 2026-05-27 13:40 UTCEPSS rescore
  57. 2026-05-27 13:40 UTCEPSS rescore
  58. 2026-05-26 13:43 UTCEPSS rescore
  59. 2026-05-26 13:43 UTCEPSS rescore
  60. 2026-05-26 07:18 UTCEPSS rescore
  61. 2026-05-26 07:18 UTCEPSS rescore
  62. 2026-05-26 07:18 UTCEPSS rescore
  63. 2026-05-22 21:16 UTCEPSS rescore
  64. 2026-05-22 21:16 UTCEPSS rescore
  65. 2026-05-22 21:16 UTCEPSS rescore
  66. 2026-05-22 21:16 UTCEPSS rescore
  67. 2026-05-22 00:40 UTCEG score recompute
  68. 2026-05-22 00:40 UTCVendor advisory
  69. 2026-05-22 00:40 UTCGHSA enrichment
  70. 2026-05-21 22:42 UTCEPSS rescore
  71. 2026-05-20 22:37 UTCEPSS rescore
  72. 2026-05-20 22:37 UTCEPSS rescore
  73. 2026-05-20 22:37 UTCEPSS rescore
  74. 2026-05-20 22:37 UTCEPSS rescore
  75. 2026-05-20 22:37 UTCEPSS rescore

Publicly available exploits

(1 reference)

Working exploit code is in the public domain (1 GitHub PoC). Defenders should treat patch urgency accordingly — public PoCs typically lead to mass-exploitation within 24-72 hours.

  • GitHub PoCwebsecnl/CVE-2024-5535
    First seen Mar 15, 2025

    PoC - OpenSSL NPN Buffer Overread

    Open source ↗

Frequently asked(5)

What is CVE-2024-5535?
CVE-2024-5535 is a critical vulnerability published on June 27, 2024. Issue summary: Calling the OpenSSL API function SSLselectnext_proto with an empty supported client protocols buffer may cause a crash or memory contents to be sent to the peer. Impact summary: A buffer overread can have a range of potential consequences such as unexpected application beahviour or a…
When was CVE-2024-5535 disclosed?
CVE-2024-5535 was first published in the National Vulnerability Database on June 27, 2024, with the most recent update on May 12, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2024-5535 actively exploited?
CVE-2024-5535 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 92.0% percentile likelihood of exploitation in the next 30 days — higher percentiles indicate greater predicted risk.
What is the CVSS score of CVE-2024-5535?
CVE-2024-5535 has a CVSS v3 base score of 9.1 (NVD).
How do I remediate CVE-2024-5535?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2024-5535, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2024-5535

Explore →

Is Your Infrastructure Affected by CVE-2024-5535?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.