URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 84972
[ Назад ]

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

Отправлено opennews , 10-Июн-12 00:42 
Представлена (http://permalink.gmane.org/gmane.comp.security.oss.general/7844) детальная информация об уязвимости, исправленной в недавно выпущенных обновлениях MariaDB 5.5.23/5.3.6/5.1.62/5.2.12 (http://www.opennet.me/opennews/art.shtml?num=33589) и MySQL 5.5.24/5.1.63/5.6.6 (http://www.opennet.me/opennews/art.shtml?num=33607). Уязвимость позволяет злоумышленнику осуществить аутентифицированный вход под любым пользователем без ввода корректного пароля.


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

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

URL: http://permalink.gmane.org/gmane.comp.security.oss.general/7844
Новость: http://www.opennet.me/opennews/art.shtml?num=34062


Содержание

Сообщения в этом обсуждении
"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 00:45 
Вот что ты получаешь, если используешь язык программирования родом из 70-х, в котором, даже простейший булев тип, приходится сооружать из дерьма и палок.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено pavlinux , 10-Июн-12 02:59 
Вот что получаешь, когда начинаешь выё...тся, понтоватся и создавать свои типы,
например my_bool. Ладно бы my_bool был бы int или Bool, так он же char.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 14:18 
В си нет типа Bool, есть _Bool или bool размер которого может быть и не int'ом. Морал простой - типы нужно приводить явно.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 11-Июн-12 01:07 
админоморда, хватит редактировать сообщения. Будешь за это гореть в аду

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Michael Shigorin , 13-Июн-12 11:44 
> Будешь за это гореть в аду

EPERM


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено pavlinux , 11-Июн-12 04:22 
> _Bool или bool размер которого может быть и не int'ом.

ISO/IEC 9899:201x

6.2.5 Types

An object declared as type _Bool is large enough to store the values 0 and 1.

6.3.1.1 Boolean, characters, and integers

— The rank of _Bool shall be less than the rank of all other standard integer types.

То есть уже по стандарту, Bool, максимум может быть (SHRT_MAX-1), т.е. (2^8/2-1)-1 = 32766;


> Морал простой - типы нужно приводить явно.

Приведение типов только для лохов! :)


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено arisu , 10-Июн-12 12:30 
ну так не пиши на этом мерзком языке, запили свой обалденный язык. тебе мешает кто-то, что ли?

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 14:40 
Не, лучше не надо, хватит уже.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено arisu , 10-Июн-12 15:13 
> Не, лучше не надо, хватит уже.

а вдруг выйдет что-то действительно крутое и гениальное?


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено umbr , 10-Июн-12 19:39 
да, с вероятностью 1 к 256

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено arisu , 10-Июн-12 20:18 
> да, с вероятностью 1 к 256

но ведь не нулевой.


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 12-Июн-12 03:47 
Вот, что получается, когда руки из *опы и мозгов ноль. Ну и про выпендрёж выше верно замечено.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 00:48 
осталось подобрать 300 паролей хэш которых увеличивается на 1...
интересная уязвимость впредь буду думать...

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 01:50 
Совершенно не обязательно. Достаточно 300 разных(!).Зачем подбирать их по порядку? Если получится зайти - сразу увидишь.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 00:52 
знающие люди, почему BSD не подвержена? там по другому приводятся типы?

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 01:31 
выше в статье написано почему. чукча не читатель?

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено pavlinux , 10-Июн-12 03:09 
> Предпосылкой к возникновению проблемы является возможность возвращения
> некоторыми реализациями memcmp() произвольных целых значений, не попадающих
> в диапазон -128..127.

Ткните меня мордой !!! Где написано что memcmp() должно возвращать от -128 до 127 ????

IEEE Std 1003.1-2008
http://pubs.opengroup.org/onlinepubs/9699919799/functions/me...

ISO/IEC 9899:201x


7.24.4.1 The memcmp function
Synopsis
1 #include <string.h>
  int memcmp(const void *s1, const void *s2, size_t n);

Description

2 The memcmp function compares the first n characters of the object pointed to by s1 to
  the first n characters of the object pointed to by s2.

Returns

3 The memcmp function returns an integer greater than, equal to, or less than zero,
  accordingly as the object pointed to by s1 is greater than, equal to, or less than the
  object pointed to by s2.


Почему в BSD по другому?!


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено arisu , 10-Июн-12 12:32 
> Ткните меня мордой !!! Где написано что memcmp() должно возвращать от -128
> до 127 ????

да нигде. и strcmp() тоже не обязана. но кто ж эти дурацкие документации читает-то? а потом возникают вот такие школьные «уязвимости». или вонь про то, что memcpy() «поломали».


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 03:47 
Эпично, что тут скажешь. my_bool вообще доставило.

ЗЫ Вы всё ещё используете MySQL? Тогда слоник идёт к вам...


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено AllSoftwareSucks , 10-Июн-12 14:54 
> Тогда слоник идёт к вам...

