В BugZilla устранена опасная уязвимость, позволяющая повысить свои привилегии

В выпусках 4.0.14, 4.2.10, 4.4.5 и 4.5.5 системы для ведения базы данных ошибок, контроля за их исправлением и общего координирования процесса разработки BugZilla устранена опасная уязвимость (CVE-2014-1572), позволяющая поднять свои привилегии и получить доступ к закрытым группам. Теоретически аналогичные ошибки могут присутствовать и в других проектах на языке Perl, использующих модуль CGI.pm и заполняющих хэши неэкранированными значениями функции param.

Проблемы вызвана непониманием особенности разбора повторяющихся параметров в URL — в случае передаи скрипту нескольких параметров с одинаковым именем, функция param модуля CGI.pm возвращает не скалярную переменную, а массив, в котором перечислены все значения подобных параметров. При заполнении хэша открытым списком по сути производится перечисление пар ключ/значение (символ «=» в присвоении вполне может быть заменён на запятую), поэтому если вместо одного из аргументов передан массив и этот аргумент не экранирован, то можно перечислить в данном массиве имена ключей и их значение, и данные ключи будут определены в хэше.

Например, в случае запроса «index.cgi?realname=JRandomUserrealname=login_namerealname=admin@mozilla.com», переменная realname передаётся три раза, что приведёт к выдаче функцией param массива («JRandomUser», «login_name», «admin@mozilla.com»). Если в коде присутствует присвоение «realname = $cgi-param(‘realname’)», то по сути этот блок можно отождествить с конструкцией («realname», «JRandomUser», «login_name», «admin@mozilla.com»), что аналогично представлению (realname = «JRandomUser», login_name = «admin@mozilla.com»), т.е. осуществлено определение нового ключа «login_name». Простейшим способом устранения проблемы является явное определение скалярного типа переменной, т.е. указание «realname = scalar $cgi-param(‘realname’)».

Используя данный метод выявившие уязвимость исследователи безопасности смогли завести аккаунты с доступом к закрытым областям BugZilla проекта Mozilla, обойдя стадию верификации почтового адреса. Уязвимость использовалась для передачи фиктивного email в момент определения группы пользователя — bugzilla автоматически назначает новых пользователей в группы, на основании проверки email (например, можно вместо реального адреса, заполнить поле значением в поддомене @mozilla.com, при том, что изначально для верификации использовался совершенно другой адрес).

Вектором атаки может быть получение доступа к записям, в которых отвечающие за безопасность команды разработчиков могут обсуждать ещё не исправленные уязвимости, до их придания огласке. BugZilla достаточно широко используется для координации внесения исправлений в открытых проектах, например, применяется сообществами
Apache, LibreOffice, Mozilla, ядра Linux , OpenSSH, Eclipse, KDE, GNOME. Проблеме подвержены все установки Bugzilla начиная с версии 2.23.3, выпущенной в 2006 году.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.