Все еще уязвимы для Shellshock с Ubuntu 14.04.1 и Bash 4.3-7ubuntu1.4 - Что дальше?

4418
closetnoc

Название говорит само за себя.

Я все еще уязвим (CVE-2014-6271 и, возможно, CVE-2014-7169) с Ubuntu 14.04.1 и Bash 4.3-7ubuntu1.4

  • apt-get update = ничего
  • apt-get upgrade = ничего
  • apt-get install bind = ничего

Проверено это: https://launchpad.net/ubuntu/+source/bash/4.3-7ubuntu1.4 (более новых версий нет)

Пробежал тест:

env x='() { :;}; echo vulnerable' bash -c 'echo hello' 

Получить:

vulnerable hello 

Занимался этим уже неделю!

[Обновить]

Первоначально я установил bash_4.3.orig.tar.gz с https://launchpad.net/ubuntu/+source/bash/4.3-7ubuntu1.4, что могло быть ошибкой.

Я сделал это, прежде чем делать sudo apt-get update && sudo apt-get install bashбудет работать (я думаю).

На этой странице есть другие файлы, bash_4.3-7ubuntu1.4.debian.tar.gz и bash_4.3-7ubuntu1.4.dsc. Я не знаю, что с этим делать. Я скачал bash_4.3-7ubuntu1.4.debian.tar.gz и посмотрел на него, но не знал, что с ним делать.

Я был все еще уязвим в соответствии с этим тестом: env x='() { :;}; echo vulnerable' bash -c 'echo hello'

Я пробовал столько движений apt-get, dpkg и install from bash_4.3.orig.tar.gz, сколько вы можете себе представить. Все еще не проходит тест.

Я нашел:

  • / usr / local / bin / bash - выпуск GNU bash, версия 4.3.0 (1) (i686-pc-linux-gnu)
  • / bin / bash - GNU bash, версия 4.3.11 (1) -релиз (i686-pc-linux-gnu)

Этим утром, проведя несколько дней, я, наконец, пришёл в отчаяние и бросил «Радуйся, Мария» и попробовал сценарий из: Как я могу исправить уязвимость в виде снарядов в устаревшей системе Ubuntu, которую я не могу обновить?

Теперь у меня есть:

  • / bin / bash - GNU bash, версия 4.3.27 (1) -релиз (i686-pc-linux-gnu)

По-прежнему не проходит тест: env x='() { :;}; echo vulnerable' bash -c 'echo hello'когда я вхожу в систему. Так я sudo /bin/bashи попробовал еще раз. Все еще не удается.

Итак, я попробовал:

sudo apt-get install --only-upgrade bash 

и получить...

Reading package lists... Done Building dependency tree Reading state information... Done bash is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 1 not fully installed or removed. Need to get 0 B/549 kB of archives. After this operation, 0 B of additional disk space will be used. Do you want to continue? [Y/n] y dpkg: error processing package bash (--configure): package is in a very bad inconsistent state; you should reinstall it before attempting configuration Errors were encountered while processing: bash E: Sub-process /usr/bin/dpkg returned an error code (1) 

Итак, я попробовал:

sudo apt-get install bash 

и получить...

Reading package lists... Done Building dependency tree Reading state information... Done bash is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 1 not fully installed or removed. Need to get 0 B/549 kB of archives. After this operation, 0 B of additional disk space will be used. Do you want to continue? [Y/n] y dpkg: error processing package bash (--configure): package is in a very bad inconsistent state; you should reinstall it before attempting configuration Errors were encountered while processing: bash E: Sub-process /usr/bin/dpkg returned an error code (1) 

Это не удивляет меня, конечно.

Пожалуйста помоги.

Может ли кто-нибудь помочь мне принудительно обновить оба / bin / bash и / usr / local / bin / bash с версией, которая работает? Могу ли я использовать файлы, найденные на этой странице https://launchpad.net/ubuntu/+source/bash/4.3-7ubuntu1.4 или я могу очистить установку GNU ?? Также можно ли скопировать bash из / bin в / usr / local / bin / (или наоборот), если я смогу исправить только один?

