Компания
313,56
рейтинг
25 сентября 2014 в 16:27

Разработка → Новая опасная уязвимость ShellShock позволяет атаковать множество устройств, от смартфонов до промышленных серверов

Эксперты Positive Technologies предупреждают о новой уязвимости ShellShock (CVE-2014-6271), использование которой позволяет выполнить произвольный код. Уязвимость затронула не только интернет-серверы и рабочие станции, но и устройства, которые мы используем в повседневной жизни — смартфоны и планшеты, домашние маршрутизаторы, ноутбуки.

image

Уязвимость присутствует в одном из фундаментальных компонентов Linux-систем, командной оболочке bash. Механизм обработки экспортированных функций позволяет злоумышленнику удаленно запускать произвольные команды операционной системы, в случае если он имеет возможность влиять на переменные окружения системы. Подобная ситуация часто складывается в веб-приложениях при использовании интерфейса CGI (например, сервер Apache с использованием mod_cgi или mod_cgid). Также уязвимы распространенные технологии онлайн-разработки PHP и Python при использовании вызовов system/exec или os.system/os.popen соответственно.

Примером уязвимого приложения является распространенная панель управления хостингом cPanel. Существуют и другие методы эксплуатации, связанные с применением механизма ограниченного доступа ForceCommand в OpenSSH, реализуемого в таких системах, как Git и Subversion.

Есть информация, что ряд исследователей безопасности, в частности @ErrataRob, уже активно сканируют глобальную сеть в поисках уязвимых серверов.

Эксперты Positive Technologies рекомендуют срочно установить обновление безопасности на все общедоступные серверы GNU/Linux, поскольку по негативным последствиям данная уязвимость может быть сопоставима с нашумевшей ошибкой в OpenSSL — HeartBleed. В зоне риска системы удаленного управления серверами и промышленными системами. Зачастую они разработаны с широким использованием shell-технологий и при этом крайне редко обновляются. Другие потенциальные кандидаты на взлом с использованием новой уязвимости — точки доступа, маршрутизаторы, встраиваемые устройства, принтеры и вообще любые устройства, связанные «интернетом вещей».

image

Более того, потенциально атака может быть произведена и на пользовательские устройства, такие как смартфоны и планшеты под управлением Android: достаточно просто подключится к управляемой злоумышленником точке беспроводного доступа. Такие атаки наиболее опасны в местах массового скопления людей, активно использующих Wi-Fi, — в кафе, в метро, в аэропорту.

«Эта уязвимость примечательна тем, что использует вполне «легальный» механизм командной оболочки, в сочетании с распространенной в *nix-сообществе техникой применения команд операционной системы. К сожалению, многие встраиваемые устройства, используемые как в корпоративных сетях, так и в домашних системах, потенциально уязвимы для атаки ShellShock. Усугубляет дело тот факт, что системы на таких устройствах крайне редко обновляются и часто содержат устаревшие версии ОС и системных компонентов. Пользователям смартфонов, планшетов и ноутбуков под управлением Linux и Mac OS X не рекомендуется подключаться к незнакомым точкам беспроводного доступа до установки обновления безопасности», — отметил Сергей Гордейчик, заместитель генерального директора Positive Technologies.

Встроенные механизмы системы защиты приложений Positive Technologies Application Firewall, даже в базовой ее конфигурации, позволяют выявлять и блокировать атаку ShellShock. Клиенты сервиса Advanced Border Control получат оперативные уведомления об выявленных недочетах.

