Как исправить уязвимость безопасности Shellshock в тестировании Debian /jessie?
Тестовая команда
x='() { :;}; echo vulnerable' bash
показывает, что моя установка Debian 8 (Jessie) уязвима даже при последних обновлениях. Исследования показывают, что есть исправление для стабильного и нестабильного, но это тестирование не исправлено.
Я полагаю, что патч пройдет тестирование через пару дней, но на самом деле это выглядит достаточно неприятно, чтобы быть параноиком. Есть ли способ получить пакет из нестабильного и установить его, не ломая мою систему? Обновление до нестабильного выглядит так, как будто это вызовет больше проблем, чем решит.
По словам Боба, существует вторая уязвимость Shellshock, которая исправлена во втором патче. Тест на это должен быть:
env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
Но я не достаточно опытен в Bash, чтобы понять, что это значит или почему это проблема. В любом случае, он делает что-то странное, что предотвращается bash_4.3-9.2_amd64.deb на 64-битных системах, который на момент редактирования работает стабильно и нестабильно, но не в Jessie/ тестировании.
Чтобы исправить это для Jessie, получите последнюю версию Bash из unstable и установите ее с dpkg -i
,
Jemenake предлагает
wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb
как команда, которая получит версию 4.3-9.2 для вашей машины.
И вы можете следить за этим с:
sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb
установить его.
Если вам нужны дальнейшие исправления от нестабильного для вашей системы Jessie, это, безусловно, правильный путь (mutatis mutandis).
7 ответов
Скачать пакет из нестабильного по этой ссылке. Вы также можете проверить зависимости там, хотя похоже, что нестабильный bash имеет те же зависимости, что и bash из тестирования. Установите скачанный deb со следующим.
dpkg -i
Я отредактировал этот ответ для дополнительных исправлений bash, которые были выпущены в понедельник.
Для Ubuntu 12.04 я запустил обновление, но мне также пришлось запустить установку для bash, чтобы избавиться от этой уязвимости.
root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
Эта команда показывает, что система уязвима, поэтому запустите обновление.
apt-get update && apt-get -y upgrade
Проверьте снова.
root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
Все еще уязвимы.
apt-get install -y bash
Проверьте снова.
root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
Редактировать: после того, как были выпущены дополнительные патчи, выход изменился.
root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test
Ура! Исправлена. Это должно работать для других версий, но я не проверял его после 12.04.
Кроме того, ответ runamok ниже работает хорошо, так что дайте ему голос!
Альтернатива для Debian 6.0 (Squeeze) без загрузки пакетов из Debian 7 (Wheezy):
Используйте репозиторий безопасности LTS, для которого патч был портирован.
Добавьте это к /etc/apt/sources.list
:
#LTS security
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free
Тогда беги apt-get update && apt-get install bash
,
Через: linuxquestions
apt-get update
до apt-get dist-upgrade
и вы получите патч. Просто сделал это сам, и было нажато обновление bash, которое решает проблему.
Я исправил это на своем Хакинтоше:
$ brew install bash
$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash-4.3$
Фиксированная версия (см. Список изменений ) для пакета Bash теперь находится в Debian 8 (Jessie) (см. Информацию о пакете ) по состоянию на 2014-09-26 14:18 UTC.
Второе исправление, упомянутое в комментариях ниже, теперь также находится в репозитории Jessie . Нет необходимости устанавливать из нестабильного. Смотрите ссылку на информацию о пакете выше.
Больше не нужно устанавливать с нестабильного.
Просто беги:
# aptitude update
с последующим:
# aptitude upgrade
Затем убедитесь, что уязвимость исчезла (во вновь открытой оболочке):
$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
Я написал статью о том, как сделать это с помощью apt-get на старых версиях Ubuntu. Вы в основном обновляете ваш sources.list до самого нового, а затем запускаете apt-get update и обновляем bash. Вы можете прочитать это шаг за шагом или скопировать его отсюда.
Резюме:
sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash
Прочтите статью, если вы используете old-releases.ubuntu.com и не забудьте, что вы можете изменить ее обратно:
sudo sed -i 's/trusty/YOUR_OS_CODENAME/g' /etc/apt/sources.list