URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 108830
[ Назад ]

Исходное сообщение
"Уязвимость в системе мониторинга Zabbix"

Отправлено opennews , 13-Авг-16 23:46 
В обновлениях  системы мониторинга Zabbix  2.2.14 и 3.0.4 (http://www.zabbix.com/)  устранена уязвимость (http://seclists.org/fulldisclosure/2016/Aug/60), позволяющая выполнить SQL-код в СУБД и добиться выполнения произвольных команд на сервере и отслеживаемых хостах. В частности, через SQL-запрос можно получить права администратора Zabbix, который в зависимости от конфигурации может выполнять команды на хостах, отслеживаемых в Zabbix. Проблема вызвана (https://support.zabbix.com/browse/ZBX-11023) недостаточной проверкой допустимых значений параметра toggle_ids при обращении к странице latest.php. Атака возможна со стороны аутентифицированного пользователя или при включении гостевого входа без пароля.



URL: http://seclists.org/fulldisclosure/2016/Aug/60
Новость: https://www.opennet.ru/opennews/art.shtml?num=44962


Содержание

Сообщения в этом обсуждении
"Уязвимость в системе мониторинга Zabbix"
Отправлено A.Stahl , 13-Авг-16 23:46 
Лес. Зима. Вечер.
Подходит toggle_ids к latest.php, стучит и спрашивает: "А кто в скриптике живёт?"
А из latest.php ему отвечают: "Я Заббикс, за процессами слежу в этом скриптике сижу! А ты кто?"
-- А я Случайный Запрос, toggle_ids не донёс. Можно я с тобой поживу, SQL-код в СУБД пропихну?
-- Ну заходи, будем вместе жить, процессы сторожить.
И жили они долго и счастливо до самого kill -9!

"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 14-Авг-16 00:31 
> kill -9

Слишком добрый!!!  Требую продолжения!!!


"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 14-Авг-16 02:49 
Alt-sysrq-b тебе в помощь. В мультиках это обычно так: ты стоишь себе такой, ла-ла-ла. И тут на тебя падает рояль с тридцатого этажа.

"Уязвимость в системе мониторинга Zabbix"
Отправлено XoRe , 14-Авг-16 00:36 
Похоже, ветка 2.4.х не подвержена атаке

"Уязвимость в системе мониторинга Zabbix"
Отправлено Andrey Mitrofanov , 14-Авг-16 12:07 
> Похоже, ветка 2.4.х не подвержена атаке

Я тебе больще скажу: похоже, и 2.0.18 не подвержена. Ср.:

2016-07-22 [Zabbix-announce] Zabbix 3.0.4 and 2.2.14 released
  --https://sourceforge.net/p/zabbix/mailman/message/35237249/

2016-04-20 [Zabbix-announce] Zabbix 2.0.17, 2.2.12, 2.4.8 and 3.0.2 released
  --https://sourceforge.net/p/zabbix/mailman/message/35027668/

Зато LTS такая LTS. http://www.zabbix.com/life_cycle_and_release_policy.php

2.0, видимо, выпкстили до введения ярлыка TLS... На картинках его не рисуют: плохо для продаж.


"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 14-Авг-16 00:44 
Две недели назад у меня отключили сервер мониторинга на публичном IP. Якобы за рассылку спама. Установить не удалось что это было. Обновил zabbix и ОС. Запаролил админку апачевским паролем. Пока полет нормальный. Читал логи. Проверял конфиги. Проверял всякими утилитами типа tiger и т.д. в логах zabbix на тот период когда пров жаловался - странное повышение la - при среднем la 0,1 было повышение до примерно 0,7 которое четко видно на графике. Вопрос. Что это было?

"Уязвимость в системе мониторинга Zabbix"
Отправлено Michael Shigorin , 14-Авг-16 11:16 
> Что это было?

Просто к сведению -- в альте версию 3.0.4 собрали ещё несколько раньше, так что могло быть и оно: http://packages.altlinux.org/ru/p8/srpms/zabbix


"Уязвимость в системе мониторинга Zabbix"
Отправлено Andrew , 14-Авг-16 11:40 
В альте собрали на 3 дня позже, чем пакеты под Ubuntu и Centos, которые появились на оффсайте 22-го числа.

"Уязвимость в системе мониторинга Zabbix"
Отправлено YetAnotherOnanym , 14-Авг-16 08:47 
Мда... в 2016 году пыхеры так и не освоили санитизацию запросов.

"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 14-Авг-16 17:37 
Google вбросил им как это нужно реализовать https://wiki.php.net/rfc/sql_injection_protection

"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 14-Авг-16 22:57 
> Google вбросил им как это нужно реализовать https://wiki.php.net/rfc/sql_injection_protection

Легко реализуется путем NoSQL баз. Извините, но SQL слишком много всего умеет. Вот занафига базе уметь код выполнять? Чтобы хакерью удобнее было? Если вы играете с огнем - однажды вы обжигаетесь.


"Уязвимость в системе мониторинга Zabbix"
Отправлено Мяут , 14-Авг-16 23:15 
> Легко реализуется путем NoSQL баз.

Тот же MongoDB имеет язык запросов основанный на JSON. Думаю уже набралось немало умников, которые эти самые запросы шлют из клентского жаваскрипта. Так что проблема отнюдь не в языке запросов.


"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 15-Авг-16 03:54 
А если у меня база простая как валенок, понимающая только key и value ассоциированный с ним, и оба произвольные значения, возможно как максимум с ограничением по длине - как ты это хакать будешь, интересно? Оно чисто технически не имеет никаких языков запросов через которые ты бы мог у меня выполнить код. Как самый максимум ты может быть положишь какой-то мусор в базу лишний раз. Это, конечно, свинство, но намного менее неприятное :)

