Новости IT, хостинга
Новость от 12.06.2012

Адрес в интернете:
https://news.hostdb.ru/index/show/id/6258

Опубликованы детали критической уязвимости в MySQL и MariaDB


Представлена детальная информация об уязвимости, исправленной в недавно выпущенных обновлениях MariaDB 5.5.23/5.3.6/5.1.62/5.2.12 и MySQL 5.5.24/5.1.63/5.6.6 (все более ранние релизы подвержены проблеме). Уязвимость позволяет злоумышленнику осуществить аутентифицированный вход под любым пользователем без ввода корректного пароля.

Из-за ошибки в коде сравнения хэшей от паролей, переданный пароль мог быть признан эквивалентным эталонному даже при возврате ненулевого значения функцией memcmp(), используемой для сравнения. Вероятность подобного исхода составляет 1 из 256, т.е. злоумышленник может за примерно 300 попыток подключиться к СУБД, указав любое значение в качестве пароля. Эксплуатация проблемы может быть совершена любым клиентом, без необходимости модификации libmysqlclient. Суть проблемы сводится к тому, что функция проверки пароля в MySQL определена как "my_bool check_scramble(...)", но итоговый "return memcmp(...)" в данной функции не всегда возвращал данные в диапазоне -128..127, укладывающемся в тип my_bool, поэтому при определённом стечении обстоятельств возвращаемое memcmp ненулевое значение вне данного диапазона в результате приведения типов становилось нулём.

Положительным моментом является то, что не все сборки MySQL и MariaDB эксплуатируемы - очень многое зависит от того на какой платформе и как произведена сборка. Например, распространяемые разработчиками MySQL и MariaDB бинарные пакеты проблеме не подвержены. Предпосылкой к возникновению проблемы является возможность возвращения некоторыми реализациями memcmp() произвольных целых значений, не попадающих в диапазон -128..127. Например, реализации memcmp() из BSD libc и GCC не подвержены проблеме, а оптимизированная с использованием SSE-инструкций реализация memcmp() из Linux Glibc подвержена проблеме (GCC обычно использует собственную реализацию).

Дополнение: проверка версий MySQL поставляемых в дистрибутивах показала, что уязвимости подвержены пакеты для 64-разрядных выпусков Ubuntu Linux (с 10.04 по 12.04), OpenSuSE 12.1, Fedora 16 и Arch Linux. Не подвержены уязвимости официальные сборки с сайтов проектов, а также пакеты из состава Red Hat Enterprise Linux, CentOS, выпусков Ubuntu для 32-разрядных систем, Debian Linux (Squeeze, Lenny), Gentoo 64-bit.

Проверить наличие проблемы на своём сервере можно запустив приложение для оценки поведения memcmp или выполнив простой тест:

for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done


Распечатано с HostDB.ru.