[ Войти · Правила форума · Поиск · RSS ]

  • Страница 1 из 1
  • 1
Исправление уязвимости shellshock для устаревших систем
AnymousДата: Вторник, 07.10.2014, 03:03 | Сообщение # 1
.::Создатель::.
Сообщений: 863
Репутация: 53 ±
Награды: 24 +
Для дистрибутивов с действующей поддержкой уязвимость Shellshock устраняется простым обновлением пакета bash. Но если обновления уже не выпускаются, решение проблемы будет сложнее. Рабочих вариантов всего два — обновлять bash другим способом или отказываться от bash в пользу другого shell-интерпретатора.

1. Установка из пакета из репозитория Debian wheezy в Debian lenny.

Приводим /etc/apt/source.list из
Код
deb http://ftp.debian.org/debian lenny main contrib
deb http://security.debian.org/ lenny/updates main contrib

к
Код
deb http://archive.debian.org/debian lenny main
deb http://archive.debian.org/debian-security lenny/updates main
deb http://archive.debian.org/backports.org lenny-backports main

deb http://ftp.debian.org/debian wheezy main contrib
deb http://security.debian.org/ wheezy/updates main contrib

Убедитесь, что у вас нет файла /etc/apt/preference, настройки которого могли бы мешать установке по из репозиториев wheezy. После этого добавляем ключ, которым подписываются пакеты в wheezy и обновляем базу пакетов и устанавливаем пакет bash-static.
Код
# apt-key adv --recv-keys --keyserver pgp.mit.edu 8B48AD6246925553
# apt-get update && apt-get install -y bash-static

Проверяем установленный bash-static и то, куда сейчас указывает /bin/sh:
Код
# ls -la /bin/sh /bin/bash*
-rwxr-xr-x 1 root root 700492 Май 12 2008 /bin/bash
-rwxr-xr-x 1 root root 1410128 Апр 10 2010 /bin/bash-static
lrwxrwxrwx 1 root root 4 Окт 1 00:32 /bin/sh -> bash

Далее важно аккуратно выполнять действия:
Код
# mv /bin/bash /bin/bash.old && ln -s bash-static /bin/bash

Проверяем результат, должно получиться так:
Код
# ls -la /bin/sh /bin/bash*
lrwxrwxrwx 1 root root 11 Окт 1 00:51 /bin/bash -> bash-static
-rwxr-xr-x 1 root root 700492 Май 12 2008 /bin/bash.old
-rwxr-xr-x 1 root root 1410128 Апр 10 2010 /bin/bash-static
lrwxrwxrwx 1 root root 4 Окт 1 00:32 /bin/sh -> bash

Убедитесь, что c шеллом все в порядке до того, как делать логаут из системы. Например, попробовав залогиниться с другой консоли. Так как в случае недоступности шелла, указанного для пользователя(как правило в /etc/passwd) можно потерять возможность доступа в систему снова.

После выполнения операции стоит закоментировать в /etc/apt/source.list

Код
#deb http://ftp.debian.org/debian wheezy main contrib
#deb http://security.debian.org/ wheezy/updates main contrib


2. Другие дистрибутивы.

В случае других дистрибутивов можно попробовать статическую сборку bash из состава Debian wheezy или сборку из ftp.ssnab.net/pub/bash/ (скомпилированной по пункту 3)

Скачать Debian'овский пакет можно здесь: packages.debian.org/wheezy/bash-static
Код
# wget http://security.debian.org/debian-security/pool/updates/main/b/bash/bash-static_4.2+dfsg-0.1+deb7u3_i386.deb

Файл разархивируется либо утилитой dpkg (актуально для старых версий ubuntu) или архиватором ar. Последняя идет в составе пакета binutils.

Код
# mkdir tmp
# dpkg -x bash-static_4.1-3_i386.deb tmp/

или
Код
# ar x bash-static_4.1-3_i386.deb

Обязательно сохраните старую версию bash в /bin/bash.old перед тем как выкладывать туда скачанный бинарник.

3. Самостоятельная компиляция

Это может понадобится в том случае, если у вас старое ядро и bash из wheezy не работает с жалобами на отсутствие какого-либо системного вызова, если используется другая операционная система, а также для тех случаев, когда необходима сборка с какими-то особыми опциями.

У bash несколько хитрая система выкладывания исходных кодов: отдельно лежит архив определенной версии (в нашем случае 4.3) и отдельно каталог с патчами на ошибки, которые нашли с момента его выпуска, вплоть до появления обновленной версии. Поэтому скачиваем и то и другое для самостоятельной установки патчей. На Debian lenny это будет выглядеть так:

Устанавливаем необходимые пакеты для компиляции. Для этого вам, возможно, потребуется настроить правильным образом репозитории на архивы, как в случае с lenny в первом пункте.

Код
# apt-get install libc-dev gcc automake autoconf make patch


Для CentOS, соответственно, будет

Код
# yum install glibc-devel glibc-static make automake autoconf patch

Код
# cd /usr/src
# wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
# tar xzf bash-4.3.tar.gz
# cd bash-4.3
# wget -cr --reject 'index.*' --reject '*.sig' -l1 http://ftp.gnu.org/gnu/bash/bash-4.3-patches/
# find ftp.gnu.org/gnu/bash/bash-4.3-patches/ -type f | sort -u |  xargs -l1 -I % cat % | patch -p0


Во избежание ошибки «multiple definition of `free`» используем опцию --without-bash-malloc

Код
# ./configure --enable-static-link --without-bash-malloc --enable-job-control --enable-history
# make
# strip bash

Полученный bash копируем в /bin и используем его вместо системного bash по описанной ранее схеме:

Код
# cp bash /bin/bash.new && mv /bin/bash /bin/bash.old && ln -s bash.new /bin/bash


Собранные таким образом на чистых Debian 5 и CentOS 5 бинарные файлы можно скачать здесь: ftp.ssnab.net/pub/bash/

4) Если не получается самостоятельно собрать bash или вытащить его из других дистрибутивов, возможнен еще вариант отказаться от bash и использовать какой-нибудь другой shell-интерпретатор, например, /bin/dash. Переименовать /bin/bash в /bin/bash.vulnerable и создать символьную ссылку /bin/bash, ведущую на альтернативный интерпретатор.

В этом есть доля риска, так как перестанут работать скрипты, содержащие башизмы — код, специфичный именно для bash. Если это окажутся стартовые или важные системные скрипты, это может привести к неработоспособности системы. Но для таких скриптов, если вы уверены в том, что они не будут вызываться в враждебном окружении, можно явно указать в начале файла интерпретатором оригинальный bash: #!/bin/bash.vulnerable

Update добавлена процедура получения ключа для wheezy

Источник:http://habrahabr.ru

Как создать скриншот? | Как создать лог файл HijackThis?
Причины, по которым может тормозить компьютер | Правила сайта!
 
  • Страница 1 из 1
  • 1
Поиск:


Чтобы добавить сообщение или создать новую тему, необходимо зарегистрироваться или зайти под своим ником!
вверх
Файлы для обмена предоставлены пользователями сайта. Администрация не несёт ответственности за их содержание. На сервере хранятся только торрент-файлы. Это значит, что мы не храним никаких нелегальных материалов, а так же материалов охраняемых авторским правом.
RudSOFT © 2010 - 2024 | Карта сайта | Карта форума | Хостинг от uCoz Cвязь с Администрацией | Информация для правообладателей