Как исправить уязвимость безопасности 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
Другие вопросы по тегам