Как собрать bash, чтобы исправить патч и проверить его перед установкой в ​​корень моей системы?

Что не так с моим кодом ниже? Я загружаю и исправляю патч 18, который, как я понимаю, является патчем для уязвимости в shellchock. Но я все еще получаю уязвимость при запуске Bash.

Скачать исходный код и патчи

wget http://ftp.gnu.org/gnu/bash/bash-3.1.tar.gz
wget http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-00{1..9} http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-0{10..18}

Распакуйте и примените патчи

tar -xvf bash-3.1.tar.gz
cd bash-3.1
find ../bash31-??? -exec /bin/sh -c 'patch -p0 <{}' \;

(Asside: приведенная выше команда find просто возвращает отсортированный список из-за сбоев в оболочке, но я знаю, что это не всегда верно для поиска find)

Конфиг, Сделать, Сделать Установить

./configure --prefix /tmp/bash_patched && make && make install

Запустить баш

/tmp/bash_patched/bin/bash

Следующее должно вернуться /tmp/bash_patched/bin/bash 3.1.18(1)-release

echo $BASH $BASH_VERSION

Сделать тест на удар

env X="() { :;} ; echo busted" /bin/sh -c "echo stuff"

Для меня это возвращается

busted
stuff

3 ответа

Вопрос в тесте /bin/sh остается уязвимым в системе до момента установки в корне. Лучший тест будет env X="() { :;} ; echo busted" /tmp/bash_patched/bin/bash -c "echo stuff"

Патчи с ракушками на самом деле 19 и 20. Wget их не скачивает. Пока не проверял, но изменил вторую команду на

wget http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-00{1..9} http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-0{10..19} http://ftp.gnu.org/gnu/bash/bash-3.1-patches/bash31-020

должно заставить это работать

Вы пытались взглянуть на сценарий, описанный в вопросе Super User 816787? На моих машинах с Ubuntu это работало как победитель, около 15 минут на сервер, включая снимки VMware, без перезагрузки.

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