Как стать автором
Обновить

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

Время на прочтение3 мин
Количество просмотров37K
Всего голосов 60: ↑40 и ↓20+20
Комментарии24

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

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

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

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

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

на уязвимой системе выведется слово «vulnerable»
Небольшое, но необходимое, дополнение: данная команда проверит уязвимость вашей версии bash, а не вашей текущей оболочки. Если вы запустили данную команду из‐под zsh и увидели «vulnerable», не кидайтесь писать в список рассылки, что zsh уязвим: во‐первых, вы будете как минимум четвёртым таким «умником», во‐вторых вы проверяете не вашу оболочку, а bash.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий