• Все разделы
  • Статьи
  • Медиа
  • Новости
  • Нормативные материалы
  • Конференции
  • Глоссарий

Двойное освобождение

Карточка уязвимости

Характеристики уязвимости

Уровень опасности
Оценка CVSS
Производитель ПО
Наименование ПО
OpenSSL (1.1.1, 1.1.1t, 3.0.0, 3.0.8)
Описание
Функция PEM_read_bio_ex() считывает PEM-файл из BIO, обрабатывает и декодирует name (например, CERTIFICATE), данные заголовков и полезной нагрузки. В случае успешного выполнения функции аргументы name_out, header и data заполняются указателями на буферы, содержащие соответствующие декодированные данные. Вызывающий компонент отвечает за освобождение этих буферов. Можно создать PEM-файл, который имеет 0 байт полезной нагрузки. В этом случае PEM_read_bio_ex() вернет код ошибки, но добавит в аргумент header указатель на буфер, который уже был освобожден. Если вызывающий компонент тоже освобождает этот буфер, то происходит двойное освобождение, приводящее к аварийному завершению работы. Злоумышленники, способные предоставлять на обработку специально сформированные PEM-файлы, могут вызвать отказ в обслуживании. Функции PEM_read_bio() и PEM_read() являются простыми обертками для PEM_read_bio_ex() и поэтому тоже уязвимы. Эти функции также вызываются другими функциями OpenSSL, включая PEM_X509_INFO_read_bio_ex() и SSL_CTX_use_serverinfo_file(), которые тоже являются уязвимыми. Некоторые компоненты OpenSSL используют эти функции, но не являются уязвимыми, поскольку не выполняется освобождение аргумента header, если PEM_read_bio_ex() возвращает код ошибки. Сюда относятся функции PEM_read_bio_TYPE() и декодеры OpenSSL 3.0. Приложение командной строки OpenSSL asn1parse также содержит данную уязвимость.
Как исправить
Для устранения уязвимости необходимо установить последнюю версию продукта, соответствующую используемой платформе. Необходимую информацию можно получить по адресу:
https://www.openssl.org/
Ссылки
Источник: CVE
Наименование: CVE-2022-4450
URL: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4450