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

У меня есть система, которую я администрирую удаленно (на расстоянии 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 должен их найти.

Другие вопросы по тегам