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

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

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

Например, в случае запроса «index.cgi?realname=JRandomUser&realname=login_name&realname=admin@mozilla.com», переменная realname передаётся три раза, что приведёт к выдаче функцией param массива («JRandomUser», «login_name», «admin@mozilla.com»).

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