У меня есть система, которую я администрирую удаленно (на расстоянии 2 часовых поясов), которая работает под управлением Ubuntu 9.04, Jaunty. По разным причинам, в основном из-за того, что я очень неохотно пытаюсь выполнить обновление дистрибутива, я не могу обновить его до более поздней версии. Очевидно, что он больше не поддерживается, и нет никаких официальных патчей. Имеются ли инструкции о том, как я могу исправить код и самостоятельно перекомпилировать bash для устранения уязвимостей в оболочке?
4 ответа
Украл это у 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
все равно будет уязвима.
Существует также решение обновить ваш 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 репозитории.
Команда должна быть
sudo apt-get update && sudo apt-get install --only-upgrade bash
Один простой вариант - просто не использовать bash. Убедитесь, что dash
установлен и что /bin/sh
является символической ссылкой на dash
, а не на bash
. (Это значение по умолчанию в некоторых версиях Debian, но я не уверен насчет Ubuntu.) Если у вас есть учетные записи пользователей для доступа по SSH с помощью принудительных команд, вам также необходимо изменить их учетные записи. Вам также может понадобиться проверить наличие скриптов, явно использующих bash; Грэп для #!/bin/bash
должен их найти.