Что рекомендуемый путь состоит в том, чтобы исправить ошибку Bash Контузии на неподдерживаемом сервере Ubuntu?

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

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

6
задан 13 April 2017 в 15:14
6 ответов

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

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

В итоге, шаги следующие:

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

     lsb_release -a
    DISTRIB_CODENAME = количественный
     
  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. Убедитесь, что последняя версия не прошла следующий тест (т.е. вы не должны видеть "busted")

     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
     
13
ответ дан 2 December 2019 в 23:56

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 - это место, где можно найти сценарий

удачи

8
ответ дан 2 December 2019 в 23:56

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

5
ответ дан 2 December 2019 в 23:56

Ответ от 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-битная система .)

3
ответ дан 2 December 2019 в 23:56

Да, сценарий, предоставленный 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

И вам необходимо установить Bison чтобы команда make работала:

sudo apt-get install bison
2
ответ дан 2 December 2019 в 23:56

Есть другой подход, который вы могли бы рассмотреть.

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

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

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

0
ответ дан 2 December 2019 в 23:56

Теги

Похожие вопросы