Критическая уязвимость в OpenSSL 1.1.0a

В изменениях, внесённых в опубликованном на прошлой неделе обновлении криптографической библиотеки OpenSSL 1.1.0a, выявлена критическая уязвимость (CVE-2016–6309), которая потенциально может привести к выполнению кода злоумышленника при обработке отправленных им пакетов. Всем пользователям ветки OpenSSL 1.1.0 рекомендуется срочно обновить OpenSSL до версии 1.1.0b. Уязвимость выявлена сотрудниками Google при проведении fuzzing-тестирования нового выпуска инструментом honggfuzz.

Проблема присутствует в выпуске OpenSSL 1.1.0a в коде устранения уязвимости CVE-2016–6307 и проявляется при получении сообщения, размером больше 16 Кб, в ситуации перераспределения и перемещения буфера, отведённого для поступающих сообщений. Суть ошибки в том, что после перераспределения памяти остаётся висячий указатель на старое положение буфера и запись поступившего сообщения производится в ранее уже освобождённую область памяти. Наиболее вероятным результатом подобной записи будет крах, но разработчики не исключают нахождение векторов атаки, при которых возможно организовать выполнение кода атакующего.

Уязвимость помечена как неисправленная в Debian, но, вероятно, по ошибке, так как в Debian не используется выпуск OpenSSL 1.1.0. В RHEL/CentOS, Fedora и SUSE проблема не проявляется. Уязвимость затрагивает Gentoo и порт OpenSSL для FreeBSD.

Интересно, что это не единственная ошибка, допущенная в прошлых выпусках. В представленном 22 сентября обновлении прошлой ветки (OpenSSL 1.0.2i) всплыла менее опасная уязвимость (CVE-2016–7052), в результате которой при попытке использования CRLs возникал крах из-за разыменования нулевого указателя. Проблема устранена в выпуске OpenSSL 1.0.2j.

© OpenNet