Уязвимость в mysqldump, позволяющая выполнить код при восстановлении бэкапа
Проблема вызвана особенностью добавления комментариев с названиями таблиц в выводе mysqldump. Атакующий имеет возможность создать таблицу с переводом строки в имени, что приведёт к тому, что при создании дампа в область комментария попадёт только начало имени, а хвост будет перенесён на другую строку и в дальнейшем выполнен при загрузке дампа. Например, атакующий может создать таблицу с именем "evil \! id select user(),@@version/*", разнесённым на три строки:
CREATE TABLE `evil \! id select user(),@@version/*` (test text);При создании резервной копии в дампе, полученном от mysqldump, часть имени окажется вынесена за пределы комментария:
-- -- Table structure for table `evil \! id select user(),@@version/*` --При восстановлении резервной копии администратором, кроме команд для загрузки фактического содержимого БД, будут запущены и команды "\! id" и "select user(),@@version/*", так как они оказались вне однострочного комментария:
$ mysql test < backup.sql uid=0(root) gid=0(root) groups=0(root) <-- attacker shell command user() @@version root@localhost 10.1.18-MariaDB <-- attacker sql query
Злоумышленник может воспользоваться проблемой для оставления лазейки после успешной атаки по подставновке SQL-кода через уязвимое web-приложение (например, атаковать устаревшие плагины к Wordpress). Атакующий может осуществить подстановку команд в резервную копию, затем выждать какое-то время и более активно атаковать систему, чтобы администратор заметил факт взлома web-приложения или повреждения содержимого БД (например, удалив или изменив данные в БД). Выявив факт атаки или нарушения целостности БД администратор попытается восстановить прошлое состояние, используя наиболее свежую версию резервной копии, но так как атакующий заблаговременно позаботился о подстановке в неё своих команд, при восстановлении бэкапа, администратор поспособствует запуску кода атакующего с повышенными привилегиями.
Проблеме подвержены все версии MySQL, в которых уязвимость остаётся неисправленной, а также выпуски MariaDB до 5.5.53 и 10.1. Обновления пакетов с MariaDB уже выпущены Debian и Ubuntu. Уязвимость была обнаружена осенью, но уведомление компании Oracle осталось без ответа, поэтому спустя 90 дней исследователи опубликовали сведения об уязвимости в открытом доступе. В качестве обходного метода защиты предлагается при создании бэкапов запускать утилиту mysqldump с опцией "--skip-comments", воспользоваться альтернативными инструментами резервного копирования MySQL или запретить доступ пользователей СУБД к выполнению операций "create table".
Источник: http://www.opennet.ru/opennews/art.shtml?num=46174
|
0 | Tweet | Нравится |
|