CVE-2024-5535
SSL_select_next_proto переполнение буфера при чтении
- Опубликовано
- 27 июн. 2024 г.
- Обновлено
- 12 мая 2026 г.
- Назначение CNA
- openssl
- Наблюдены доказательства
- 5 авг. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HНизкий · следующие 30 дней
- Процентиль
- 92,6 %
- Дата модели
- 21 сент. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
Краткое описание проблемы: вызов функции OpenSSL API SSL_select_next_proto с пустым буфером поддерживаемых клиентских протоколов может привести к сбою или отправке содержимого памяти одноранговому узлу. Краткое описание воздействия: перечитывание буфера за его пределами может иметь ряд потенциальных последствий, таких как непредвиденное поведение приложения или сбой. В частности, эта проблема может привести к отправке одноранговому узлу до 255 байт произвольных приватных данных из памяти, что приведёт к потере конфиденциальности. Однако данная проблема затрагивает только приложения, которые напрямую вызывают функцию SSL_select_next_proto со списком поддерживаемых клиентских протоколов нулевой длины. Обычно это не является допустимым сценарием и, как правило, не находится под контролем злоумышленника, но может произойти случайно в случае ошибки конфигурации или программирования в вызывающем приложении. Функция OpenSSL API SSL_select_next_proto обычно используется TLS-приложениями, поддерживающими ALPN (согласование протокола прикладного уровня) или NPN (согласование следующего протокола). NPN является более старым, никогда не был стандартизирован и устарел в пользу ALPN. Мы считаем, что ALPN развёрнут значительно шире, чем NPN. Функция SSL_select_next_proto принимает список протоколов от сервера и список протоколов от клиента и возвращает первый протокол, который присутствует в списке сервера и также присутствует в списке клиента. В случае отсутствия пересечения между двумя списками она возвращает первый элемент из списка клиента. В любом случае она сообщает, было ли обнаружено пересечение между двумя списками. В случае, когда SSL_select_next_proto вызывается с клиентским списком нулевой длины, она не замечает этого условия и возвращает память, непосредственно следующую за указателем на клиентский список (и сообщает, что пересечения в списках не было). Эта функция обычно вызывается из серверного обратного вызова приложения для ALPN или клиентского обратного вызова приложения для NPN. В случае ALPN список протоколов, предоставляемых клиентом, гарантированно libssl никогда не будет нулевой длины. Список серверных протоколов поступает от приложения и обычно не должен быть нулевой длины. В этом случае, если функция SSL_select_next_proto была вызвана ожидаемым образом (со списком, предоставленным клиентом, переданным в параметрах client/client_len), то приложение не будет уязвимо к этой проблеме. Если приложение было случайно настроено с серверным списком нулевой длины, случайно передало этот серверный список нулевой длины в параметрах client/client_len и дополнительно не смогло корректно обработать ответ «нет пересечения» (который обычно приводит к сбою рукопожатия в ALPN), то оно будет уязвимо к этой проблеме. В случае NPN протокол позволяет клиенту оппортунистически выбрать протокол при отсутствии пересечения. OpenSSL возвращает первый клиентский протокол в случае отсутствия пересечения в поддержку этого. Список клиентских протоколов поступает от приложения и обычно не должен быть нулевой длины. Однако если функция SSL_select_next_proto случайно вызывается с client_len равным 0, вместо этого будет возвращён недопустимый указатель памяти. Если приложение использует этот вывод как оппортунистический протокол, произойдёт потеря конфиденциальности. Эта проблема оценена как низкая по степени серьёзности, поскольку приложения наиболее вероятно уязвимы, если они используют NPN вместо ALPN — но NPN не широко используется. Она также требует ошибки конфигурации или программирования в приложении. Наконец, эта проблема обычно не находится под контролем злоумышленника, что делает активную эксплуатацию маловероятной. Модули FIPS в версиях 3.3, 3.2, 3.1 и 3.0 не затронуты этой проблемой. Из-за низкой степени серьёзности этой проблемы мы в настоящее время не выпускаем новые версии OpenSSL. Исправление будет включено в следующие выпуски, когда они станут доступны.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.