Мне нужны сильные ответы по Linux, а не только попугаи apt-get, которые можно увидеть повсюду, пожалуйста. Я прочитал все или почти все, что я могу найти. Если у вас есть ресурс, пожалуйста, дайте мне знать. Возможно, вы добились успеха, но у меня не было ничего, кроме неприятностей .

Заходить в чат нормально.

3
Прекратите использовать cgi-bin, используйте SELinux, используйте брандмауэр, используйте дистрибутив с профессиональной поддержкой. Cyrus 10 лет назад 0
@ Cyrus Очень полезно. Я использую брандмауэр. Я не использую CGI-BIN, но мне нужен CGI по другим причинам. Скрипты не обязаны быть уязвимыми. На самом деле, SSH и другие сервисы уязвимы. И нет. Я не буду переустанавливать совершенно новую ОС на общедоступном веб-сервере только потому, что вы чувствуете, что SELinux лучше. Я профессионал. Мне нужен аргументированный и продуманный ответ. closetnoc 10 лет назад 2
Взгляните на: https://en.wikipedia.org/w/index.php?title=SELinux Cyrus 10 лет назад 0
В следующие дни вы можете исправить ошибки в bash: CVE-2014-7186, CVE-2014-7187 и CVE-2014-6277. Cyrus 10 лет назад 0
@Cyrus Подумайте о практичности того, что вы рекомендуете. Удаление работающего публичного веб-сервера с более чем 1 миллионом веб-страниц на одном сайте. Не разумная рекомендация. Мне все равно, если кто-то думает, что SELinux лучше, чем Ubuntu. Это может быть. Я не буду спорить по этому вопросу. Я должен заставить это работать. Я не могу выполнить такой объем работы только для того, чтобы решить проблему, которая уже должна быть устранена. closetnoc 10 лет назад 0
@Cyrus О, здорово !! Как раз то, что мне было нужно. Спасибо за обновление! Я буду проверять это. Мне пора спать. Я вытащил несколько всенощных, пытающихся довести это (~ & ^? & $% #! Ing вещь) к этому моменту и ничего. Очень расстраивает - особенно когда кажется, что все, что может пойти не так, как надо, плюс несколько дополнений. Проблемы с Ubuntu были гладкими, как у стекла, но некоторые другие проблемы были очень хорошими! Жаль, что я не пью. Я могу начать !! Вы знаете, было бы НАМНОГО (!) * Проще, если бы это был рабочий стол, а не сервер. Были проблемы с CD и USB. Слава Богу за FTP и bash. closetnoc 10 лет назад 0
SELinux не является дистрибутивом Linux, это `модуль безопасности ядра Linux, который обеспечивает механизм поддержки политик безопасности контроля доступа, в том числе обязательного контроля доступа (MAC) в стиле Министерства обороны США`. Cyrus 10 лет назад 3
@Cyrus Я проверю это. Спасибо. Я знаю, что у меня есть HTTP-фильтры в брандмауэре, но я не мог их найти. В тумане я сосредоточился на том, чтобы все было в курсе. Я хочу использовать фильтры HTTP, конечно. Это решило бы проблему на данный момент. Я проверю вашу рекомендацию и благодарю вас за это. closetnoc 10 лет назад 0
Это довольно странно, у меня тоже есть версия bash `4.3-7ubuntu1.4`, и приведенная выше команда выдает только` hello`, в отличие от описанного вами вывода. У вас есть другая версия `bash`, установленная где-то в вашем` $ PATH`? (Я должен также добавить, что Ubuntu включает в себя обязательную систему контроля доступа, известную как AppArmor. Это не похоже на то, что у них ее не было.) yjwong 10 лет назад 0
@yjwong Хорошее предложение о $ PATH! Я проверю AppArmor. Когда этот сервер был впервые построен, многие из этих опций не существовали. Я изучаю и помогаю разрабатывать продвинутые фоновые процессы ИИ для безопасности и, как ни странно, я хочу, чтобы люди атаковали сервер - это точно. Я ставлю много вещей на пути, чтобы я мог использовать полученные данные для изучения шаблонов. Я хотел построить новый сервер с новой системой безопасности, которая позволит мне делать больше и быть безопаснее. Но эта штуковина слишком мала. Я хотя бы запускал Apache под учетной записью no-privs. Спасибо за предложения! closetnoc 10 лет назад 0
Вы пытались вручную выполнить обновление, описанное в вопросе о суперпользователе 816787? На моих машинах с Ubuntu это работало как победитель, около 15 минут на сервер, включая снимки VMware, без перезагрузки. Повесить там! JanFrazini 10 лет назад 0
@ Дэн, я знаю тебя на Pro Webmasters, конечно. Знаете ли вы кого-нибудь, кто может помочь в этом? Это стало серьезным. Я провел много ночей, и я устал. Хотел бы снова включить его. Если вы знаете кого-то, пожалуйста, дайте мне знать и, возможно, включите его в этот вопрос. Заранее спасибо! closetnoc 10 лет назад 0
Вы пробовали `apt-get purge bash` и` apt-get install bash`? 10 лет назад 0
@JeffreyLin Нет. Это безопасно? Это сервер, и у меня нет графического интерфейса, кроме virualmin, который ограничен. closetnoc 10 лет назад 0
Если у вас есть «хороший» `/ bin / bash` и« плохой »` / usr / local / bin / bash`, но ваш PATH для этого пользователя имеет `/ usr / local / bin /` раньше, чем `/ bin / `, ваш тест продолжит показывать уязвимость, даже если основной файл bash исправлен. unkilbeeg 10 лет назад 0
@unkilbeeg Фантастика! Спасибо. Хорошая информация После паники я получил обе версии одинаковые, но не обновленные. Apt-get не работает, потому что он видит, что bash обновлен. Использование --reinstall не устанавливает bash с патчами. Я знаю, как сделать обе версии bash одинаковыми. Но я не знаю, что делать с bash_4.3-7ubuntu1.4.debian.tar.gz, который, как мне кажется, нужен мне дальше. Там нет сценария конфигурации и README с чем-то, что я могу ухватить. Это все, что мне сейчас нужно - знать, как установить содержимое gz. Тогда я закончил! closetnoc 10 лет назад 0

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

2
Phil P

Debian provides the original upstream source, then the control files and local modifications. The .orig in the filename is saying it's unmodified. The .dsc is just metadata. Inside the .debian.tar.gz file you'll find all of the patches, including the security fixes. The build process takes the original upstream, applies the patches and builds the packages from that. Debian (and Ubuntu) bias strongly against pulling in new versions from upstream, because new versions add new bugs and regressions, not just fixing known issues.

Running sudo apt-get install --reinstall bash should fix the issue -- the output from apt-get is telling you it didn't do an install, and proceeded to try to update configs.

If, and only if, that apt-get fails, then you want to:

  1. Ensure that you have another shell installed, so that a glitch while removing bash does not lock you out of the system; install ksh or zsh and consider temporarily setting a login-shell to one of those, so that you have a way in.
  2. sudo dpkg --remove --force-remove-reinstreq bash
  3. sudo apt-get install bash

Then, you want to start becoming more familiar with the manual-pages system used by Unix; the man command is your friend here. man apt-get and man dpkg would give you a lot of what you need here.

Пожалуйста, прости меня. Я уже несколько лет ухожу из ИТ (я живу в стране сейчас, но не работаю в ИТ) и трачу на окна больше времени, чем хотел, когда работал в ИТ ... (не моя идея). Я привык бить. Ksh или zsh достаточно похожи, чтобы мне было хорошо? Это идентично или почти так? Я не сильный пользователь Linux, но в целом достаточно хорош. closetnoc 10 лет назад 0
Попытался установить KSH и ZSH - оба не удалось установить из-за несоответствий в установке bash. Но я создал другого пользователя с / usr / local / bin / bash вместо / bin / bash. Я использовал $ BASH_VERSION для определения версии, но он сообщил о выпуске 4.3.27 (1). Я предполагаю, что $ BASH_VERSION подхватывает версию / bin / bash. Если я sudo / usr / local / bin / bash --version, я получаю 4.3.0 (5) -релиз. Я подозреваю, что моя так называемая резервная учетная запись пользователя в безопасности. closetnoc 10 лет назад 0
Я также попытался установить панель запуска bash-4.3, и она, похоже, устанавливается в - * / usr / bin / install -c -m 0755 bash / usr / local / bin / bash *. Это ключ! Как мне изменить место установки? Я хотел бы установить поверх копии GNU в / bin. Тогда я представляю себе применение .debian.tar.gz? Но я не знаю как. Кстати, я просто восток на магистрали. closetnoc 10 лет назад 0
используйте install (1) в командной строке, чтобы установить .usr / local / bin / bash в / bin / bash, используя командную строку, очень похожую на ту, которую вы цитируете Phil P 10 лет назад 0
Я не уверен, что понимаю, что вы говорите. / usr / local / bin / bash - нормальная, но старая версия bash, а / bin / bash - сломанная. * Install * сверху взят из вывода ** make install **. Вы говорите мне, что есть способ переместить / скопировать / установить usr / local / bin / bash over / bin / bash? Смущенный. closetnoc 10 лет назад 0
да; запустите `man install` для получения инструкций (извините, по телефону на мероприятии большой компании, извините за краткость) Phil P 10 лет назад 0
Я знаю, что уже поздно. Я обычно встаю довольно поздно. Если у вас есть время после мероприятия компании, пожалуйста, дайте мне знать. Извините за боль. closetnoc 10 лет назад 0
Хорошо! Почти на месте! Я выполнил установку, чтобы скопировать bash в / bin, а затем выполнил --reinstall, и пока неплохо. У меня есть версия GNU bash, версия 4.3.11 (1) - снова выпустите в / bin. Уф! Не для части 2. Файл .debian.tar.gz при извлечении не имеет файла конфигурации, и я без конца возился, пытаясь понять, что делать. Но я понятия не имею. Что мне запустить / сделать, чтобы установить остальные ?? closetnoc 10 лет назад 0
Если вы попытаетесь снова установить из источника (например, с https://superuser.com/questions/816787/how-do-i-patch-the-shellshock-vulnerability-on-an-obsolete-ubuntu-system-that-i / 816807 # 816807), местоположение контролируется из термина `--prefix =` в шаге `. / Configure`. Если вы не * включите * этот термин, он будет установлен в `/ usr / local / bin /`. `--Prefix = /` в ссылке установит его в `/ usr / bin /`. Это по-прежнему обходит проблему со сломанной способностью, но в обоих случаях вы получите текущий удар. unkilbeeg 10 лет назад 0
Когда я сказал, что установка префикса на `/` поместит его в `/ usr / bin /` I * означал * в `/ bin /`. unkilbeeg 10 лет назад 0
@unkilbeeg Я не видел эти комментарии. Они не отображаются в маленьком красном списке / списке комментариев даже после обновления. Этот совет в этой ссылке сломал мою установку bash. Если бы не старая версия Ubuntu Bash в / usr / local /, я был бы тостом. https://superuser.com/questions/816787/how-do-i-patch-the-shellshock-vulnerability-on-an-obsolete-ubuntu-system-that-i/816807#816807 Похоже, все, что мне нужно сейчас это знать, как установить содержимое bash_4.3-7ubuntu1.4.debian.tar.gz из панели запуска, и все готово! Apt-get не обновляется до исправленной версии, независимо от того, что я делаю. closetnoc 10 лет назад 0
Debian.tar.gz - это набор материалов, используемых системой сборки Debian, `debuild` и друзьями, и вы действительно не хотите идти туда на этом этапе. Просто приведите свою систему туда, где она достаточно чиста, чтобы apt-get заработала, и вернитесь к безопасности работы с предварительно собранными пакетами. Упаковщики Debian своевременно выполняют хорошую работу. Phil P 10 лет назад 0
Я запутался тогда. Apt-get получает только GNU bash, версия 4.3.11 (1) -релиз и обновляет / bin / bash, в то время как bash_4.3.orig.tar.gz устанавливает версию GNU bash, версия 4.3.0 (1) -релиз в / usr / местные / бен / Баш. Используя панель запуска, как мне обновить 4.3.0 (1) -релиз, который показывает, что все файлы bash установлены (/ usr / local)? closetnoc 10 лет назад 0
Когда вы использовали `.orig.tar.gz`, вы устанавливали файлы в файловую систему вне управления пакетами. В результате ничего не отслеживается, ни панель запуска, ни подход, ничего; Вы должны убрать этот беспорядок вручную. Вы просто используете `rm -v`, чтобы удалить их. Вам нужен `cd / usr / local && rm -v bin / bash bin / bashbug bin / rbash info / bash.info man / man1 / bash *`, и там будут и другие файлы doc, но менее важно их удалить , Phil P 10 лет назад 0
Давайте пока забудем apt-get и сосредоточимся на панели запуска. Как мне обновить / usr / local / bin / bash, начиная с версии 4.3.0 (1), с помощью панели запуска (это то место, куда устанавливается панель запуска)? Я разочаровался в том, что apt-get обошел кругом и увидел, что в двух местах установлены две версии. Я хочу обновить одну копию bash, где находятся все файлы bash - версия панели запуска в / usr / local / bin / bash с версией GNU bash, версия 4.3.0 (1) - выпуск. Я вижу это как выход. Оттуда я могу просто взорвать другой (/ bin / bash), как я делал прошлой ночью. closetnoc 10 лет назад 0
Я не могу объяснить вещи достаточно ясно, чтобы помочь вам, извините. Я выхожу. Phil P 10 лет назад 0
Я прошу прощения. Я надеюсь, что я не прогнал тебя. Если вы знаете, как получить право снова, я готов к этому. Я не видел ваш комментарий "Когда вы использовали .orig.tar.gz ..." Эта вещь не обновляет красный счетчик вверху, и если я не обновлюсь часто, я упущу что-то, что я сделал. Мои извенения. closetnoc 10 лет назад 0
Извините за тупость. В очередной раз благодарим за помощь. Ваш ответ и помощь мне показались полезными. Я провел в чате целых 3,5 часа, помогая тем, кто действительно не понимал проблему, и это оказалось одним из самых полезных занятий. Они были явно одарены, но еще недостаточно хорошо понимали технологию. Они были так же благодарны, как я чувствую сегодня. Я не могу выразить это достаточно. Пожалуйста, если можете, обновите свой ответ для будущих читателей. Я написал ответ, который объясняет вещи. Я с удовольствием предоставлю детали для вашего ответа, если вам это нужно. Еще раз спасибо! closetnoc 10 лет назад 0
2
Wumpus Q. Wumbley

Seems to me that the problem is you accidentally installed a bad version of bash in /usr/local and you already have a better version in /bin. So I can't see why the answer isn't just rm /usr/local/bin/bash

OK, that won't get rid of all the support files that came with it, but it'll make sure that the bad version can't run.

If you still have the directory where you did the make install of the bad version, you can go there and do a make uninstall to clean it all up. If you don't still have it... you can probably untar and build it again (making sure to match the ./configure arguments you used the first time) and run the make uninstall.

make uninstall should work with any GNU program that you still have the original build directory of. It's in the coding standards that all GNU source packages have to follow.

1
user373746

Я обнаружил, что Apt-Get Install Bash работал, чтобы избавиться от ошибки

Вот что происходит, что мешает apt-get работать. Копия / bin / bash была обновлена, но не с исправлениями. Копия / usr / local / bin / bash вообще не обновлялась. Apt-get просматривает / bin / bash и говорит, что он обновлен и не будет устанавливаться, что бы я ни делал. Это потому, что я использовал пакет Launchpad для установки 4.3 из исходного кода до обновления хранилища. Я перепробовал много вещей, включая установку с использованием dpkg и исходного кода снова. Я застрял, и нет никакой реальной помощи для моей ситуации. Конечно, это можно решить, но я не настолько силен в Linux. closetnoc 10 лет назад 0
1
closetnoc

Please do not up-vote this answer until the bounty has been paid- if you do.

I want to first give Thanks(!) to those who have helped me and then explain what happened and what not to do and what fixed this issue. So please bare withe me. I am doing this for future users.

Give Thanks: I want to humbly Thank(!) Paul P (here) and Manfred Hampl (m-hampl) from answers.launchpad.net and apologize for being somewhat obtuse. Both helped me to solve this problem. I needed a hero and both stood up to be my hero. I Thank You both with all I have.

In fact, I Thank(!) everyone who chimed in. There was wisdom in all of it. Especially, unkilbeeg, who gave a clue that was invaluable. Of course I cannot forget Cyrus who jumped in right away and was also invaluable.

What Happened: In the fog of things, and with my significant ignorance in all things install/update and so on, I followed pages, opinions, and links and thought I was doing the right thing. In the beginning and at the time, apt-get did not have a package available and so I hovered over launchpad.net because that is where Ubuntu pointed me to.

What I did not realize was what to do with the launchpad.net resource. I installed the base install .gz file expecting an update somewhere. To make a long story short, what I did not realize is that there are .deb files on another page that should have been my focus. If you are trying to update something in Ubuntu using launchpad.net, look for an appropriate .deb file.

Between apt-get and launchpad.net, I ended up with two versions of bash that seriously confused the issue.

Worse yet, there was a proposed GNU fix, that may have been good for some, but broke bash in /bin. Thank God(!) there were two versions. Paul P helped me to fix this with issuing an install command to overwrite the GNU install.

In the end: Both Paul P and Manfred Hampl were on the same track as I bounced between two sites. Unfortunately, I was too obtuse for Paul P and I apologize for that.

What needed to be known was, $PATH was important as unkilbeeg pointed out. The only version of bash that should exist (from my understanding and remember I am obtuse), is the one in /bin and the only install that should be had are the ones you get through apt-get and optionally any deb file from launchpad.net. Both Paul P and Manfred Hampl were pointing out that the /usr/local/bin version of bash should be deleted. So that is what I did. As it turned out, while I thought I was using /usr/bin, because that is what was assigned to my user, I was actually using /local/usr/bin because it was first in my path. Good catch!

Remember this is Ubuntu advice. It may not apply to everyone.

ALWAYS(!) use apt-get first if you can. Secondly, use launchpad.net and look for the right .deb file. Do not do anything else. While GNU resources are valuable, it is best to let Ubuntu create a package for you and simply wait for it. Do not update Ubuntu from other resources unless you really know what you are doing.

Bounty: I wish I could give everyone a part of the bounty or at least divide it between Paul P and Manfred Hampl but that is impossible. I am marking Paul P as the accepted answer and ask him to update his answer for future readers. If he needs information from me, I will gladly give it.

Thanks Again: Again, I Thank(!) everyone who chimed in. Simply chiming in can be far more important than you can ever know. A simple clue can really help someone who is in trouble. The support of a community that cares immense. Thanks Again