Специалисты считают, что уязвимость в bash не уступает по своему масштабу и возможным последствиям печально известному багу Heartbleed в OpenSSL. Возможно, даже превосходит его.

И дело не только в том, что уязвимость присутствовала в bash около 22 лет. И не в том, что оперативно выпущенные апдейты не исправляют её. Главная проблема в том, насколько широко распространённым является этот баг и насколько богатые возможности для взлома он предоставляет. Уязвимы не только серверы и персональные компьютеры, но и маршрутизаторы, камеры видеонаблюдения и многие другие устройства. Огромное количество старых устройств так и не получит обновления.

Не будет преувеличением сказать, что в течение ближайших нескольких лет многие компьютеры под Linux и Mac OS всё ещё будут открыты для удалённого выполнения кода. Прошло почти полгода с момента обнаружения Heartbleed, но до сих пор не все системы пропатчены.

Более того, возможно создание сетевого червя, который будет распространяться через CGI-скрипты.

002

Проверка компьютера на наличие уязвимости CVE-2014-6271 осуществляется, например, такой командой:

export evil='() { :;}; echo vulnerable'; bash -c echo;

Проверка скрипта CGI:

curl -i -X HEAD "http://website" -A '() { :;}; echo "Warning: Server Vulnerable"'

Кстати, появились свидетельства, что вышедший вчера патч не полностью устраняет проблему.

Уязвимость в bash уже получила персональное имя: ShellShock. Таким образом, она стала второй уязвимостью в истории, удостоенной подобной чести.

P.S. Баг в bash обнаружил французский специалист по Unix/Linux Стефан Чазелас (Stephane Chazelas).

UPD.

Пример запуска PoC с небольшим изменением на Mint с последними обновлениями:

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

Kudos Борис «dukebarman» Рютин и @taviso

19 комментариев

  1. http://www.milax.com

    25.09.2014 at 13:50

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

    • 25.09.2014 at 13:58

      export evil='() { :;}; echo vulnerable’; bash -c echo;
      выполни и посмотри, что напишет

      • 25.09.2014 at 16:42

        bash: warning: evil: ignoring function definition attempt
        bash: error importing function definition for `evil’

        А вот второй вывел дату. Правда, я так и не понял, почему бы мне не набрать просто date

  2. 25.09.2014 at 14:04

    у мну пишет «vulnerable»

  3. 25.09.2014 at 14:19

    :~$ env X='() { (a)=>’ sh -c «echo date»; cat echo
    env X='() { (a)=>’ sh -c «echo date»; cat echo
    date
    cat: echo: Нет такого файла или каталога

    :~$ export evil='() { :;}; echo vulnerable’; bash -c echo;
    export evil='() { :;}; echo vulnerable’; bash -c echo;
    bash: внимание: evil: ignoring function definition attempt
    bash: ошибка при импортировании определения функции`evil’

  4. 25.09.2014 at 14:38

    А чему удивляться: в исходниках так прямо и написано:
    «/* variables.c — Functions for hacking shell variables. */» 🙂

  5. 25.09.2014 at 19:04

    Ну про роутеры и камеры вы загнули, там везде базибокс. Как и на ведроидах.

  6. 25.09.2014 at 20:16

    Мастадаев в нашем полку прибыло…

  7. 25.09.2014 at 22:47

    Ребят , вот честно , что за дела — вы народу сначала скажите что для того что это прокатило , у атакующего должна быть валидная учетная запись с возможностью залогиниться
    Этот метод позволяет обойти только случаи когда залогиниться можно но нет возможности получить шелл. CGI сценарии с пробросом сырых данных через bash env , серьёзно ? сейчас начало 2000х ? кто так сейчас делает вообще ? много шума , реальных векторов очень не много. И вы сравниваете по важности с уязвимости которая позволяла сделать дамп памяти любому пользователю ? Seriously ?

    • 26.09.2014 at 09:27

      А то, что CGI по своей природе кидает данные из HTTP-запроса в переменные среды, это как?

Оставить мнение