"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 15-Авг-16 07:47 
>Оно чисто технически не имеет никаких языков запросов через которые ты бы мог у меня выполнить код. Как самый максимум ты может быть положишь какой-то мусор в базу лишний раз. Это, конечно, свинство, но намного менее неприятное :)

Товарищ, потише. Думайте, прежде чем говорить. Здесь именно это и происходит - в базу кладут "какой-то мусор". Только, вот беда, Zabbix штатно позволяет выполнять команды локально или через Zabbix-агентов, если это разрешено в их конфигах. В результате в базу можно положить не только "какой-то мусор", но и так называемые "действия", который как раз и позволяют выполнять произвольные команды на Zabbix-сервере или через Zabbix-агентов.

Смена одного хранилища на другое тут не помогла бы. Проблема только в недостаточной валидации данных в веб-интерфейсе, написанном на PHP.


"Уязвимость в системе мониторинга Zabbix"
Отправлено КО , 15-Авг-16 07:54 
>>А если у меня база простая как валенок, понимающая только key и value ассоциированный с ним

То где-то есть программа реализующая логику в которой значения из базы - операнд.
Ну и далее эта программа и стрельнет. А будет ли это в СуБД или в браузере у клиента выполнится вдруг неожиданный javascipt пришедший из доверенной базы - уже детали. :)


"Уязвимость в системе мониторинга Zabbix"
Отправлено angra , 15-Авг-16 09:37 
Просто у тебя хакерское воображение отсутсвует как таковое. Тут пару дней назад пробегала новость о использовании redis для взлома сервера. Поинтересуйся деталями, они есть по ссылкам. Откроешь для себя новый мир, где подстановка "мусорного" ключ->значение достаточна для взлома. И никакого SQL или выполнения кода со стороны БД.

"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 14-Авг-16 23:48 
https://mariadb.com/sites/default/files/MaxScaleSecuritySolu...

"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 15-Авг-16 03:57 
> https://mariadb.com/sites/default/files/MaxScaleSecuritySolu...

Отличный пример того как сначала люди создают себе проблемы. зачем-то научив базу выполнять код, парить, жарить и крестиком вышивать, а потом - героически с этим борятся изобретая чуть ли не app-level firewall. При том что половина вещей делается на тривиальных key-value, которые быстрые как понос и хакать там просто нечего. Ну да, програмить это может быть несколько менее удобно, особенно если вы планируете активно перетрясать схему базы.


