24

Тестовая команда

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 ответов7

25

Я отредактировал этот ответ для дополнительных исправлений 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 ниже работает хорошо, так что дайте ему голос!

16

Альтернатива для 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

5

Скачать пакет из нестабильного по этой ссылке. Там вы также можете проверить зависимости, хотя похоже, что нестабильный bash имеет те же зависимости, что и bash из тестирования. Установите скачанный deb со следующим.

dpkg -i
4

apt-get update перед apt-get dist-upgrade и вы получите патч. Просто сделал это сам, и было нажато обновление bash, которое решает проблему.

3

Я исправил это на своем Хакинтоше :

$ brew install bash

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash-4.3$ 
1

Я написал статью о том, как сделать это с помощью apt-get на старых версиях Ubuntu. Вы в основном обновляете ваш sources.list до самого нового, а затем запускаете apt-get update и upgrade 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
1

Исправленная версия (см. Список изменений) для пакета 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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .