Уязвимости позволяют удаленному пользователю выполнить произвольный код на целевой системе.
Уязвимость существует из-за ошибки обработки входных данных при выполнении синтаксического анализа кода. Удаленный пользователь может выполнить произвольные команды на целевой системе.
Уязвимости позволяют удаленному пользователю выполнить произвольный код на целевой системе.
Уязвимость существует из-за ошибки обработки входных данных при выполнении синтаксического анализа кода. Удаленный пользователь может выполнить произвольные команды на целевой системе.
Как уязвимость может затронуть пользователя?
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
Скачал версию 4.3 с сайта производителя. Собрал, установил... уязвимость не исчезла =_=
Debian Wheezy
[root@srv~]# env x='() { :;}; echo vulnerable' bash -c 'echo hello'
hello
Вот такая у меня ситуация
Версия 4.3.0 от 26-Feb-2014
Там еще свежий патч есть:
Да, с патчем все прокатило, спс.
А как патч накладывали ? У меня не получилось.
и все...
UPD. Разобрался :
ложим патч в корневую папку
patch -p0 < bash43-025
Спасибо, нашел уже.
Профтыкал знак <
Кто вообще в бинарных дистрибутивах собирает из тарболов такие вещи, как bash? :-/
А что делать если в репах лежит старый пакет с дырой в безопастности? Из всех дистрибов только Ubuntu оперативно отработал.
Конкретно в вашем (Debian ведь?) - взять готовый патченый source-пакет из ближайшей к вам версии ubuntu, собрать пакет, установить.
Как интересно удаленно вы собираетесь запустить bash на какой-либо системе не имея логина и пароля к ней для доступа по телнет/ссш?
hint: cgi
Как вариант решения проблемы - установите dash и замените симлинк/хардлинк /bin/sh на него. Проблема ж именно в том, что там симлинг на bash, а сам bash нигде в общем-то не используется.
Ну вот типичная ситуация: скрипт на коленке что-то автоматизирует, выполняет команды и сам запускается из под CGI, соответственно получает http-заголовки через переменные окружения, которые передаются процессу /bin/sh, который выполняет те команды. Если /bin/sh симлинком на bash - атакер может через GET запрос со специальным заголовком выполнить хоть rm -rf /
Кстати не только CGI, распространяется и на FastCGI и подобные, которые на каждый HTTP запрос заполняют переменные окружения его заголовками.
можете проверить на вашем же примере только поменять вызов `` на system или exec
т.е. если нормально писать CGI то ничего страшного не будет...
Метасимволы - это еще хуже, это значит, что никто реально не сможет сказать, когда у них вызывается шелл в коде, потому что никто не помнит те метасимволы. Захотел передать аргумент с пробелом и получить построчный вывод в массив - метасимвол тут как тут и утилитка вызывается через шелл, а не напрямую через execve(). И вообще все это излишняя сложность, она к добру не ведет. Вон вы даже ошибаетесь на счет когда шелл вызывается в обратных кавычках, а смело судите о том, как это ниче страшного и существует какое-то "нормально писать". Не существует, перестаньте заблуждаться, и всякий вызов шелла можно встретить в очень неожиданных местах.
Безопасность - это вообще очень тяжело. Очень-очень. Настолько, что у всех здесь на форуме вся инфраструктура обычно сильно страшно дырявая, а только иногда просто дырявая. Но при этом большинство считает, что у них все ок.
Я тут как-то предупреждал людей не светить ssh наружу, минимум с белых списков /etc/hosts.allow начинать. Но меня по-моему никто адекватно не воспринял. Пока очередная зиродэй уязвимость в ssh не всплыла, мало кто даже задумался.
Так и сейчас. Уязвимость особенно страшная для админов из-за типичной админской автоматизации, а кто-то еще спорит, что нет. Не гоните.
Проблема я так понимаю сугубо на линухе где /bin/sh симлинком на баш?
После обновления у меня тоже самое выдает
Внимательно ветку читали ?
Еще нужно последний патч наложить.
Патчи наложил все, вплоть до 28-го
You should to log in