Оболочка bash в моем производственном компьютере уязвима к уязвимости «bashbug».https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/
Установленная версия:
`$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)`
Я не могу использовать YUM
для установки последнего пакета, потому что наш сервер не подключен к Интернету, поэтому я пытаюсь установить bash
с помощью исходного кода. Я скачал bash 4.3
и установил его из исходного кода. Поскольку эта версия все еще уязвима для ошибки bash, мне нужно применить последний патч для этой версии.
Для этого я скачал последний патч bash
со следующего сайта.
http://ftp.gnu.org/gnu/bash/bash-4.3-patches/
Я применяю bash43-030
патч по ссылке выше.
http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-030
Проблема, с которой я столкнулся, заключается в том, что применение исправления завершается ошибкой
[bash-4.3]$ patch -p0 < bash-patch patching file builtins/evalstring.c Hunk #1 FAILED at 309. Hunk #2 FAILED at 379. 2 out of 2 hunks FAILED -- saving rejects to file builtins/evalstring.c.rej patching file parse.y Hunk #1 succeeded at 2574 (offset 35 lines). Hunk #2 FAILED at 4038. 1 out of 2 hunks FAILED -- saving rejects to file parse.y.rej patching file shell.h Hunk #1 succeeded at 181 with fuzz 2. patching file y.tab.c Hunk #1 FAILED at 169. Hunk #2 FAILED at 498. Hunk #3 FAILED at 2099. Hunk #4 FAILED at 2113. ... ... Hunk #98 FAILED at 6350. 97 out of 98 hunks FAILED -- saving rejects to file y.tab.c.rej patching file patchlevel.h Hunk #1 FAILED at 26. 1 out of 1 hunk FAILED -- saving rejects to file patchlevel.h.rej
Пожалуйста, подскажите, как решить проблему. Возможно, подход к применению патча неправильный.
решение1
Bash-патчи — этокумулятивный, исходный код для 4.3 фактически является 4.3.0, патчи являются отдельными, и все они должны применяться по порядку, каждый из них поднимет вас на уровень патча. Редко, полный исходный релиз доступен на официальном сайте, последний был 3.2.48.
Вы видите, что требуемый патч (суффикс "-030" указывает на уровень патча .30) ожидает более ранние патчи. (Это всегда будет обнаружено патчами bash, поскольку каждый патч меняет patchlevel.h
любой пропуск приведет к ошибке патча). Вы можете найти мои инструкции по сборке из исходников здесь:https://unix.stackexchange.com/a/157714/31352
Сборка из исходников проста, но не стоит относиться к этому легкомысленно. После исправления bash вы становитесь сами себе хозяевами в вопросах поддержки поставщиков, и это может усложнить дальнейшие административные задачи (такие как исправления и обновления).
Вам, вероятно, лучшезагрузите Red Hat RPM, перенесите его на сервер (или, если вы действительно хотите собрать его из исходного кода, то SRPM). У bash минимальные зависимости (в частности, termcap), вам понадобится только один пакет, при условии, что ни один из них не был изменен.
В любом случае, вам, вероятно, следует придерживаться bash-4.1, есть ряд изменений, которые могут повлиять на скрипты, см.COMPAT
файл в исходном дистрибутиве для получения подробной информации. Все выпущенные версии от 2.05b до 4.3 имеют исправления для "shellshock" (CVE-2014-6271) и связанных с ним проблем.