Назад | Перейти на главную страницу

Каков рекомендуемый способ исправления ошибки Shellshock Bash на неподдерживаемом сервере Ubuntu?

Я поддерживаю неподдерживаемый сервер Ubuntu 12.10 (Quantal Quetzal) (пожалуйста, не спрашивайте почему), и нам нужно исправить Shellshock Ошибка безопасности Bash. Поскольку обновления больше не доступны, каков рекомендуемый способ исправления Bash?

я нашел этот ответ (он рекомендует получать пакеты из Debian и не устанавливать бинарные пакеты, но установить пакеты из источника). Мне это кажется нормальным, но какой еще совет?

Эта статья была полезной и сработала для нескольких экземпляров Ubuntu 12.10 (Quantal), которые мне все еще нужно поддерживать.

Исправить эксплойт Bash в новых и старых версиях Ubuntu

Вкратце, шаги следующие:

  1. Получите кодовое имя вашего текущего выпуска (например, Quantal) и сохраните его в переменной:

    lsb_release -a
    DISTRIB_CODENAME=quantal
    
  2. Измените источник на надежный в /etc/apt/sources.list. Например,

    sudo sed -i "s/$DISTRIB_CODENAME/trusty/g" /etc/apt/sources.list
    
  3. Обновить и обновить bash

    sudo apt-get update
    
    sudo apt-get install --only-upgrade bash
    
  4. Убедитесь, что последняя версия не прошла следующий тест (т. Е. Вы не должны видеть "закрыто")

    env X="() { :;} ; echo busted" `which bash` -c "echo completed"
    
  5. Восстановите /etc/apt/sources.list, чтобы использовать текущее кодовое имя. Например,

    sudo sed -i "s/trusty/$DISTRIB_CODENAME/g" /etc/apt/sources.list
    

https://shellshocker.net/#fix есть хорошие инструменты для ручного обновления bash.

curl https://shellshocker.net/fixbash | sh

Вы также можете проверить, уязвима ли ваша система:

curl https://shellshocker.net/shellshock_test.sh | bash

Запускайте его на свой страх и риск. Вот сценарий, который он запускает, если срок действия указанной выше ссылки истекает или вы не хотите ей доверять:

cd ~/
mkdir bash-shellshocker
cd bash-shellshocker
echo "Downloading Bash..."
wget https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
echo "Downloading Bash patches..."
i=0
rtn=0
while [ $rtn -eq 0 ]; do
  i=`expr $i + 1`
  wget https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$(printf '%03g' $i)
  rtn=$?
done
i=`expr $i - 1`
echo "Extracting bash from tar.gz..."
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
echo "Applying Patches..."
for j in $(seq -f "%03g" 1 $i);do patch -p0 < ../bash43-$j; done

echo "Ready to install. Configuring..."
./configure --prefix=/
echo "Running make"
make
if [[ "$USER" == "root" ]]
then
  echo "Running make install"
  make install
  cp /bin/bash /usr/local/bin/bash
else
  echo "Running make install  (You may need to type your sudo password here)"
  sudo make install
  sudo cp /bin/bash /usr/local/bin/bash 
fi

https://github.com/wreiske/shellshocker/blob/master/fixbash здесь можно найти сценарий

удачи

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

Ответ от lumpygator мне помог, но я думаю, что это слишком сложно. Если вы хотите установить только один пакет из более новой версии ubuntu, нет необходимости редактировать sources.list, вы можете просто загрузить пакет и установить его. Итак, в случае ошибки bash shellshock перейдите к http://packages.ubuntu.com/trusty/amd64/bash/downloadщелкните ссылку «* security.ubuntu.com/ubuntu», файл загрузится bash_4.3-7ubuntu1.5_amd64.deb. В качестве альтернативы вы можете запустить команду:

wget http://security.ubuntu.com/ubuntu/pool/main/b/bash/bash_4.3-7ubuntu1.5_amd64.deb

После того, как вы получили новый пакет, вы можете установить его напрямую:

dpkg -i bash_4.3-7ubuntu1.5_amd64.deb

Это сработало для меня на Saucy (13.10).

(Замените amd64 на i386, если у вас 32-битная система.)

Да, скрипт, предоставленный shellshocker.net, работает.

Но для Ubuntu 11.04 (Natty Narwhal), 11.10 (Oneiric Ocelot), 12.04 LTS (Precise Pangolin), 12.10 (Quantal Quetzal), 13.04 (Raring Ringtail) и 13.10 (Saucy Salamander) по крайней мере версия пакета Bash является 4.2, поэтому в скрипт нужно внести несколько изменений:

cd ~/
mkdir bash
cd bash
wget https://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
for i in $(seq -f "%03g" 0 49); do wget https://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-$i; done
tar zxvf bash-4.2.tar.gz 
cd bash-4.2
for i in $(seq -f "%03g" 0 49); do patch -p0 < ../bash42-$i; done
./configure && make
sudo make install

И вам нужно установить Бизон чтобы команда "make" работала:

sudo apt-get install bison

Вы могли бы рассмотреть еще один подход.

На вашем устаревшем сервере Quantal вы действительно используете bash?

Если вам не нужен bash, тогда, если вы еще не заменили ссылку / bin / sh на / bin / bash ссылкой на / bin / dash, установите dash и используйте ее в качестве замены оболочки Bourne.

Это иллюстрирует, почему для переносимости рекомендуется не использовать «bashisms» в сценариях оболочки, чтобы можно было использовать более простую, менее накладную и более безопасную оболочку dash.