Как я могу исправить уязвимость в оболочке в устаревшей системе Ubuntu, которую я не могу обновить?

15278
Claus

У меня есть система, которую я администрирую удаленно (на расстоянии 2 часовых поясов), на которой работает Ubuntu 9.04, Jaunty. По разным причинам, в основном из-за того, что я очень неохотно пытаюсь выполнить обновление дистрибутива, я не могу обновить его до более поздней версии. Очевидно, что он больше не поддерживается, и нет никаких официальных патчей. Имеются ли инструкции о том, как я могу исправить код и перекомпилировать bash самостоятельно, чтобы устранить уязвимости в оболочке?

22
Какие исследования вы провели по этому вопросу? Самым простым решением, вероятно, будет восстановление и исправление его самостоятельно. ** Возможно, вам придется принять это просто пора обновить сервер. ** Ramhound 10 лет назад 5
Да, это мой запасной вариант. Сервер выходит из строя, я просто стараюсь держать его в покое, пока не появятся средства для его замены. Если бы я был на месте, я бы укусил пулю и сделал бы обновление, но у меня очень редко бывают такие проблемы без заминки, и, не имея возможности взять его в руки, я бы предпочел не рисковать, если бы у меня не было к. Claus 10 лет назад 0
Просто добавьте несколько ключевых слов на страницу, чтобы люди могли найти это. Также работал для меня на Mac, OS X, Mavericks на основе теста, опубликованного на http://arstechnica.com/security/2014/09/bug-in-bash-shell-creates-big-security-hole-on-anything -с-Никс-в-он / 10 лет назад 0
оставьте это без изменений, «хромать» быстро изменится. Будьте предельно понятны, ** вы используете дистрибутив, выпущенный пять лет назад **. Поддержка прекратилась в октябре 2010 года. У вас есть еще много уязвимостей, о которых нужно беспокоиться. tedder42 10 лет назад 1

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

29
unkilbeeg

Украл это у AskUbuntu, у кого-то, кто украл его у Hacker News. Работал на двух старых серверах для меня

mkdir src cd src wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz #download all patches for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done tar zxvf bash-4.3.tar.gz  cd bash-4.3 #apply all patches for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done #build and install ./configure --prefix=/ && make && make install cd ..  cd .. rm -r src 

Обновление: я только что заметил, что если вы не добавите --prefix=/команду configure, то в конечном итоге /usr/local/bin/bashона будет актуальна и по- /bin/bashпрежнему будет уязвимой.

