bash のパッチ適用が失敗する

bash のパッチ適用が失敗する

私のプロダクション ボックスの 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) があるため、いずれも変更されていないと仮定すると、必要なパッケージは 1 つだけです。

いずれにせよ、おそらくbash-4.1を使い続けるべきでしょう。スクリプトに影響を与える可能性のある変更がいくつかあるので、COMPAT詳細については、ソース配布のファイルを参照してください。2.05b から 4.3 までのすべてのリリース バージョンには、「shellshock」(CVE-2014-6271) および関連する問題に対するパッチが含まれています。

関連情報