Описание сайта
Смягчает опасность то, что для эксплуатации требуется аутентифицированный доступ к БД или проведение дополнительной атаки на web-приложения, в результате которой необходимо получить возможность подстановки SQL-кода. Усугубляет проблему то, что опубликован начальный прототип эксплоита (полный эксплоит планируется опубликовать позднее, дав время на выпуск обновления), в то время как сама уязвимость ещё не исправлена (0-day) и проявляется в актуальных выпусках поддерживаемых веток MySQL — 5.7.15, 5.6.33 и 5.5.52. По сведению разработчиков SUSE проблема уже исправлена в MySQL 5.5.52 и MariaDB 10.0.27. Обновления пакетов в дистрибутивах пока не выпущены (Ubuntu, Debian, RHEL, FreeBSD, CentOS, Fedora, SUSE). Применяемые по умолчанию правила SELinux и AppArmor не влияют на результаты атаки.
Непосредственно выявленная уязвимость позволяет любому пользователю СУБД получить доступ к функциям работы с логами, которые должны быть доступны только пользователю admin. Через манипуляции с функциями записи в лог атакующий может изменить или создать файл конфигурации my.cnf. Если для файла my.cnf запрещена запись от пользователя mysql, то атакующий может создать новый файл в директории с данными, которая по умолчанию допускает запись для пользователя mysql.
Возможность выполнения кода с правами root достигается через добавление к конфигурацию конструкции, загружающей подставную библиотеку при очередном перезапуске mysql. В частности, процесс mysqld работает от непривилерованного пользователя, но при запуске используется скрипт mysqld_safe с правами root. В mysqld_safe среди прочего позволяет загрузить альтернативную библиотеку с реализацией функций malloc. Имя библиотеки передаётся через параметр «malloc_lib--malloc-lib=LIB», который также может быть определён в секциях '[mysqld]' и '[mysqld_safe]' файла конфигурации my.cnf. Таким образом, атакующий, имеющий возможность записи в my.cnf, может инициировать загрузку любой библиотеки с правами root.
Интересно, что атака через правку my.cnf не нова и в 2003 годууже исправлялась в выпуске 3.23.55 (эксплуатация сводилась к выполнению
«SELECT * INFO OUTFILE '/var/lib/mysql/my.cnf'). Новая атака позволяет
использовать функции записи в лог, например:
»set global general_log_file = '/etc/my.cnf'; set global general_log =
on; select 'malloc_lib=/tmp/mysql_exploit_lib.so'; set global
general_log = off;".
Комментарии