アップグレードできない古いUbuntuシステムでshellshockの脆弱性を修正するにはどうすればよいですか?


22

Ubuntu 9.04、Jauntyを実行するリモートで管理するシステム(2つのタイムゾーン)があります。さまざまな理由で、主に私はこれまでのところディストリビューションをアップグレードしようとするのが本当に嫌なので、より新しいバージョンにアップグレードすることはできません。明らかに、もはやサポートされておらず、公式パッチもありません。コードにパッチを適用し、bashを自分で再コンパイルしてshellshockの脆弱性を削除する方法に関する指示はありますか?


5
このテーマについてどのような研究をしましたか?最も簡単な解決策は、自分で再構築してパッチを適用することです。 サーバーを更新するには、単にこの時間を受け入れる必要がある場合があります。
ラムハウンド14

ええ、それは私のフォールバックオプションです。サーバーは退室中です。私は、資金が交換のために入るまで、それをリンプし続けようとしています。私が現場にいれば、弾丸を噛んで更新を行いますが、それが問題なく行われることは非常にまれであり、それを手に入れることができなければ、私が持っていなければリスクを負うことはありませんに。
クラウス14

人々がこれを見つけることができるように、ページ上にいくつかのキーワードを取得するだけです。また、arstechnica.com

1
パッチを適用しないでおくと、「リンプアロング」がすぐに変わります。5年前にリリースされたディストリビューションを使用していることを明確にしてください。サポートは2010年10月に終了しました。心配する脆弱性がさらにたくさんあります。
tedder42 14

回答:


29

これをHacker Newsから盗んだ誰かからAskUbuntuから盗みました。私のために2つの古いサーバーで働いた

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

更新:--prefix=/configureコマンドに追加しないと、/usr/local/bin/bash最新のものになり、/bin/bash脆弱性が残ることに気付きました。


スクリプトにバグがあります。「0 25」シーケンスは「1 26」でなければなりません。これを読んでいて回答を編集できる場合は、更新してください。ありがとう!
joelparkerhenderson

./configure --prefix=/ && make順調に走行している間、make install必要なようですsudo
スチュワート14

これを公開してくれてありがとう-移行中に物事にパッチを当てる公正な方法。一部の人々は多くのvmsを持ち、それぞれを再構築するのは現実的ではありません。これを即時の修正として使用する一方で、より更新されたインストールを行うことで長期的に解決することが重要です。
ジャスパネサー14

@ rubo77それは(新27パッチが最も重要である)今1 27にする必要がある
joelparkerhenderson

1
追加しましたパッチ28.これがない CVE-2014から7186/7187の脆弱性を修正するように見えます。
unkilbeeg 14年

2

sources.listを最新のものに更新し、apt-getを使用してbashのみをアップグレードするソリューションもあります。それは本当に迅速であり、私はそれについての記事を書きました。基本的な操作は次のとおりです。

最新のUbuntu 'trusty' apt-getリポジトリーにアップグレードします(使用する場合はold-repositories.ubuntu.comのURLも変更する必要があります。リンクされた記事を確認してください)。

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list

bashのアップグレード/修正の適用:

sudo apt-get update
sudo apt-get install --only-upgrade bash

そして、おそらくapt-getリポジトリを元に戻します。


完全に機能しました!
ピータークルイトホフ14

-1

コマンドは

sudo apt-get update && sudo apt-get install --only-upgrade bash

2
これは役に立ちません。OPが言ったように、これはもうサポートされていないため、bashのアップグレードはありません。
アンドリューフェリエ14

-3

1つの簡単なオプションは、bashを使用しないことです。確認してくださいdashインストールされており、それは/bin/shへのシンボリックリンクであるdash、ではありませんbash。(これはDebianの一部のバージョンではデフォルトですが、Ubuntuについてはわかりません。)強制コマンドを使用してsshアクセス用のユーザーアカウントを持っている場合は、ログインシェルも変更する必要があります。また、bashを使用して明示的にスクリプトを確認する必要がある場合があります。greppingは#!/bin/bashそれらを見つけるはずです。


5
それは...少し「だけではなく、Javaのを使用し、我々はあなたがC ++でセグメンテーションフォールトを持つことができることがわかった」と言っようなものだ
DevSolar

3
より近い例えは、GCCのバグに遭遇した人にclangを試すよう伝えることです。両方とも同じ言語を実装し(異なるが、時には重複する非標準の拡張セットを使用)、実際の必要性は「bash」ではなく「shellインタープリター」である可能性は低いです。
R .. 14

あなたが言ったように、bashを明示的に使用できるスクリプトがあります。bashを使用する既存のファイルをgrepした場合でも、将来、誰かがbashを明示的に使用するシステムに新しいスクリプトを追加する可能性があります。busyboxを使用する(/ bin / shがbusyboxを指す)が、bashがインストールされている組み込みシステムでも同様です。最善の方法は、脆弱なシステムでbashを更新することです。
jcarballo

Unix / Linuxスクリプトの大部分は、bashまたはkshやzshなどの他の最新のシェルを必要とします。これらには、人々がどんな言語でも期待するようになった非常に多くの機能がありますが、(BusyBox)ash / Dash / sh(original)のような「ベアボーン」シェルには存在しません。これらのより単純なシェルは、より大きなシェルの機能の20〜30%しか持たないため、より高速になります。ただし、高度な文字列処理やパターンマッチングなどの多くの一般的な操作には、外部ユーティリティを広範囲に使用する必要があります。Bashなどはashなどを実行できます。スクリプト。しかし、その逆ではありません。
DocSalvager 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.