Bash

為 bash 失敗應用更新檔

  • October 14, 2014

我的生產箱中的 bash shell 容易受到“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安裝最新的軟體包,因為我們的伺服器沒有連接到 Internet,所以我嘗試bash使用原始碼安裝。我bash 4.3是從原始碼下載安裝的。由於這個版本仍然容易受到 bash bug 的影響,我需要為這個版本應用最新的更新檔。

為此,我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

請建議如何解決該問題。可能是應用更新檔的方法是錯誤的。

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) 和相關問題的更新檔。

引用自:https://unix.stackexchange.com/questions/161786