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


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

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

Ответы:


5

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

dpkg -i

1
Спасибо, я сделал это, и это исправило проблему, ничего не разрушая. Предположительно это в конечном итоге будет перезаписано в нормальном ходе обновлений?
Джон Лоуренс Аспден

3
Ссылка выше подходит для браузера с графическим интерфейсом. Меньше, если вы используете lynx в сеансе оболочки. Если вы хотите что-то, что вы можете вставить прямо в вашу командную строку, чтобы получить это, попробуйте: wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb Это даст правильную архитектуру для вашего устройства.
Джеменаке

1
@Jemenake Вы должны опубликовать это как отдельный ответ.
Excellll

Это был определенно ответ, который я хотел получить, но теперь, когда обновление сделано для Джесси, я думаю, что будет лучше, если принятый ответ - тот, который нужен людям, ищущим сейчас, поэтому я убираю галочку. Спасибо хоть!
Джон Лоуренс Аспден

На самом деле, есть две ошибки в снаряде, и исправление для второго исправлено в sid, но не в jessie, так что на самом деле это правильный ответ (убедитесь, что вы получите 4.3-9.2!), Хотя, несомненно, ситуация разрешится скоро.
Джон Лоуренс Аспден

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


6
Просто apt-get update && apt-get install -y bashпохоже на работу.
runamok

Основываясь на ответе @JabawokJayUK, я все еще не могу пройти первый тест после обновления bash в Ubuntu 12.04.
Бирла

Я только получаю this is a testно не ошибку и предупреждение. На моей локальной машине я получаю ошибку, но на моем сервере нет. Что это значит? Мой сервер исправлен? Спасибо.
ElBaulP

Похоже, что хранилище обновлено, потому что мне не пришлось выполнять шаг apt-get install -y, проблема была решена уже после обновления.
user316566

1
Это действительно не отвечает на вопрос о тестировании Debian / jessie. Ubuntu - это отдельный дистрибутив с независимыми репозиториями пакетов и расписаниями исправлений.
Боб

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


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

4

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


2
Проблема заключалась в том, что в тестировании Debian еще не было обновленного пакета, поэтому его загрузка из нестабильной версии вручную и его установка были наиболее простыми на тот момент исправлениями; Решение, данное в этом ответе, не сработало бы. (Возможно, сейчас так и будет, потому что пакет, возможно, перешел на тестирование.)
wurtel,

Это не отвечает на первоначальный вопрос, но это то, что людям нужно делать сейчас, поэтому я принимаю это, чтобы люди увидели это в первую очередь. «Реальный» ответ на мою сложность (он нестабильный и стабильный, но не тестируется) - это ответ wurtel, использующий ручную загрузку нового bash - ????. Deb и dpkg -i.
Джон Лоуренс Аспден

Я также думаю, что это ответ для Ubuntu, теперь, когда они правильно отправили свои исправления, и, вероятно, для любого другого дистрибутива на основе Debian, который все еще поддерживается до такой степени, что люди помещают исправления.
Джон Лоуренс Аспден

На самом деле есть две ошибки снарядов, и исправление для второй пока не помогло Джесси.
Джон Лоуренс Аспден

Это все еще верное решение, и оно будет действовать до тех пор, пока группа безопасности тестирования Debian будет выпускать обновления; у них, возможно, не было этого в тестировании во время вопроса OP. Еще один вариант - настроить всех пользователей на использование Dash. Это в основном проблема с сервером, а не
MGD_Toronto


1

Я написал статью о том, как сделать это с помощью 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

э-э ... это оставит вашу систему с Trusty в sources.list. при следующем обновлении система обновится до Trusty. это серьезно сломает вашу систему.
Струджи

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'

Еще не исправлено продолжение CVE-2014-7169.
Боб

@ Боб, я думаю, это относится только к Ubuntu? И, по-видимому, Ubuntu уже исправили это.
Джон Лоуренс Аспден

@JohnLawrenceAspden Нет. Попробуйте запустить env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("- если он печатает still vulnerable, то последняя переменная еще не исправлена. AFAIK, Джесси все еще уязвима. Обратите внимание, что эта команда создаст файл с именем echoв текущем каталоге в случае успеха, и вам нужно будет удалить его перед повторным запуском теста.
Боб

@ Боб, я не могу понять, что это за точка с запятой?
Джон Лоуренс Аспден

@Bob, но что бы он ни делал, вы правы, что обновление до версии 4.3-9.2 в нестабильном режиме останавливает это!
Джон Лоуренс Аспден
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.