В командной оболочке bash обнаружена критическая уязвимость (Updated 2) | ||
Безопасность | ||
Обнаружен метод обхода исправления уязвимости в оболочке bash ... |
В командной оболочке bash обнаружена критическая уязвимость
Просуществовавшая в течение 22 лет брешь позволяет удаленно выполнить код.
В командной оболочке bash, пользующейся популярностью в среде Linux, обнаружена критическая уязвимость, которая позволяет удаленно выполнить код. По десятибалльной шкале Национального Института стандартов и технологий США (NIST) брешь получила 10 баллов.
Уязвимость CVE-2014-6271 связана с некорректной обработкой переменных окружения и определений функций. Стоит отметить, что в используемых в настоящее время версиях bash наименование переменной окружения и функции совпадают. При этом определение функции начинается со знаков () {.
Брешь возникает по причине того, что после обработки определения функции оболочка не останавливается, а продолжает осуществлять синтаксический анализ кода и выполнять дальнейшие команды bash. Это позволяет злоумышленнику использовать переменную окружения с произвольным именем для доставки команд на системы жертвы.
Просуществовавшая в течение 22 лет CVE-2014-6271 была обнаружена на прошлой неделе ИБ-экспертом Стефаном Чазеласом (Stephane Chazelas), однако подробности раскрыты только сейчас. Уязвимость присутствует во всех версиях bash до 4.3. Исправления были выпущены в среду, 24 сентября.
Обнаружен метод обхода исправления уязвимости в оболочке bash
С помощью целевых атак на конкретные CGI-скрипты злоумышленник может расширить область их действия.
25 сентября, сообщали о критической уязвимости в командной оболочке bash, которая позволяет удаленно выполнить код. Брешь, просуществовавшая в течение 22 лет, была исправлена в среду, 24 сентября. Тем не менее, пользователи Reddit сообщили о том, что патч можно обойти.
Проверить метод обхода исправления и возможность эксплуатации уязвимости в Ubuntu и Debian можно с помощью команды
env X="() { (a)=>\" sh -c "echo date"; cat echo
ИБ-эксперт Роберт Грэм (Robert Graham) из Errata Security сообщил о проведенном сканировании серверов на наличие уязвимости CVE-2014-6271. В ходе первого тестирования при запросе корневой страницы по IP-адресу, не заполняя заголовок Host, исследователь обнаружил 3 тысячи уязвимых хостов. Таким образом, если осуществлять полноценное сканирование и указывать корректные доменные имена, то подверженных уязвимости ресурсов может быть больше в несколько десятков раз.
По словам Грэма, с помощью целевых атак на конкретные CGI-скрипты (например, на /cgi-sys/defaultwebpage.cgi из CPanel) злоумышленник может расширить область их действия. Эксперт также отметил, что простота эксплуатации бреши может вызвать в ближайшее время появление червей для конкретных CGI-скриптов.
Компрометация системы в bash (подробности)
Уязвимые версии: bash версии до 4.3
Описание:
Уязвимости позволяют удаленному пользователю выполнить произвольный код на целевой системе.
Уязвимость существует из-за ошибки обработки входных данных при выполнении синтаксического анализа кода. Удаленный пользователь может выполнить произвольные команды на целевой системе.
Как уязвимость может затронуть пользователя?
bash и ОС хранят список переменных окружения, которые описывают текущего пользователя, путь к приложениям на жестком диске и прочие функции. Создав переменную окружения с особой структурой, взломщик сможет выполнить произвольный код на ПК жертвы во время следующего запуска bash.
Создать переменную окружения можно следующим образом:
- Установить удаленное соединение через SSH и попробовать войти в систему. Подобрав специфический логин или имя хоста, можно создать переменную окружения со специфическими данными;
- Вынудить пользователя создать переменную окружения самостоятельно;
- Вынудить определенные программы задать нужное значение переменной окружения. К примеру, пользователь запустил web-сервер и скрипт, устанавливающий собственную переменную окружения. Даже несмотря на то, что работа скрипта не изменяет системные переменные окружения, ОС уже уязвима.
Установив собственную переменную окружения, хакеры смогут выполнить произвольный код на устройстве пользователя при следующем запуске bash. Ситуация может стать еще опаснее при использовании команды sudo –s, запускающей bash с корневыми правами.
Отметим, что некоторые программы используют bash для совершения собственных операций. Даже если пользователь не использует bash, его ПК уже может быть уязвим.
Проверка
Для того чтобы проверить, уязвима ли система, следует выполнить в терминале команду:
env x="() { :;}; echo vulnerable" bash -c "echo hello"
Если система пользователя защищена, bash вернет следующее сообщение:
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for "x"
hello
Если система пользователя уязвима, bash вернет следующее сообщение:
vulnerable hello
Исправление
Разработчики Bash выпустили срочное исправление, устраняющее эту уязвимость. Всем пользователям ОС Linux (особенно дистрибутивов Ubuntu и Debian) рекомендуется как можно скорее загрузить последние обновления для данного программного продукта.
Проверка
Введите:
env X="() { (a)=>\" bash -c "echo date"; cat echo
Если в конце вывелась текущая дата - всё плохо. Получившаяся дата находится в файле ./echo, появившемся в результате действия команды, поэтому если выполнить эту команду в каталоге, в котором находится команда echo, от имени суперюзера - echo перестанет быть программой.
Более наглядно:
[test@localhost ~]$ export x='() { :;}; echo vulnerable'
[test@localhost ~]$ bash -c "echo this is a test"
vulnerable
this is a test
[test@localhost ~]$ /bin/sh -c "echo this is a test"
vulnerable
this is a test
Универсальный скрипт для проверки на наличие уязвимостей https://github.com/hannob/bashcheck