"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 15-Авг-16 07:57 
>> https://mariadb.com/sites/default/files/MaxScaleSecuritySolu...
> Отличный пример того как сначала люди создают себе проблемы. зачем-то научив базу
> выполнять код

Ты уверен, что база выполняет какой-то там код? СУБД выполняет запросы. Если базу попросить выполнить DROP DATABASE, а права пользователя разрешают ему это сделать, то чья это проблема? Всякие хранилища ключ-значение тоже выполняют запросы. Можно вставить туда значение, можно прочитать, можно удалить. Если попросят удалить и имеют на это право, то это проблема базы? Если попросят вставить что-то нежелательное, то это проблема базы? Это проблема приложения. Оно должно следить за тем, что просит сделать СУБД.


"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 15-Авг-16 12:07 
Формально, можно было бы разнести DDL и DML, да и в принципе любовь WEB + MySQL + PHP к "Alter table add column" нехорошая штука.
Столкнулся с тем что "некоторых разработчиков" очень сложно убедить в том что им для "сайта" ddl не нужен :)

"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 16-Авг-16 11:50 
Честно говоря, я не понимаю о ком вы. Разработчики Zabbix нигде не делают alter table add column. Разве что при миграции на новую версию.

Иногда структуру базы данных бывает нужно менять. И довольно часто делать это нужно над имеющимися данными, а не экспортом и реимпортом в новую структуру. Так что DDL плохому танцору мешают, а хорошему - нет. Не нравится - учётную запись можно ограничить так, чтобы никаких alter table. Чтобы учётная запись могла только select, insert, update и delete.


"Уязвимость в системе мониторинга Zabbix"
Отправлено angra , 15-Авг-16 09:40 
Болезный, ты где на картинке увидел код? Если для тебя where это код, то настоятельно советую сменить профессию.


"Уязвимость в системе мониторинга Zabbix"
Отправлено DeadLoco , 15-Авг-16 12:29 
SQL умеет столько, сколько нужно для работы с множествами. А что большинство ниасиляторов использует РСУБД в качестве индексированого кеша - это проблемы ниасиляторов.

Хотя, казалось бы, достаточно сделать прослоечку из хранимых процыдурок, которую и отдавать наружу в пхп, но нет же, непременно нужно лезть в часы хлебным ножом.