В скрипте есть ошибка: последовательность «0 25» должна быть «1 26». Если вы читаете это и можете редактировать ответ, пожалуйста, обновите его. Спасибо! joelparkerhenderson 10 лет назад 0
Хотя `./configure --prefix = / && make` работает нормально,` make install`, похоже, требует `sudo` Stewart 10 лет назад 0
Спасибо за то, что выложили это - честный способ исправления ошибок во время миграции. У некоторых людей много vms, и перестроить каждый из них нереально. Использование этого в качестве немедленного исправления при решении более долгосрочной проблемы с помощью более обновленной установки является ключевым. Jas Panesar 10 лет назад 0
@ rubo77 Теперь это должно быть 1 27 (новый патч 27 - самый важный) joelparkerhenderson 10 лет назад 0
Мне пришлось установить некоторые зависимости перед успешной компиляцией bash: `sudo apt-get install build-essential bison texinfo` jcarballo 10 лет назад 0
это исправить CVE-2014-7169 и CVE-2014-7186? Я все еще уязвим для них после выполнения этих команд. Я использую проверки https://www.linode.com/docs/security/security-patches/patching-bash-for-the-shellshock-vulnerability Florent2 10 лет назад 0
Не похоже, что есть патч для 7186 или 7187. 7169 * * покрыт патчами здесь. Используя чеки с сайта Linode, мои машины показываются как * не * уязвимые для 7169. unkilbeeg 10 лет назад 0
Добавлен патч 28. Это * действительно * исправляет уязвимость CVE-2014-7186 / 7187. unkilbeeg 10 лет назад 1
@jcarballo: Это работает, если я только что установил `sudo apt-get install build-essential`. Почему бизон и texinfo? rubo77 10 лет назад 0
@ rubo77: Я полагаю, что в разных системах (дистрибутивы, серверная / настольная версия и т. д.) при запуске «./configure» сборка может быть настроена по-разному. В моем случае, bash просил меня разрешить зависимости bison и texinfo (сборка не удалась). Я мог бы обойти это, установив флаги для ./configure (см. `./Configure --help`), но мне это не нужно. jcarballo 10 лет назад 0
Это дубликат [Что такое уязвимость в bash CVE-2014-6271 (Shellshock) и как ее исправить?] (Http://askubuntu.com/a/528171), где скрипт адаптирован для ** загрузки всех патчи ** rubo77 10 лет назад 0
2
Erik Duindam

Существует также решение обновить ваш sources.list до самого нового, а затем использовать apt-get для обновления только bash. Это действительно быстро, и я написал статью об этом. Вот что вы в основном делаете:

Обновите Ubuntu до «надежных» репозиториев apt-get (вам также может понадобиться изменить URL-адреса old-repositories.ubuntu.com, если вы их используете, проверьте связанную статью):

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list 

Обновите bash / примените исправление:

sudo apt-get update sudo apt-get install --only-upgrade bash 

И, возможно, изменить обратно apt-get репозитории.

Работал отлично! Peter Kruithof 10 лет назад 0
-1
ColdenZero

The command should be

sudo apt-get update && sudo apt-get install --only-upgrade bash 
Это не поможет; как сказал OP, он больше не поддерживается, поэтому обновление для bash не будет. Andrew Ferrier 10 лет назад 2
-3
R..

Один простой вариант - просто не использовать bash. Убедитесь, что dashустановлен и /bin/shэто символическая ссылка dash, а не bash. (Это значение по умолчанию в некоторых версиях Debian, но я не уверен в Ubuntu.) Если у вас есть учетные записи пользователей для доступа по ssh с принудительными командами, вам также необходимо изменить их учетные записи. Вам также может понадобиться проверить наличие скриптов, явно использующих bash; grepping для #!/bin/bashдолжен найти их.

Это немного похоже на высказывание: «мы обнаружили, что в C ++ могут возникнуть ошибки, просто вместо этого используйте Java» ... DevSolar 10 лет назад 5
Более близкая аналогия - рассказать кому-то, кто испытывает ошибку в GCC, попробовать clang. Оба реализуют один и тот же язык (с разными, но иногда перекрывающимися наборами нестандартных расширений), и маловероятно, что фактическая потребность в «bash», а скорее в «интерпретаторе оболочки». R.. 10 лет назад 3
Как вы сказали, есть сценарии, которые могут явно использовать bash. Даже если вы выполните поиск существующих файлов, использующих bash, в будущем кто-то может добавить новый скрипт в систему, которая явно использует bash. То же самое касается встроенных систем, которые используют busybox (/ bin / sh указывает на busybox), но также имеют установленный bash. Лучше всего обновить bash в уязвимых системах. jcarballo 10 лет назад 0
Большинство сценариев Unix / Linux требуют bash или какой-либо другой современной оболочки, такой как ksh или zsh. Они обладают множеством функциональных возможностей, которые люди привыкли ожидать на любом языке, но их нет в «пустых» оболочках, таких как (BusyBox) ash / Dash / sh (оригинал). Эти простые оболочки имеют только 20-30% функциональности больших оболочек, что делает их быстрее. Однако они требуют широкого использования внешних утилит для многих общих операций, таких как расширенная обработка строк и сопоставление с образцом. Баш и тому подобное могут запустить пепел, эт.ал. скрипты. Но не наоборот. DocSalvager 10 лет назад 0