Технологии безопасности

Сайт посвященный вопросам безопасности

CVE-2014-6271: удалённое выполнение кода в Bash

Сегодня были опубликованы детали об уязвимости в Bash.
Вкратце, Bash позволяет экспортировать функции как переменные окружения:

$ myfunc() { echo "Hello"; }
$ export -f myfunc
$ env | grep -A1 ^myfunc
myfunc=() { echo "Hello"
}

Уязвимость состоит в том, что если после тела функции (после последнего символа "}") добавить ещё какую-нибудь команду, и экспортировать её — она будет выполнена при вызове дочернего интерпретатора:

$ env x='() { :; }; echo "Oh…"’ /bin/bash -c /sbin/nologin
Oh…
This account is currently not available.

Это, в свою очередь, позволяет делать интересные вещи — например, если у вас есть CGI-скрипт на Perl, который вызывает Bash — атакакующий может сконструировать HTTP-пакет, который будет содержать вредоносный код. Этот код через переменные окружения попадёт в Bash — и будет выполнен.

Уязвимы все версии Bash, включая bash-3.0.
В определённых кругах уязвимость прозвали «Bashdoor» — оно и неудивительно.

Больше деталей можно легко нагуглить по идентификатору CVE.