Подробнее об уязвимости: www.securitylab.ru/vulnerability/458762.php
Автор: @ptsecurity
Positive Technologies
рейтинг 313,56

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

  • +12
    Ну сравнение с HeartBleed это уж черезчур. В HeartBleed можно было получать данные памяти сервера никак не влияя на него. А тут мало того, что должен быть вызов баша, так еще и пользователь должен иметь возможность туда что-то ввести, да еще вызывающий код должен не иметь никакой фильтрации/эскейпа/проверок безопасности. Ну и плюс выполняется команда от того же пользователя, что и основной процесс…
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Я так понял вместо пользователя тут выступает веб-сервер Apache, который установит переданный User-Agent в качестве переменной для bash.
  • +15
    С подключением!
    Все подробности проблемы, выпущенные патчи и новые обходные пути уже против патчей второй день обсуждаются в интернетах, и даже на хабре.
    У вас же без вкусных подробностей получается маркетинговая статья в корпоративном блоге. Нулевая ценность и реклама своего продукта.
  • +1
    Эксперты Positive Technologies рекомендуют срочно установить обновление безопасности на все общедоступные серверы GNU/Linux

    А обновлять ещё бесполезно, патч против патча ещё не выпустили основные дистрибутивы, с подробностями, например здесь — www.opennet.ru/opennews/art.shtml?num=40670
  • 0
    На большинстве встраиваемых систем ( и Android в том числе ) нет bash. Там находится sh, который водит в комплект busybox.
    • +2
      ash, если быть точнее.
      • –3
        Я просто написал доступную команду. В Android он не имеет линка с таким именем.
        • +1
          Если вы запустите busybox, то внутри busybox’а вы сможете запустить ещё одну оболочку busybox именно этой командой. Кроме того, если есть исполняемый файл, называемый busybox, но нет никаких символических ссылок на него, то busybox ash вызовет оболочку.

          Уточнение от ValdikSS важно, потому что в busybox может быть встроена ещё один вариант оболочки — hush. Правда когда я попытался использовать powerline в этой оболочки она упала.
          • 0
            на моем Android sh является ссылкой на mksh.
            busybox вообще не обнаружен. По крайней мере для непривилегированного пользователя он недоступен.
  • +4
    Баг, конечно, критичный, но лично мне кажется, что использовать его достаточно тяжело. Во-первых, добавить environment в CGI не-Bash скрипты (Perl, Python, PHP) достаточно сложно (ну, если только не из system() дальше скрипты запускают), а во-вторых, этот баг больше будет эксплуатироваться не в веб-приложениях, а во всяких сервисных скриптах, типа dhcp, ps (который для печати).
    Ну и конечно embedded-системы, но как бы чистый cgi я уже давно не видел, сейчас, как правило, используют веб-сервер goahead, где компилируют cgi прямо в бинарник. И там не bash, а, как правило, ash busybox'а.
    • +2
      Поговаривают, что в линуксе dhclinet любит записывать в ENV что-то что пришло от DHCP-сервера и потем дергать всякие разные шелл скрипты. От рута, конечно :-)
      • +1
        Поговаривают, что iOS-устройства подвержены уязвимости через DHCP тоже. Скорее всего, скоро будет jailbreak для Apple TV. DHCP-клиенты-то от root работают.
    • 0
      Ну как показывает практика, он эксплуатируется и достаточно легко. А еще проверьте логи, интернеты уже вовсю сканят, что не удивительно.
      • 0
        Я еще вчера проверял, у меня нигде нет CGI. Роутеры свои (и чужие тоже) я проверил, они не подвержены уязвимости, по крайней мере, до аутентификации.
    • 0
      Вы не правы, все заголовки запроса, например User-Agent передаются в CGI как переменные среды окружения. Для эксплуатации достаточно установить соответствующий заголовок.
      Фактически, любой PHP или Perl скрипт который делает system() уязвим, если при этом вызывается bash.
      • 0
        Я, вроде, именно это и написал.
        • 0
          Во-первых, добавить environment в CGI не-Bash скрипты (Perl, Python, PHP) достаточно сложно

          Вот это не соответствует действительности. Атакующий почти всегда имеет контроль над какой-либо переменной окружения в CGI, а exec-функции, за исключением тех, где переменные окружения передаются явно, наследуют переменные окружения родительского процесса, как и в случае system().
          • 0
            А, ну да. Думал об одном, а написал другое. Ну да ладно. В любом случае, далеко не в каждом скрипте используется system(), но, конечно, где-то да встречается.
  • –1
    ??.174.68.254 — поиграем в bulls and cows? :)
  • 0
    Команда bash, которую можно выполнить для проверки на наличие уязвимости:
    env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

    на уязвимой системе выведется слово «vulnerable»
    • 0
      Небольшое, но необходимое, дополнение: данная команда проверит уязвимость вашей версии bash, а не вашей текущей оболочки. Если вы запустили данную команду из‐под zsh и увидели «vulnerable», не кидайтесь писать в список рассылки, что zsh уязвим: во‐первых, вы будете как минимум четвёртым таким «умником», во‐вторых вы проверяете не вашу оболочку, а bash.
      • 0
        env x='() { :;}; echo vulnerable' bash -c «echo this is a test»

        Напоминает «вирус» boot.ini от которого в свое время пострадал весь мой класс в далеком 2003 году. А было оно так. Один спрашивает другого
        — слышал про новый вирус?
        -нет
        -так вот знай оно находится с:\boot.ini и оно очень опасно, удали его, оно может повредить компьютер
        лопух, конечно удаляет с:\boot.ini, весь вечер играет, а на следующую перезагрузку XPшка не загружается. И лопух начинает спрашивать с советчика, а тот в ответ
        -ну я же предупреждал, что оно опасно, предупреди остальных.


        эпидемия бушевала полгода, пока кто то не догадался посмотреть что за файл с:\boot.ini в гугле.

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

Самое читаемое Разработка