Компрометация системы в bash

Дата публикации:
25.09.2014
Дата изменения:
25.09.2014
Всего просмотров:
12585
Опасность:
Высокая
Наличие исправления:
Да
Количество уязвимостей:
1
CVSSv2 рейтинг:
(AV:N/AC:L/Au:N/C:C/I:C/A:C/E:U/RL:OF/RC:C) = Base:10/Temporal:7.4
CVE ID:
CVE-2014-6271
Вектор эксплуатации:
Удаленная
Воздействие:
Компрометация системы
CWE ID:
Нет данных
Наличие эксплоита:
Нет данных
Уязвимые продукты:
Уязвимые версии: 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) рекомендуется как можно скорее загрузить последние обновления для данного программного продукта.

URL производителя: http://ftp.gnu.org/pub/gnu/bash/

Решение: Установите последнюю версию 4.3 с сайта производителя.

Ссылки: http://seclists.org/oss-sec/2014/q3/649

или введите имя

CAPTCHA
Анатолий
25-09-2014 19:27:35
Что-то не работает у меня описанный способ % wget --user-agent="env x='() { :;}; echo vulnerable' bash -c 'echo hello >>/tmp/vulnerable'" http://domain.com/ Просто вижу запись в access_log, но команда не выполняется. Может фейк?
0 |
zs
26-09-2014 23:20:33
во нуб, echo vulnerable выполнится и никаких следов не будет
0 |
el
27-09-2014 10:18:34
В команде сделано перенаправление в файл, так что следы могли бы быть. Тут скорее дело в том, что bash не запускается при такой запросе. Может сработать, если на запрос запускается cgi-шка скриптовая (с #!) или допустим php-скрипт, который запускает bash-скрипт с помощью system/exec.
0 |
26-09-2014 09:32:12
Всё норм! Работает! Вчера еще обновлял CentOS и обратил внимание патча на эту каку. Вот это оперативность! Спасибо!
0 |