22

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

4 ответа4

29

Украл это у 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 все равно будет уязвима.

2

Существует также решение обновить ваш 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 репозитории.

-1

Команда должна быть

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

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

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