Опубликованы детали критической уязвимости в MySQL и MariaDB
9 июня 2012 года
Представлена детальная информация об уязвимости, исправленной в недавно выпущенных обновлениях 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
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.