| |
В выпусках 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=JRandomUser&realname=login_name&realname=
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
", переменная realname передаётся три раза, что приведёт к выдаче функцией param массива ("JRandomUser", "login_name", "
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
"). Если в коде присутствует присвоение "realname => $cgi->param('realname')", то по сути этот блок можно отождествить с конструкцией ("realname", "JRandomUser", "login_name", "
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
"), что аналогично представлению (realname => "JRandomUser", login_name => "
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
"), т.е. осуществлено определение нового ключа "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 году.
|
|
- Главная ссылка к новости (http://krebsonsecurity.com/2014/10/bugzi...)
- OpenNews: Проект Mozilla объявил о возможной утечке 97 тысяч аккаунтов тестового сервера Bugzilla
- OpenNews: Релиз свободной системы отслеживания ошибок Bugzilla 4.0
| Тип: Проблемы безопасности | Ключевые слова: bugzilla, (найти похожие документы) | При перепечатке указание ссылки на opennet.ru обязательно | Реклама |
id=adv>
| |
1.2, онаним, 14:25, 07/10/2014 [ответить] [смотреть все] [к модератору]
| +/– |
fail. Удивительно, как можно делать столь сильные предположения о типе переменной в динамическом яп, особенно таком как перловка.
| | |
1.3, Аноним, 15:13, 07/10/2014 [ ответить] [ смотреть все] [ к модератору] –1 +/–http bloodhound apache org ... весь текст скрыт [ показать]
1.4, Аноним, 16:23, 07/10/2014 [ ответить] [ смотреть все] [ к модератору] –1 +/–В BugZilla устранена опасная уязвимость, позволяющая повысит...... весь текст скрыт [ показать]
1.5, vitalif, 16:24, 07/10/2014 [ ответить] [ смотреть все] [ к модератору] +/–
Я всегда охреневал от людей, которые вообще CGI.pm используют. Его достаточно один раз открыть, чтобы понять, что его писал героиновый наркоман. Эталонный кусок перл-говнокода.
И Bugzilla сама тоже хороша, я её форк пилю уже лет 5, планомерно говнокод (и CGI.pm тоже, ага) оттуда выкашивая. Хочу допилить и потом опубликовать где-нибудь с намёком на то, что "эй смотрите мазильщики, я тут ваш говнокод немного в чувство привёл"...
2.7, vitalif, 16:59, 07/10/2014 [ ^] [ ответить] [ смотреть все] [ к модератору] +/–
Так НЕ надо писать... Надо писать %hash = (key => scalar $cgi->param('key'));
Иначе если передать несколько значений key, то у тебя весь хеш "поедет" - контекст списочный, cgi->param вернёт список всех значений, и часть из них станет ключами, т.к. "=>" - синоним запятой.
А ещё лучше ВООБЩЕ НЕ ЮЗАТЬ $cgi->param - даже если используется CGI.pm, то просто стырить себе куда-нибудь все параметры в виде хеша и хавать их оттуда. Причём $cgi->Vars возвращает криво tie'енный хеш, так что нужно просто в цикле вытаскивать все параметры.
Ну или вообще юзать какой-нибудь PCGI.pm.
|
3.8, PavelR, 17:03, 07/10/2014 [^] [ответить] [смотреть все] [к модератору] | +/– |
Эмм, я как раз и имел ввиду, что так писать не надо, и если так написать - то именно так и схватишь уязвимость. 0)
В чем кривизна $cgi->Vars(), если это можно в двух словах описать?
| | |
|
4.9, vitalif, 17:09, 07/10/2014 [^] [ответить] [смотреть все] [к модератору] | +/– |
Если у какого-то ключа несколько значений, то в $cgi->Vars значением этого ключа будут просто сконкатенированные все эти значения. Т.е. из строчки &a=1&a=1 получится { a => '11' }.
| | | 3.13, vitalif, 19:50, 07/10/2014 [ ^] [ ответить] [ смотреть все] [ к модератору] +/–
А, кстати нет, с PCGI та же хрень - он вообще не умеет хеш значений вернуть...
1.11, Аноним, 18:20, 07/10/2014 [ответить] [смотреть все] [к модератору] +/–сам повысил свои привилегии, потом сам же и пофиксил с новыми привилегиями ... весь текст скрыт [ показать] Ваш комментарий
Read more |