サポート外のUbuntu 12.10(Quantal Quetzal)サーバーを維持しています(理由は聞かないでください)。パッチを適用する必要があります Shellshock Bashのセキュリティバグ。アップグレードはもう利用できないので、Bashにパッチを適用するための推奨される方法は何ですか?
私は この答え を見つけました(Debianからパッケージを取得してインストールしないことbinaries packagesをインストールすることをお勧めしますが、パッケージをインストールしますfrom source)。それは私には問題ないようですが、他に何かアドバイスはありますか?
この記事は役に立ち、私がまだサポートしなければならないUbuntu 12.10(Quantal)のいくつかのインスタンスで機能しました。
要約すると、手順は次のとおりです。
現在のリリースのコードネーム(例:quantal)を取得し、変数に格納します。
lsb_release -a
DISTRIB_CODENAME=quantal
/etc/apt/sources.list
で信頼できるソースに変更します。例えば、
Sudo sed -i "s/$DISTRIB_CODENAME/trusty/g" /etc/apt/sources.list
Bashの更新とアップグレード
Sudo apt-get update
Sudo apt-get install --only-upgrade bash
最新バージョンが次のテストに失敗することを確認します(つまり、「busted」が表示されないはずです)。
env X="() { :;} ; echo busted" `which bash` -c "echo completed"
/etc/apt/sources.listを元に戻して、現在のコード名を使用します。例えば、
Sudo sed -i "s/trusty/$DISTRIB_CODENAME/g" /etc/apt/sources.list
https://shellshocker.net/#fix は、bashを手動で更新するための優れたツールをいくつか備えています。
curl https://shellshocker.net/fixbash | sh
システムが脆弱かどうかをテストすることもできます。
curl https://shellshocker.net/Shellshock_test.sh | bash
自己責任で実行してください。上記のリンクの有効期限が切れた場合、または信頼したくない場合に実行されるスクリプトは次のとおりです。
cd ~/
mkdir bash-shellshocker
cd bash-shellshocker
echo "Downloading Bash..."
wget https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
echo "Downloading Bash patches..."
i=0
rtn=0
while [ $rtn -eq 0 ]; do
i=`expr $i + 1`
wget https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$(printf '%03g' $i)
rtn=$?
done
i=`expr $i - 1`
echo "Extracting bash from tar.gz..."
tar zxvf bash-4.3.tar.gz
cd bash-4.3
echo "Applying Patches..."
for j in $(seq -f "%03g" 1 $i);do patch -p0 < ../bash43-$j; done
echo "Ready to install. Configuring..."
./configure --prefix=/
echo "Running make"
make
if [[ "$USER" == "root" ]]
then
echo "Running make install"
make install
cp /bin/bash /usr/local/bin/bash
else
echo "Running make install (You may need to type your Sudo password here)"
Sudo make install
Sudo cp /bin/bash /usr/local/bin/bash
fi
https://github.com/wreiske/shellshocker/blob/master/fixbash はスクリプトが見つかる場所です
幸運を
この種類のセキュリティ更新プログラムは、認定されたプロバイダーからのみインストールする必要があるため、ソースからコンパイルするというソリューションしかありません。
Lumpygatorからの回答は役に立ちましたが、複雑すぎると思います。新しいubuntuリリースから1つのパッケージのみをインストールする場合は、sources.list
を編集する必要はありません。パッケージを直接ダウンロードしてインストールするだけです。 bash Shellshockバグの場合は http://packages.ubuntu.com/trusty/AMD64/bash/download に移動し、「* security.ubuntu.com/ubuntu」リンクをクリックします。これにより、ファイルbash_4.3-7ubuntu1.5_AMD64.deb
がダウンロードされます。または、次のコマンドを実行することもできます。
wget http://security.ubuntu.com/ubuntu/pool/main/b/bash/bash_4.3-7ubuntu1.5_AMD64.deb
新しいパッケージを入手したら、次のコマンドで直接インストールできます。
dpkg -i bash_4.3-7ubuntu1.5_AMD64.deb
これは私にとってSaucy(13.10)で機能しました。
(32ビットシステムの場合は、AMD64をi386に置き換えます。)
はい、shellshocker.netが提供するスクリプトは機能しています。
ただし、Ubuntu 11.04(Natty Narwhal)、11.10(Oneiric Ocelot)、12.04 LTS(Precise Pangolin)、12.10(Quantal Quetzal)、13.04(Raring Ringtail)、および13.10(Saucy Salamander)の場合、Bashパッケージのバージョンは4.2したがって、スクリプトにはいくつかの変更が必要です。
cd ~/
mkdir bash
cd bash
wget https://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
for i in $(seq -f "%03g" 0 49); do wget https://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-$i; done
tar zxvf bash-4.2.tar.gz
cd bash-4.2
for i in $(seq -f "%03g" 0 49); do patch -p0 < ../bash42-$i; done
./configure && make
Sudo make install
そして、「make」コマンドを機能させるには、 Bison をインストールする必要があります。
Sudo apt-get install bison
検討できる別のアプローチがあります。
古くなったQuantalサーバーで実際にbashを使用していますか?
Bashが必要ない場合、/ bin/bashへの/ bin/shリンクを/ bin/dashへのリンクにまだ置き換えていない場合は、dashをインストールして、Bourneシェルの代替として使用します。
これは、シェルスクリプトで "bashism"を使用しない方が移植性が高くなり、よりシンプルでオーバーヘッドが少なく、より安全なダッシュシェルを使用できるようになる理由を示しています。