Специалисты считают, что уязвимость в bash не уступает по своему масштабу и возможным последствиям печально известному багу Heartbleed в OpenSSL. Возможно, даже превосходит его.
И дело не только в том, что уязвимость присутствовала в bash около 22 лет. И не в том, что оперативно выпущенные апдейты не исправляют её. Главная проблема в том, насколько широко распространённым является этот баг и насколько богатые возможности для взлома он предоставляет. Уязвимы не только серверы и персональные компьютеры, но и маршрутизаторы, камеры видеонаблюдения и многие другие устройства. Огромное количество старых устройств так и не получит обновления.
Не будет преувеличением сказать, что в течение ближайших нескольких лет многие компьютеры под Linux и Mac OS всё ещё будут открыты для удалённого выполнения кода. Прошло почти полгода с момента обнаружения Heartbleed, но до сих пор не все системы пропатчены.
Более того, возможно создание сетевого червя, который будет распространяться через CGI-скрипты.
Проверка компьютера на наличие уязвимости 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
http://www.milax.com
25.09.2014 в 13:50
Поподробнее бы расказали, как проверить компьютер на наличие уязвимости. Своего рода туториал.
25.09.2014 в 13:58
export evil='() { :;}; echo vulnerable’; bash -c echo;
выполни и посмотри, что напишет
25.09.2014 в 16:42
bash: warning: evil: ignoring function definition attempt
bash: error importing function definition for `evil’
А вот второй вывел дату. Правда, я так и не понял, почему бы мне не набрать просто date
25.09.2014 в 14:04
у мну пишет «vulnerable»
25.09.2014 в 14:59
Уязвим
25.09.2014 в 22:39
обновился… сейчас ругается какойто хренью
26.09.2014 в 14:14
после обновления как раз и должен ругаться, что не может выполнить этот код
25.09.2014 в 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’
25.09.2014 в 14:21
или опять надо от sudo запускать?
http://dukebarman.pro
25.09.2014 в 14:59
если у вас Ubuntu-подобная система замените sh на bash
25.09.2014 в 15:14
:~$ fgrep usr /etc/passwd
usr:x:1000:1000:usr,,,:/home/usr:/bin/bash
25.09.2014 в 16:44
:~$ env X='() { (a)=>’ /bin/bash -c «echo date»; cat echo
/bin/bash: X: строка 1: ошибка синтаксиса около неожиданной лексемы `=’
/bin/bash: X: строка 1: `’
/bin/bash: ошибка при импортировании определения функции`X’
Чт. сент. 25 16:44:03 MSK 2014
25.09.2014 в 14:38
А чему удивляться: в исходниках так прямо и написано:
«/* variables.c — Functions for hacking shell variables. */» 🙂
27.09.2014 в 13:55
скинь пруф. +- 5 строк перед и после. Хочу посмотреть где нашёл
29.09.2014 в 11:42
В variables.c, как видите. 🙂
25.09.2014 в 19:04
Ну про роутеры и камеры вы загнули, там везде базибокс. Как и на ведроидах.
25.09.2014 в 20:16
Мастадаев в нашем полку прибыло…
25.09.2014 в 22:47
Ребят , вот честно , что за дела — вы народу сначала скажите что для того что это прокатило , у атакующего должна быть валидная учетная запись с возможностью залогиниться
Этот метод позволяет обойти только случаи когда залогиниться можно но нет возможности получить шелл. CGI сценарии с пробросом сырых данных через bash env , серьёзно ? сейчас начало 2000х ? кто так сейчас делает вообще ? много шума , реальных векторов очень не много. И вы сравниваете по важности с уязвимости которая позволяла сделать дамп памяти любому пользователю ? Seriously ?
26.09.2014 в 09:27
А то, что CGI по своей природе кидает данные из HTTP-запроса в переменные среды, это как?