Bash shellshock: обновляем bash в Debian, включая старые версии

Сложно переоценить масштабы распространения уязвимости Bash Shellshock, ведь она присутствует во всех версиях Bash, начиная с версии 1.14, выпущенной в 1994 году. На фоне масштабов распространения Shellshock, недавно обнаруженная уязвимость OpenSSL Heartbleed просто меркнет, ведь она затрагивала версии openssl, выпущенные только за последние два года.

Казалось бы, чтобы получить доступ к bash, нужно иметь shell на соответствующем сервере, поэтому какая разница уязвим ваш сервер или нет, ведь shell от него есть только у вас? Увы, все гораздо хуже. Если у вас на сервере запускаются CGI/FastCGI скрипты, а это может быть и даже php, ведь он запускается в режиме FastCGI с помощью скрипта-wrapper'а, написанного на ... bash. Поэтому если на вашем сервере установлен bash с уязвимостью Shellshock, злоумышленник может выполнять произвольные команды на вашем сервере просто указывая их в полях http-заголовков, например в поле User-Agent.

Если мы уже в достаточной степени убедили вас проверить вашу систему и обновить ее по необходимости, давайте приступим к активным действиям.

1. Проверим наличие уязвимости

Для проверки вашего bash на предмет уязвимости достаточно зайти в консоль сервера и выполнить вот такую команду:

env X="() { :;} ; echo vulnerable" bash -c "echo stuff"

Если в результате выполнения этой команды вы увидите две строки и одна из них будет со словом 'vulnerable', ваш bash уязвим.

2. Выясняем версию debian

Чтобы выяснить, какая версия debian установлена на вашем сервере, нужно выполнить команду

cat /etc/debian_version

Если в результате вы видите цифру, начинающуюся с 7 или со слова wheezy, вам повезло и debian у вас самый свежий, поэтому обновить его весьма просто (см.следующий раздел). Если же debian у вас версии 6 или 5, отчаиваться все равно не стоит и мы чуть ниже покажем что вы можете сделать в вашем случае.

3. Обновляем Debian версии 7 (Wheezy)

Все просто. Выполняем в консоли от имени пользователя root команды:

apt-get update
apt-cache policy bash

В выводе последней команды нас интересуют строки Installed: и Candidate: ("Установлен" и "Кандидат" в случае русской локали в консоли). Скорее всего вы увидите что-то вроде:

Installed: 4.2+dfsg-0.1
Candidate: 4.2+dfsg-0.1+deb7u3

Если вдруг версия Candidate тоже равна 4.2+dfsg-0.1, значит вам необходимо в файл /etc/apt/sources.list добавить строку:

deb http://security.debian.org/ wheezy/updates main contrib non-free

И снова выполнить apt-get update

Наконец, обновляем bash:

apt-get install bash

После этого необходимо открыть новую консоль, либо выйти из текущей консоли и зайти в нее снова, и снова повторить тест из первого раздела этой статьи.

4. Обновляем более старые версии Debian (Lenny, Squeeze)

Мы предлагаем весьма простой вариант обновления bash для вашего случая: установить пакет bash-static из Debian Wheezy. На многих сайтах вы прочитаете советы по сборке bash из исходных текстов, либо установки обновления bash из squeeze-lts, но нам кажется, что наш вариант наиболее простой.

Для начала необходимо выяснить установлена у вас 32х битная система или 64х битная. Это можно сделать, выполнив команду:

file /bin/ls

Если в результате ее выполнения вы увидите строку "/bin/ls: ELF 32-bit ...", значит система 32 битная. Если строка будет "/bin/ls: ELF 64-bit ...", соответственно, система у вас 64 битная.

Теперь скачаем требуемый пакет. Для 32 битной версии debian выполним:

wget -c http://security.debian.org/debian-security/pool/updates/main/b/bash/bash-static_4.2+dfsg-0.1+deb7u3_i386.deb
dpkg -i bash-static_4.2+dfsg-0.1+deb7u3_i386.deb

Для 64 битной версии выполним:

wget -c http://security.debian.org/debian-security/pool/updates/main/b/bash/bash-static_4.2+dfsg-0.1+deb7u3_amd64.deb
dpkg -i bash-static_4.2+dfsg-0.1+deb7u3_amd64.deb

Далее, независимо от версии debian:

dpkg-divert --divert /bin/bash.old-diverted --rename /bin/bash
ln -s /bin/bash-static /bin/bash
ln -sf /bin/bash /bin/sh

Готово, bash обновлен. После этого необходимо открыть новую консоль, либо выйти из текущей консоли и зайти в нее снова, и снова повторить тест из первого раздела этой статьи.

2014.10.01

Более 27 000 клиентов