В начале апреля 2026 года сообщество информационной безопасности столкнулось с новой, хотя и умеренной по уровню опасности, угрозой, затрагивающей один из краеугольных камней современного интернета - библиотеку OpenSSL. Обнаруженная уязвимость, зарегистрированная под идентификатором CVE-2026-31790, связана с ошибкой обработки сбоев в механизме RSA KEM (Key Encapsulation Mechanism, механизм инкапсуляции ключа) и может привести к утечке фрагментов памяти, содержащих конфиденциальную информацию. Этот инцидент вновь подчеркивает критическую важность своевременного обновления криптографических библиотек, которые служат фундаментом для защиты данных в бесчисленном количестве веб-сервисов, облачных платформ и корпоративных систем.
Уязвимость CVE-2026-31790
Суть проблемы, официально раскрытой в бюллетене безопасности OpenSSL 7 апреля 2026 года, заключается в некорректной обработке ошибок в функции "RSA_public_encrypt()". Данная функция используется в процессе RSASVE-инкапсуляции, который предназначен для безопасной передачи симметричного ключа шифрования с использованием RSA. По замыслу, функция должна возвращать количество записанных байтов при успешном выполнении или значение "-1" в случае ошибки. Однако, из-за ошибки в коде, проверка результата осуществлялась некорректно: система интерпретировала любое ненулевое возвращаемое значение как успех. Следовательно, если в процессе возникала ошибка и функция возвращала "-1", система ошибочно считала операцию завершённой успешно и продолжала выполнение.
Этот ложноположительный результат приводит к катастрофическим последствиям для безопасности. Процесс инкапсуляции продолжает работу, устанавливает выходные параметры длины и обрабатывает буфер с шифротекстом так, будто в нём находится действительный сгенерированный ключ. Если злоумышленник предоставит приложению невалидный открытый RSA-ключ, а само приложение, в свою очередь, не проведёт его предварительную проверку, то в ответ система может передать атакующему неинициализированное содержимое внутреннего буфера. Именно этот буфер и становится источником утечки, поскольку может содержать так называемые "остаточные" данные из памяти - фрагменты информации, оставшиеся от предыдущих операций приложения. Такие данные могут включать в себя фрагменты сессионных ключей, части пользовательских запросов или даже элементы других криптографических материалов.
Важно отметить, что уязвимость носит достаточно специфический характер и требует для своей эксплуатации определённых условий. Во-первых, атака возможна только против приложений, использующих именно механизм RSA KEM для инкапсуляции ключей, что является не самым распространённым сценарием. Во-вторых, ключевым фактором является отсутствие в коде приложения предварительной проверки валидности принимаемого открытого ключа. Тем не менее, учитывая повсеместное распространение OpenSSL, даже нишевая уязвимость представляет существенный риск для инфраструктур, где реализованы подобные протоколы. Сообщается, что эксперт Red Hat Симо Сорсе обнаружил и сообщил о данной проблеме ещё в феврале 2026 года, а исправление было разработано Николой Пайковски.
С точки зрения эксплуатации, атака классифицируется как уязвимость, приводящая к раскрытию информации. Хотя она не позволяет напрямую получить контроль над системой, утечка данных из памяти является одним из наиболее ценных векторов для продвинутых злоумышленников, таких как APT-группы (Advanced Persistent Threat, группа постоянной угрозы). Собранные фрагменты данных могут быть использованы для обхода механизмов защиты, проведения более целенаправленных атак или сбора разведданных о внутренней структуре приложения.
К счастью, сфера воздействия уязвимости ограничена. Старые, давно не поддерживаемые ветки библиотеки OpenSSL версий 1.0.2 и 1.1.1 оказались полностью не затронутыми данной ошибкой. Риску подвержены актуальные ветки 3.x. Команда сопровождения OpenSSL оперативно выпустила патчи для всех поддерживаемых версий. Администраторам настоятельно рекомендуется обновить свои системы до следующих версий: OpenSSL 3.0 - до 3.0.20, OpenSSL 3.3 - до 3.3.7, OpenSSL 3.4 - до 3.4.5, OpenSSL 3.5 - до 3.5.6 и OpenSSL 3.6 - до 3.6.2. Обновление также распространяется на соответствующие модули, сертифицированные по стандарту FIPS (Федеральные стандарты обработки информации).
Для организаций, у которых нет возможности немедленно применить обновление, существует временное обходное решение на уровне кода приложения. Разработчики могут полностью устранить риск, добавив обязательную проверку открытого ключа перед его использованием в процессе инкапсуляции. Конкретно, вызов функций "EVP_PKEY_public_check()" или "EVP_PKEY_public_check_quick()" перед выполнением "EVP_PKEY_encapsulate()" гарантированно предотвратит попадание невалидного ключа в уязвимую функцию и блокирует потенциальную утечку памяти. Этот случай служит важным напоминанием о том, что безопасность криптографических примитивов зависит не только от корректности самой библиотеки, но и от их грамотного использования в соответствии с best practices.
Таким образом, уязвимость CVE-2026-31790, несмотря на умеренный уровень опасности, демонстрирует классический пример ошибки обработки граничных условий, способной подорвать доверие к криптографическим операциям. Её своевременное обнаружение и наличие четкого плана исправления со стороны сообщества OpenSSL минимизируют потенциальный ущерб. Однако данный инцидент в очередной раз актуализирует необходимость внедрения практик безопасной разработки, включающих строгую валидацию входных данных, и подчеркивает непреложное правило современной кибербезопасности: поддержание актуальности всех компонентов программного обеспечения является не рекомендацией, а обязательным условием защиты.