В Bugzilla устранена опасная уязвимость, открывшая новый вид атак на web-приложения

7 октября 2014 года

В выпусках 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=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')".

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

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

Выявившие уязвимость исследователи указывают на то, что проблема не ограничивается Bugzilla и возможно присутствует в некоторых других web-проектах. Сама уязвимость рассматривается как новый класс атак на неаккуратно написанные web-приложения, сопоставимый по степени опасности с внедрением SQL-кода. При этом проблема не ограничивается Perl и может проявляться и в других языках с динамической типизацией.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «В Bugzilla устранена опасная уязвимость, открывшая новый вид атак на web-приложения», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.