В дополнение к изначальной выявленной уязвимости в Bash (CVE-2014-6271) и обходному методу атаки (CVE-2014-7169) исследователи безопасности выявили ещё три уязвимости, вызванные ошибками в реализации кода разбора функций. Так как разбор функций производится в Bash для всех переменных окружения, данные уязвимости также могут быть легко эксплуатированы через формирование специального содержимого, попадающего в переменные окружения. Уязвимости в bash последние дни появляются достаточно интенсивно и многие эксперты прогнозируют, что не все проблемы устранены. Для комплексной проверки систем на подверженность атакам Shellshock подготовлен универсальный скрипт. Проблемы CVE-2014-7186 и CVE-2014-7187 обнаружены Флорианом Ваймером (Florian Weimer) из компании Red Hat, который сразу подготовил исправление с исправлением. Проблемы вызваны некорректной обработкой операций с памятью при разборе выражений и позволяют обойти внесённые прошлыми исправлениеами ограничения для организации выполнения кода. Кроме непосредственного устранения уязвимости исправление включает и превентивную меру - вводит в обиход специальный префикс "BASH_FUNC_", при котором, в сочетании с наличием в имени суффикса "()", допускается разбор функций в переменных окружения. Для переменных не соответствующих маске "BASH_FUNC_имя()" обработка функций отключена. В связи с этим, дистрибутивы выпустили третью волну обновлений Bash, в том числе включающую привязку к именам "BASH_FUNC_имя()". Интересно, что проблем удалось избежать в NetBSD и FreeBSD, так как после первой уязвимости сопровождающие порт с Bash полностью отключили поддержку передачи функций через переменные окружения, посчитав, что, в данном случае, безопасность важнее обратной совместимости. Что касается пятой и шестой уязвимостей (CVE-2014-6277 и CVE-2014-6278), то их выявил Михаил Залевский (Michal Zalewski), известный польский эксперт в области компьютерной безопасности, работающий в Google. Информация о проблеме пока не придана огласке (ожидается включение исправлений в bash). Общий прогноз достаточно пессимистичен, так как при разборе кода функций в bash применяется большой универсальный пласт кода, который потенциально может предоставлять множество различных векторов для атак, так как данный код написан без оглядки на обработку данных, поступающих извне. Для решения проблемы рекомендовано использовать вышепредставленный исправление с ограничением имён переменных, содержащих функции.
Подробности