"Уязвимость в системе мониторинга Zabbix"
Отправлено Аноним , 15-Авг-16 00:36 
Что ни придумают, лишь бы Nagios не пользоваться(

"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 15-Авг-16 08:03 
В Nagios есть NRPE и это его основное назначение - выполнять команды, которые попросит сервер мониторинга. Zabbix позволяет выполнять команды на удалённом узле, но по умолчанию эта функция отключена, потому как хватает штатных возможностей агента и UserParameter. Выполнять вообще-вообще произвольные команды - это очень редкий случай.

Да, в Zabbix можно настроить выполнение команды без перезапуска всего сервера мониторинга, просто зайдя в веб-интерфейс и указав, где и какую команду нужно выполнять. В Nagios после правки конфига нужно перезапускать весь сервер. Кушайте сами.


"Уязвимость в системе мониторинга Zabbix"
Отправлено PavelR , 15-Авг-16 08:19 
>В Nagios после правки конфига нужно перезапускать весь сервер. Кушайте сами.

Хороший вброс, но у вас "нипалучилось".


"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 15-Авг-16 12:32 
Вброс или не вброс, но кушайте сами. Меня Zabbix устраивает вполне. В "ём" есть сложные выражения для триггеров, графики, оповещения, действия, API, разграничение доступа. Ядро умеет очень много. В Nagios что ни надо замониторить, всё внешним плагином делается, который может только сказать хорошо или плохо сейчас. Предыдущее состояние в плагине взять неоткуда. Попробуйте в вашем нагиосе сделать триггер "если среднее значение на хосте A за сутки больше, чем 10% от среднего значения на хосте Б за час, то проблема". Своё хранилище придётся придумывать для хранения данных предыдущих опросов.

"Уязвимость в системе мониторинга Zabbix"
Отправлено PavelR , 16-Авг-16 12:27 
> Вброс или не вброс, но кушайте сами. Меня Zabbix устраивает вполне.

Устраивает - пользуйтесь.

>В Nagios после правки конфига нужно перезапускать весь сервер.

А вот гнать чушь про ПО, которым вы не пользуетесь - не надо.


"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 15-Авг-16 08:13 
Вот вам вбросик: https://www.opennet.ru/opennews/art.shtml?num=22285

"Уязвимость в системе мониторинга Zabbix"
Отправлено XoRe , 15-Авг-16 14:38 
> Что ни придумают, лишь бы Nagios не пользоваться(

Чет я не находил, чтобы nagios мог получать 500 новых значений в секунду.
А вот zabbix с таким спокойно справляется.


"Уязвимость в системе мониторинга Zabbix"
Отправлено anonimous , 17-Авг-16 06:31 
Это Поллер Zabbix'a за тебя решил.

Частая ошибка Заббистов, в том что они вначале пробуют мониторинг на слабом железе,
и Там где Nagios\Icinga2 начинают задыхаться - Zabbix адаптируеться. Итого Zabbix - победиль!

Дело в том что Icinga2 ( nagios лучше таки выкидывать ) - как то все равно на твое железо.
Указал ты ей, например, мониторить раз в секунду 500 хостов, где у каждого 500 метрик, - она и будет запускать их каждую секунду. Т.е. 500*500=250000 в секунду. Ну а справиться ли? Зависит от железа. Сервер может вообще зависнуть к х*.

Хотим офигенный мониторинг, покупаем для него офигенное железо.

Про всякие там триггреры, где "на одном хосте то, на другом это - непорядок" - пишем в Graphite. ( Icinga2 + Graphite ) Ну а для graphite много приложений умеющих работать с его базой разными функциями и оповещать заодно.

В целом, сравнивать zabbix и icinga2, тоже самое как сравнивать США и Советский Союз в период разгара холодной войны.


"Уязвимость в системе мониторинга Zabbix"
Отправлено www2 , 15-Авг-16 12:35 
Я посмотрел на эту уязвимость. Не знаю, почему, но у меня на 2.4.0 выдаёт такую ошибку:
Error in query [INSERT INTO profiles (profileid, userid, idx, value_int, type, idx2) VALUES (800800175701336, 1001000000000075, 'web.latest.toggle', '1', 2, 1);select * from users (1=1)] [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from users (1=1)' at line 1]

Ну то есть этот дописанный сбоку запрос не выполняется. Пробовал что-нибудь придумать, как этим воспользоваться. Вставить вместо числа результат из подзапроса, например, или какой-нибудь union изобразить. Ничего не придумал. Может быть фантазия бедная, но сдаётся мне, что проблема преувеличена.

На 3.0.0 выдаёт:
Zabbix получил некорректный запрос.
Детали
Операция не может быть выполнена из-за несанкционированного запроса.
Операция не может быть выполнена из-за несанкционированного запроса.
Операция не может быть выполнена из-за несанкционированного запроса.
Закрыть

Проблем нашли, да. А как её эксплуатировать - не придумали. Ну или у выполнявших какое-то другое программное окружение. Может PHP другой.


"Уязвимость в системе мониторинга Zabbix"
Отправлено Коля , 15-Авг-16 12:54 
заббикс имеет такой дикий говнокод в фронтэнде на пхп, что волосы под мышками становятся дыбом. Этот невинный баг баловство. Там и покруче вещи накопать можно, если нужно.

"Уязвимость в системе мониторинга Zabbix"
Отправлено Alex Emergy , 16-Авг-16 10:38 
Очень даже не плохо. Панель сделана в духе Windows 7-10. Только непорадовало, что нет индикации, что приложение запущено.