Shellshock или мнимая угроза

Terminal

Многие технические интернет-ресурсы стали активно освещать информацию о новой обнаруженной угрозе компьютерной безопасности. Имя новой страшилки — Shellshock. И по предварительной оценке специалистов она гораздо серьёзнее шумевшей в прошлом году мастшатбно растиражированной Heartbleed. Но далеко не все ресурсы говорят о том, что же такое на самом деле Shellshock и чем эта уязвимость грозит именно вам?

Давайте попробуем рассмотреть всё с самого начала. Все Unix операционные системы содержат в себе один или больше shell — командную оболочку. Служебная программа Терминал в Mac OS X — явное тому доказательство. Эта утилита как раз и обеспечивает доступ Мак-пользователя к ресурам среды Unix, bash. Когда вы вводите в Терминале скажем, «ls -al», эта простая текстовая запись интерпретируется и выполняется bash’ем как команда, а в окне программы отображается её результат (отображение результата выполнения команды, кстати, совсем необязательно). То есть Терминал — программный интерпретатор в Mac OS X.

Существует большое количество разных командных оболочек: Bourne shell или просто sh, Bourne-Again shell или bash, C shell или csh, Debian Almquist shell или dash и другие. Терминал в Mac OS X использует bash и это как раз та оболочка, которая подвержена набирающей известность уязвимости.

Командный процессор bash поддерживает то, что называется «переменная среды». Это настройки для shell, хранящиеся в отдельном конфигурационном файле, который можно отредактировать вручную или запуском специализированных команд. Уязвимость Shellshock как раз начинается с модификации этой самой переменной среды bash. Не стоит путать эту брешь с угрозой безопасности всей системы, ведь для того, чтобы её использовать злоумышленник должен получить доступ к машине. Тем не менее возможны случаи, когда скрипты, запускаемые веб-сервером в пользовательском браузере могут модифицировать переменную среды и запустить код bash. То есть злоумышленник может отправить вредоносные данные на подверженный угрозе сервер, содержащий произвольный bash-код и сервер выполнит его.

К примеру, Мак-пользователь может запустить следующую команду:
env x=‘() { :;}; echo vulnerable’ bash -c “echo this is a test”

И на подверженной угрозе системе он увидит результат:
vulnerable
this is a test

Этот код должен выполнить две вещи: изменить переменную среды, названную x (не имеет значения её имя) до значения, которое включает “echo vulnerable” команду, а затем в новом окне bash выполнить команду “echo this is a test”. На подверженных угрозе системах код будет выполняться перед тем, как команда будет отправляться в новое окно bash.

Теоретически это очень серьёзная угроза безопасности. Скрипт может сделать всё, что угодно. Хакер, использующий эту брешь может загрузить и установить вредоносное программное обеспечение на сервер, собрать какие-либо файлы и передать их куда-нибудь, открыть существующие (но не активированные) сервисы для получения удалённого доступа к машине, удалить огромные массивы данных и пр.

Тем не менее очень важно понимать масштаб уязвимости. Это не вирус, которому подвержены все Маки, как некоторые пользователи посчитали. То, что вы смогли запустить этот код и получили такой нехороший ответ в принципе возможно только потому, что вы запустили его локально, имея физический доступ к машине. Для исполнения вредоносных команд ваш компьютер должен быть открыт интернету, доступен извне для изменения переменной среды bash.

Если же вы всё-таки используете Мак как веб-сервер, то теоретически эта угроза может вас коснуться. Вам следует внимательно изучить настройки машины и убедиться, что она не использует CGI-скрипты или подобное. Следует проверить, что непроверенные соединения не могут получить доступ к переменным среды.

В некоторых случаях программное обеспечение, поставляемое с принтером или сканером может использовать серверные процессы. Например в случаях, когда ваш Мак выступает в роли принт-сервера. В теории это тоже угроза безопасности и если вы параноик, изучите ваше соединение с интернетом. Ваш маршрутизатор должен выдавать вашему компьютеру не реальный IP-адрес (то есть адрес вашей машины должен начинаться или с 192.168, или 10.0, или 172.0). Разумеется, следует пойти дальше и проинспектировать настройки маршрутизатора. Следует убедиться, что проброс портов не включен или не разрешает удалённых подключений к вашему Маку.

В Купертино быстро отреагировали на новость о серьёзной угрозе безопасности. Сначала мы получили информацию, что уязвимость может затронуть только тех пользователей, которые не понаслышке знакомы с Unix-содержимым Мака и чьи стандартные настройки системы были изменены ими самостоятельно (а раз так, то и такие пользователи прекрасно сами осознают возможные риски и могут избежать их самостоятельно). А чуть позже, вчера (29 сентября 2014 года), были выпущены соответствующие обновления безопасности.

OS X bash Update 1.0:

Настоятельно вам рекомендуем блог Томаса Рида, чья очередная новость и экспертное мнение стали поводом для этой публикации.

Об авторе Дмитрий Кирьянов

Старший инженер технической поддержки одного из известных в Мак-сообществе авторизованного Apple сервис-центра.
Метки: , , , . Закладка Постоянная ссылка.