Как исправить уязвимость безопасности Shellshock в тестировании Debian / Jessie?

38103
John Lawrence Aspden

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

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 / тестировании.

Чтобы исправить это для Джесси, получите последнюю версию 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 ).

24

7 ответов на вопрос

25
Tom Damon

I've edited this answer for the additional bash fixes that were released on Monday.

For Ubuntu 12.04, I ran an update, but also had to run the install for bash to get rid of the vulnerability.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test 

That command shows the system is vulnerable, so run the update.

apt-get update && apt-get -y upgrade 

Test again.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test 

Still vulnerable.

apt-get install -y bash 

Test again.

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 

Edit: After the additional patches were released, the output has changed.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" this is a test 

Yay! Fixed. This should work for other versions, but I haven't tested it beyond 12.04.

Also, runamok's reply below works well, so give him an upvote!

Просто `apt-get update && apt-get install -y bash` похоже работает. runamok 10 лет назад 6
Основываясь на ответе @JabawokJayUK, я все еще не могу пройти первый тест после обновления bash в Ubuntu 12.04. Birla 10 лет назад 0
Я получаю только «это тест», но не ошибку и предупреждение. На моей локальной машине я получаю ошибку, но на моем сервере нет. Что это значит? Мой сервер исправлен? Спасибо. elbaulp 10 лет назад 0
Похоже, что хранилище обновлено, потому что мне не пришлось выполнять шаг apt-get install -y, проблема была решена уже после обновления. user316566 10 лет назад 0
Это действительно не отвечает на вопрос о ** Debian ** тестировании / Джесси. Ubuntu - это отдельный дистрибутив с независимыми репозиториями пакетов и расписаниями исправлений. Bob 10 лет назад 1
Патч не завершен, попробуйте это `env -i X = '() {(a) => \' bash -c 'echo date'; cat echo` (https://bugzilla.redhat.com/show_bug.cgi?id=1141597#c23) Fabien Sa 10 лет назад 0
Работает на нестабильной Debian тоже GuySoft 10 лет назад 0
16
poncha

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

Работает на Debian 6. Мы всегда будем держать LTC безопасности в списке! stanleyxu2005 10 лет назад 0
5
wurtel

Download the package from unstable via this link. You can check the dependencies there as well, although it looks like the unstable bash has the same dependencies as the bash from testing. Install the downloaded deb with the following.

dpkg -i 
Спасибо, я сделал это, и это решило проблему, ничего не разрушая. Предположительно, это в конечном итоге будет перезаписано в ходе обычного обновления? John Lawrence Aspden 10 лет назад 1
Ссылка выше подходит для браузера с графическим интерфейсом. Меньше, если вы используете lynx в сеансе оболочки. Если вам нужно что-то, что вы можете вставить прямо в командную строку, чтобы получить это, попробуйте: `wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-зодчество) .deb` Это подберет правильную архитектуру для вашего бокса. Jemenake 10 лет назад 3
@Jemenake Вы должны опубликовать это как отдельный ответ. Excellll 10 лет назад 1
Это был определенно ответ, который я хотел получить, но теперь, когда обновление сделано для Джесси, я думаю, что будет лучше, если принятый ответ - тот, который нужен людям, ищущим сейчас, поэтому я убираю галочку. Спасибо хоть! John Lawrence Aspden 10 лет назад 0
На самом деле, есть две ошибки в снаряде, и исправление для второго исправлено в sid, но не в jessie, так что на самом деле это правильный ответ (убедитесь, что вы получили 4.3-9.2!), Хотя, несомненно, ситуация разрешится скоро. John Lawrence Aspden 10 лет назад 0
4
MGD_Toronto

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

Проблема заключалась в том, что в тестировании Debian еще не было обновленного пакета, поэтому его загрузка из нестабильного пакета вручную и его установка были наиболее простыми на тот момент исправлениями; Решение, данное в этом ответе, не сработало бы. (Возможно, теперь так и будет, потому что пакет мог быть перенесен в тестирование.) wurtel 10 лет назад 2
Это не отвечает на первоначальный вопрос, но это то, что людям нужно делать сейчас, поэтому я принимаю это, чтобы люди увидели это в первую очередь. «Реальный» ответ на мою сложность (он нестабильный и стабильный, но не тестируется) - это ответ wurtel, использующий ручную загрузку нового bash - ????. Deb и dpkg -i. John Lawrence Aspden 10 лет назад 0
Я также думаю, что это ответ для Ubuntu, теперь, когда они правильно отправили свои исправления, и, вероятно, для любого другого дистрибутива на основе Debian, который все еще поддерживается до такой степени, что люди помещают исправления. John Lawrence Aspden 10 лет назад 0
На самом деле есть две ошибки снарядов, и исправление для второй пока не помогло Джесси. John Lawrence Aspden 10 лет назад 0
Это все еще верное решение, и оно будет действовать до тех пор, пока группа безопасности тестирования Debian будет выпускать обновления; у них, возможно, не было этого в тестировании во время вопроса OP. Еще один вариант - настроить всех пользователей на использование Dash. Это в основном проблема с сервером, а не MGD_Toronto 10 лет назад 0
что-то, о чем обычные пользователи настольных компьютеров должны паниковать. Если пакет будет заражен в восходящем потоке, это может быть проблемой, но кроме этого я не понимаю, почему кто-то оставил себя открытым для этой атаки как пользователь настольного компьютера. Черные шляпы должны получить доступ к оболочке и использовать bash для выполнения атаки. MGD_Toronto 10 лет назад 0
3
Marcos Maciel

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

$ brew install bash

$ x='() { :;}; echo vulnerable' bash bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' bash-4.3$  
не забудьте установить варево до ... Marcos Maciel 10 лет назад 2
1
Erik Duindam

Я написал статью о том, как сделать это с помощью 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 
э-э ... это оставит вашу систему с Trusty в sources.list. при следующем обновлении система обновится до Trusty. это серьезно сломает вашу систему. strugee 10 лет назад 0
1
dubadu

Фиксированная версия (см. Список изменений ) для пакета 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' 
Еще не исправлено продолжение CVE-2014-7169. Bob 10 лет назад 0
@ Боб, я думаю, это относится только к Ubuntu? И, по-видимому, Ubuntu уже исправили это. John Lawrence Aspden 10 лет назад 0
@JohnLawrenceAspden Нет. Попробуйте запустить `env X = '() {(a) => \' bash -c" echo echo vuln "; [["$ (cat echo)" == "vuln"]] && echo "по-прежнему уязвим :(" `- если он печатает" все еще уязвим ", то последняя вулн еще не исправлена. AFAIK, Джесси по-прежнему уязвима Обратите внимание, что эта команда создаст файл с именем `echo` в текущем каталоге в случае успеха, и вам нужно будет удалить его перед повторным запуском теста. Bob 10 лет назад 0
@ Боб, я не могу понять, что это за точка с запятой? John Lawrence Aspden 10 лет назад 0
@ Боб, но что бы он ни делал, вы правы, что обновление до версии 4.3-9.2 в нестабильном режиме остановит это! John Lawrence Aspden 10 лет назад 0

Похожие вопросы