Information Security
24 September 2014

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

image
Сегодня были опубликованы детали об уязвимости в 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-1.14 (информация с сайта shellshocker.net).
В определённых кругах уязвимость прозвали «Bashdoor» — оно и неудивительно.

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

UPD 2014-09-24: некоторые «индусские» секурити-блоги приписывают «privilege escalation» к названию уязвимости. Это неправда — никакого повышения привилегий, код выполняется с правами того же юзера, под которым бежит «родительский» шелл.
В Твиттере уязвимость окрестили shellshock.

UPD 2014-09-25: фикс для CVE-2014-6271 оказался неполным, новой уязвимости присвоен идентификатор CVE-2014-7169. Детали есть в комментариях к посту.

UPD 2014-09-26: фикс для CVE-2014-7169 доступен в репозиториях основных дистрибутивов. Red Hat Product Security опубликовали небольшое ЧАВО в своём блоге.

+76
53.3k 116
Comments 64
Top of the day