Зелёный?


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 17:44 
Розовый.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 18:53 
синий

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено im , 10-Июн-12 03:54 
Забыли добавить из оригинальной новости:
All MariaDB and MySQL versions up to 5.1.61, 5.2.11, 5.3.5, 5.5.22 are
vulnerable.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено анонимно , 11-Июн-12 19:27 
Пробовал убунту 12.04 64-битную, мускул 5.5.22 - не пускает и через 1к попыток.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено antono , 11-Июн-12 19:54 
Видимо уже исправили. У меня тоже не работает :)

http://shelr.tv/records/4fd6126496608064fc000014


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено antono , 11-Июн-12 20:08 
Интересно... С root не прокатывает :) Зато с debian-sys-maint огого:

http://shelr.tv/records/4fd6173a9660804894000018


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Йух , 10-Июн-12 06:18 
> Например, реализации memcmp() из BSD libc и GCC не подвержены проблеме, а оптимизированная с использованием SSE-инструкций реализации memcmp() из Linux Glibc подвержена проблеме (GCC обычно использует собственную реализацию).

Интересно, я один после этих слов вспомнил срачик Линуса и Ульриха по поводу memcpy()? :))


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 09:16 
А причём здесь memcpy()? Там всё дело в кастомном типе my_bool (lol), к которому приводиться результат выполнения memcpy. А так как memcpy возвращает int то иногда возникают проблемы при кастинге из "большего" типа в "меньший". Так что я вижу тут только проблему индусов.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Йух , 10-Июн-12 13:06 
Там тоже оптимизации под SSE "поломали" поведение функции.

в случае memcpy() - это происходило на пересекающихся областях и по стандарту это Undefined behavior, а индусы из Adobe заложились на определенное поведение функции.

в этом случае в стандарте ничего не говорится что значения будут укладываться в диапазон -128..127, a приведение типов иногда дает 0

т.е. и тут и там проблема в индусах, [TROLL] но интересно, потребует ли тут Линус изменить поведение glibc [/TROLL]


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено arisu , 10-Июн-12 12:33 
> Интересно, я один после этих слов вспомнил срачик Линуса и Ульриха по
> поводу memcpy()? :))

а разве был срачик? линусу сказали, что он дебил. линус утёрся и убежал рассказывать, как он круто всех победил.


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Йух , 10-Июн-12 13:11 
По факту утерся Ульрих - http://www.opennet.me/opennews/art.shtml?num=33461
и это печалит.


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено R , 10-Июн-12 16:47 
> Один из них ты. Ущербный мозг не может знать что такое defacto
> стандарт.

Ну, во-первых, "de facto", а во-вторых - http://ru.wikipedia.org/wiki/%D0%A1%D1%8...
И еще: практика показывает, что нежелание читать и, что важнее, ПОНИМАТЬ документацию часто приводит к необходимости в новых версиях городить "костыли" для поддержки некогда некорректно написаного софта. Таким образом, получаем замкнутый круг. Яркий пример - экосистема Windows. Посмотрите, как в WINE вместо реализации функций по документации приходится воспроизводить "особенности" оригинальной реализации, так как прикладные программы эти самые "особенности" используют во всю. И это же является причиной неработоспособности части программ, написанных "типа крутыми прогерами, которым чихать на документацию" и использующих "недокументированные" функции, в официально выпущенных новых версиях ситем от Microsoft - вспомните сколько воплей было по поводу VISTA, а потом и "семерки"!
Вы считаете это правильным и хотите иметь такую же ситуацию в UNIX?


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 16:53 
он обычный php быдлокодер, у него нет никаких осознанных 'хочу'. Всё делается спинным мозгом

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 18:31 
чудесно!

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 10-Июн-12 20:03 
"На 1 000 000 000-й попытке сервер согласился что пароль - Мао Цзэдун"

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 11-Июн-12 12:43 
$ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done

mysql>

http://habrahabr.ru/post/145641/ вероятность взлома 1/256

программа проверки http://pastie.org/4064638


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Вредоносный , 11-Июн-12 17:53 
$ mysql --version
mysql  Ver 14.14 Distrib 5.5.22, for debian-linux-gnu (x86_64) using readline 6.2

Чего-то не могу вломиться на свой локалхостик. Не пущает :(


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено FSA , 11-Июн-12 19:26 
У меня тоже не получилось на Ubuntu 12.04 AMD64.

"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено antono , 11-Июн-12 20:19 
Попробуйте с debian-sys-maint :)

http://shelr.tv/records/4fd6173a9660804894000018


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 12-Июн-12 03:50 
> mysql --version

mysql  Ver 14.14 Distrib 5.1.56, for slackware-linux-gnu (x86_64) using readline 5.1

Тоже не получилось. Версия слаки - 13.37


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Nas_tradamus , 13-Июн-12 11:15 
Во 64bit FreeBSD не сработало:

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


"Опубликованы детали критической уязвимости в MySQL и MariaDB"
Отправлено Аноним , 04-Июл-12 07:29 
мне пофиг, ipfw+pf закрыты порты