The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Уязвимость в системе мониторинга Zabbix

13.08.2016 22:48

В обновлениях системы мониторинга Zabbix 2.2.14 и 3.0.4 устранена уязвимость, позволяющая выполнить SQL-код в СУБД и добиться выполнения произвольных команд на сервере и отслеживаемых хостах. В частности, через SQL-запрос можно получить права администратора Zabbix, который в зависимости от конфигурации может выполнять команды на хостах, отслеживаемых в Zabbix. Проблема вызвана недостаточной проверкой допустимых значений параметра toggle_ids при обращении к странице latest.php. Атака возможна со стороны аутентифицированного пользователя или при включении гостевого входа без пароля.

  1. Главная ссылка к новости (http://seclists.org/fulldisclo...)
  2. OpenNews: Выпуск системы мониторинга Zabbix 3.0
  3. OpenNews: Выпуск системы мониторинга Zabbix 2.4
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: zabbix
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, A.Stahl (ok), 23:46, 13/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +34 +/
    Лес. Зима. Вечер.
    Подходит toggle_ids к latest.php, стучит и спрашивает: "А кто в скриптике живёт?"
    А из latest.php ему отвечают: "Я Заббикс, за процессами слежу в этом скриптике сижу! А ты кто?"
    -- А я Случайный Запрос, toggle_ids не донёс. Можно я с тобой поживу, SQL-код в СУБД пропихну?
    -- Ну заходи, будем вместе жить, процессы сторожить.
    И жили они долго и счастливо до самого kill -9!
     
     
  • 2.2, Аноним (-), 00:31, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > kill -9

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

     
     
  • 3.5, Аноним (-), 02:49, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Alt-sysrq-b тебе в помощь. В мультиках это обычно так: ты стоишь себе такой, ла-ла-ла. И тут на тебя падает рояль с тридцатого этажа.
     

  • 1.3, XoRe (ok), 00:36, 14/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Похоже, ветка 2.4.х не подвержена атаке
     
     
  • 2.10, Andrey Mitrofanov (?), 12:07, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Похоже, ветка 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... На картинках его не рисуют: плохо для продаж.

     

  • 1.4, Аноним (-), 00:44, 14/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Две недели назад у меня отключили сервер мониторинга на публичном IP. Якобы за рассылку спама. Установить не удалось что это было. Обновил zabbix и ОС. Запаролил админку апачевским паролем. Пока полет нормальный. Читал логи. Проверял конфиги. Проверял всякими утилитами типа tiger и т.д. в логах zabbix на тот период когда пров жаловался - странное повышение la - при среднем la 0,1 было повышение до примерно 0,7 которое четко видно на графике. Вопрос. Что это было?
     
     
  • 2.8, Michael Shigorin (ok), 11:16, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > Что это было?

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

     
     
  • 3.9, Andrew (??), 11:40, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В альте собрали на 3 дня позже, чем пакеты под Ubuntu и Centos, которые появились на оффсайте 22-го числа.
     

  • 1.7, YetAnotherOnanym (ok), 08:47, 14/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мда... в 2016 году пыхеры так и не освоили санитизацию запросов.
     
     
  • 2.11, Аноним (-), 17:37, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Google вбросил им как это нужно реализовать https://wiki.php.net/rfc/sql_injection_protection
     
     
  • 3.12, Аноним (-), 22:57, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Google вбросил им как это нужно реализовать https://wiki.php.net/rfc/sql_injection_protection

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

     
     
  • 4.13, Мяут (ok), 23:15, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Легко реализуется путем NoSQL баз.

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

     
     
  • 5.16, Аноним (-), 03:54, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А если у меня база простая как валенок, понимающая только key и value ассоциированный с ним, и оба произвольные значения, возможно как максимум с ограничением по длине - как ты это хакать будешь, интересно? Оно чисто технически не имеет никаких языков запросов через которые ты бы мог у меня выполнить код. Как самый максимум ты может быть положишь какой-то мусор в базу лишний раз. Это, конечно, свинство, но намного менее неприятное :)
     
     
  • 6.18, www2 (??), 07:47, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Оно чисто технически не имеет никаких языков запросов через которые ты бы мог у меня выполнить код. Как самый максимум ты может быть положишь какой-то мусор в базу лишний раз. Это, конечно, свинство, но намного менее неприятное :)

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

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

     
  • 6.19, КО (?), 07:54, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>А если у меня база простая как валенок, понимающая только key и value ассоциированный с ним

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

     
  • 6.24, angra (ok), 09:37, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Просто у тебя хакерское воображение отсутсвует как таковое. Тут пару дней назад пробегала новость о использовании redis для взлома сервера. Поинтересуйся деталями, они есть по ссылкам. Откроешь для себя новый мир, где подстановка "мусорного" ключ->значение достаточна для взлома. И никакого SQL или выполнения кода со стороны БД.
     
  • 4.14, Аноним (-), 23:48, 14/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    https://mariadb.com/sites/default/files/MaxScaleSecuritySolution-100615_600px.
     
     
  • 5.17, Аноним (-), 03:57, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > https://mariadb.com/sites/default/files/MaxScaleSecuritySolution-100615_600px.

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

     
     
  • 6.20, www2 (??), 07:57, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> https://mariadb.com/sites/default/files/MaxScaleSecuritySolution-100615_600px.
    > Отличный пример того как сначала люди создают себе проблемы. зачем-то научив базу
    > выполнять код

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

     
     
  • 7.26, Аноним (-), 12:07, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Формально, можно было бы разнести DDL и DML, да и в принципе любовь WEB + MySQL + PHP к "Alter table add column" нехорошая штука.
    Столкнулся с тем что "некоторых разработчиков" очень сложно убедить в том что им для "сайта" ddl не нужен :)
     
     
  • 8.33, www2 (??), 11:50, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Честно говоря, я не понимаю о ком вы Разработчики Zabbix нигде не делают alter ... текст свёрнут, показать
     
  • 6.25, angra (ok), 09:40, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Болезный, ты где на картинке увидел код? Если для тебя where это код, то настоятельно советую сменить профессию.

     
  • 4.27, DeadLoco (ok), 12:29, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    SQL умеет столько, сколько нужно для работы с множествами. А что большинство ниасиляторов использует РСУБД в качестве индексированого кеша - это проблемы ниасиляторов.

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

     

  • 1.15, Аноним (-), 00:36, 15/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что ни придумают, лишь бы Nagios не пользоваться(
     
     
  • 2.21, www2 (??), 08:03, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В Nagios есть NRPE и это его основное назначение - выполнять команды, которые попросит сервер мониторинга. Zabbix позволяет выполнять команды на удалённом узле, но по умолчанию эта функция отключена, потому как хватает штатных возможностей агента и UserParameter. Выполнять вообще-вообще произвольные команды - это очень редкий случай.

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

     
     
  • 3.23, PavelR (??), 08:19, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >В Nagios после правки конфига нужно перезапускать весь сервер. Кушайте сами.

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

     
     
  • 4.28, www2 (??), 12:32, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вброс или не вброс, но кушайте сами. Меня Zabbix устраивает вполне. В "ём" есть сложные выражения для триггеров, графики, оповещения, действия, API, разграничение доступа. Ядро умеет очень много. В Nagios что ни надо замониторить, всё внешним плагином делается, который может только сказать хорошо или плохо сейчас. Предыдущее состояние в плагине взять неоткуда. Попробуйте в вашем нагиосе сделать триггер "если среднее значение на хосте A за сутки больше, чем 10% от среднего значения на хосте Б за час, то проблема". Своё хранилище придётся придумывать для хранения данных предыдущих опросов.
     
     
  • 5.34, PavelR (??), 12:27, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Вброс или не вброс, но кушайте сами. Меня Zabbix устраивает вполне.

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

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

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

     
  • 2.22, www2 (??), 08:13, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вот вам вбросик: https://www.opennet.ru/opennews/art.shtml?num=22285
     
  • 2.31, XoRe (ok), 14:38, 15/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Что ни придумают, лишь бы Nagios не пользоваться(

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

     
     
  • 3.36, anonimous (?), 06:31, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это Поллер Zabbix'a за тебя решил.

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

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

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

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

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

     

  • 1.29, www2 (??), 12:35, 15/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я посмотрел на эту уязвимость. Не знаю, почему, но у меня на 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 другой.

     
  • 1.30, Коля (ok), 12:54, 15/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    заббикс имеет такой дикий говнокод в фронтэнде на пхп, что волосы под мышками становятся дыбом. Этот невинный баг баловство. Там и покруче вещи накопать можно, если нужно.
     
  • 1.32, Alex Emergy (?), 10:38, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень даже не плохо. Панель сделана в духе Windows 7-10. Только непорадовало, что нет индикации, что приложение запущено.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру