Представлена детальная информация об уязвимости, исправленной в недавно выпущенных обновлениях MariaDB 5.5.23/5.3.6/5.1.62/5.2.12 и 5.5.24/5.1.63/5.6.6. Уязвимость позволяет злоумышленнику осуществить аутентифицированный вход под любым пользователем, без ввода корректного пароля.
Из-за ошибки в коде сравнения хэшей от паролей, переданный пароль мог быть признан эквивалентным эталонному даже при возврате ненулевого значения функцией memcmp(), используемой для сравнения. Вероятность подобного исхода составляет 1 из 256, т.е. злоумышленник может за примерно 300 попыток подключиться к СУБД, указав любое значение в качестве пароля. Эксплуатация проблемы может быть совершена любым клиентом, без необходимости модификации libmysqlclient.
Положительным моментом является то, что не все сборки MySQL и MariaDB эксплуатируемы - очень многое зависит от того на какой платформе и как произведена сборка. Например, распространяемые разработчиками MySQL и MariaDB бинарные пакеты проблеме не подвержены. Предпосылкой к возникновению проблемы является возможность возвращения реализацией memcmp() произвольных целых значений, не попадающих в диапазон -128..127. Например, реализации memcmp() из BSD libc и GCC не подвержены проблеме, а оптимизированная с использованием SSE-инструкций реализации memcmp() из Linux Glibc подвержена проблеме, но GCC обычно использует собственную реализацию.