3

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

Я все еще уязвим (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, которые можно увидеть повсюду, пожалуйста. Я прочитал все или почти все, что я могу найти. Если у вас есть ресурс, пожалуйста, дайте мне знать. Возможно, вы добились успеха, но у меня не было ничего, кроме неприятностей.

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

4 ответа4

2

Debian предоставляет исходный исходный код, затем файлы управления и локальные модификации. .orig в имени файла говорит, что это не изменено. .dsc - это просто метаданные. Внутри файла .debian.tar.gz вы найдете все исправления, включая исправления безопасности. Процесс сборки берет исходный апстрим, применяет патчи и собирает пакеты из этого. Debian (и Ubuntu) категорически против добавления новых версий из апстрима, потому что новые версии добавляют новые ошибки и регрессии, а не только исправляют известные проблемы.

Запуск sudo apt-get install --reinstall bash должен исправить проблему - вывод команды apt-get сообщает, что он не делал установку и попытался обновить настройки.

Если и только если этот apt-get не работает, вы хотите:

  1. Убедитесь, что у вас установлена другая оболочка, чтобы сбой при удалении bash не блокировал вас из системы; установите ksh или zsh и рассмотрите временную настройку логина-оболочки для одного из них, чтобы вы могли войти.
  2. sudo dpkg --remove --force-remove-reinstreq bash
  3. sudo apt-get install bash

Затем вы хотите начать знакомство с системой справочных страниц, используемой Unix; man команда здесь твой друг. man apt-get и man dpkg дадут вам много того, что вам нужно здесь.

2

Сдается мне, что проблема в том, что вы случайно установили плохую версию bash в /usr/local и у вас уже есть лучшая версия в /bin . Так что я не понимаю, почему ответ не просто rm /usr/local/bin/bash

Хорошо, это не избавит от всех файлов поддержки, которые идут с этим, но это удостоверится, что плохая версия не может работать.

Если у вас все еще есть каталог, в котором вы сделали make install плохой версии, вы можете пойти туда и выполнить make uninstall чтобы все это очистить. Если у вас его еще нет ... вы, вероятно, можете разархивировать и собрать его заново (убедившись, что он соответствует аргументам ./configure вы использовали в первый раз) и запустить make uninstall .

make uninstall должна работать с любой программой GNU, для которой у вас все еще есть исходный каталог сборки. Именно в стандартах кодирования должны следовать все исходные пакеты GNU.

1

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

1

Пожалуйста, не голосуйте за этот ответ, пока щедрость не будет выплачена - если вы делаете.

Я хочу сначала поблагодарить (!) тем, кто помог мне, а затем объяснить, что случилось, а что не нужно делать и что решило эту проблему. Поэтому, пожалуйста, останься со мной. Я делаю это для будущих пользователей.

Благодарю: хочу смиренно поблагодарить (!) Пол П. (здесь) и Манфред Хэмпл (m-hampl) из answers.launchpad.net и приносят извинения за то, что были немного тупыми. Оба помогли мне решить эту проблему. Мне нужен был герой, и оба встали, чтобы стать моим героем. Я благодарю вас обоих со всем, что у меня есть.

На самом деле, я благодарю (!) все, кто вмешался. Во всем этом была мудрость. Особенно, unkilbeeg, который дал подсказку, которая была неоценима. Конечно, я не могу забыть Сайруса, который запрыгнул сразу и также был бесценным.

Что случилось: в тумане вещей, и с моим значительным невежеством во всех установках / обновлениях и так далее, я следил за страницами, мнениями и ссылками и думал, что поступаю правильно. В начале и в то время у apt-get не было пакета, поэтому я завис над launchpad.net, потому что именно на это Ubuntu указал мне.

Чего я не понял, так это что делать с ресурсом launchpad.net. Я установил файл базовой установки .gz, ожидая где-то обновления. Короче говоря, я не осознавал, что на другой странице есть файлы .deb, на которых я должен был сосредоточиться. Если вы пытаетесь обновить что-то в Ubuntu с помощью launchpad.net, найдите соответствующий файл .deb.

Между apt-get и launchpad.net у меня появилось две версии bash, которые серьезно запутали проблему.

Хуже того, было предложено исправление GNU, которое могло бы быть полезным для некоторых, но сломало bash в /bin. Слава Богу(!) было две версии. Пол П. помог мне исправить это, выполнив команду установки, чтобы перезаписать установку GNU.

В конце: и Пол П, и Манфред Хэмпл были на одной трассе, когда я подпрыгнул между двумя участками. К сожалению, я был слишком туп для Пола П. и извиняюсь за это.

Что нужно было знать, так это то, что $ PATH был важен, как указал unkilbeeg. Единственная версия bash, которая должна существовать (насколько я понимаю, я помню, что я тупая), это та, что в /bin, и единственная установка, которую следует иметь, это те, которые вы получаете через apt-get и, опционально, любой файл deb из панели запуска. сеть. И Пол П., и Манфред Хэмпл указывали, что версию bash /usr /local /bin следует удалить. Вот что я и сделал. Как оказалось, в то время как я думал, что я использую /usr /bin, потому что это то, что было назначено моему пользователю, я фактически использовал /local /usr /bin, потому что он был первым в моем пути. Хороший улов!

Помните, что это совет Ubuntu. Это может не относиться ко всем.

ВСЕГДА(!) сначала используйте apt-get, если можете. Во-вторых, используйте launchpad.net и найдите нужный файл .deb. Больше ничего не делай. Хотя ресурсы GNU являются ценными, лучше всего позволить Ubuntu создать пакет для вас и просто ждать его. Не обновляйте Ubuntu с других ресурсов, если вы действительно не знаете, что делаете.

Баунти: Я хотел бы дать каждому часть награды или хотя бы разделить ее между Полом П и Манфредом Хэмплом, но это невозможно. Я отмечаю Пола П. как принятый ответ и прошу его обновить свой ответ для будущих читателей. Если ему понадобится информация от меня, я с радостью ее предоставлю.

Еще раз спасибо: еще раз, я благодарю (!) все, кто вмешался. Простое включение может быть гораздо важнее, чем вы когда-либо могли себе представить. Простая подсказка может действительно помочь тому, кто попал в беду. Поддержка сообщества, которое заботится огромно. Еще раз спасибо

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