web-dev-qa-db-ja.com

サポートされていないUbuntuサーバーでShellshock Bashバグにパッチを適用するための推奨される方法は何ですか?

サポート外のUbuntu 12.10(Quantal Quetzal)サーバーを維持しています(理由は聞かないでください)。パッチを適用する必要があります Shellshock Bashのセキュリティバグ。アップグレードはもう利用できないので、Bashにパッチを適用するための推奨される方法は何ですか?

私は この答え を見つけました(Debianからパッケージを取得してインストールしないことbinaries packagesをインストールすることをお勧めしますが、パッケージをインストールしますfrom source)。それは私には問題ないようですが、他に何かアドバイスはありますか?

6
smonff

この記事は役に立ち、私がまだサポートしなければならないUbuntu 12.10(Quantal)のいくつかのインスタンスで機能しました。

buntuの新旧リリースでのBashエクスプロイトの修正

要約すると、手順は次のとおりです。

  1. 現在のリリースのコードネーム(例:quantal)を取得し、変数に格納します。

    lsb_release -a
    DISTRIB_CODENAME=quantal
    
  2. /etc/apt/sources.listで信頼できるソースに変更します。例えば、

    Sudo sed -i "s/$DISTRIB_CODENAME/trusty/g" /etc/apt/sources.list
    
  3. Bashの更新とアップグレード

    Sudo apt-get update
    
    Sudo apt-get install --only-upgrade bash
    
  4. 最新バージョンが次のテストに失敗することを確認します(つまり、「busted」が表示されないはずです)。

    env X="() { :;} ; echo busted" `which bash` -c "echo completed"
    
  5. /etc/apt/sources.listを元に戻して、現在のコード名を使用します。例えば、

    Sudo sed -i "s/trusty/$DISTRIB_CODENAME/g" /etc/apt/sources.list
    
13
lumpygator

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 はスクリプトが見つかる場所です

幸運を

8
Craig

この種類のセキュリティ更新プログラムは、認定されたプロバイダーからのみインストールする必要があるため、ソースからコンパイルするというソリューションしかありません。

5

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に置き換えます。)

3
Paul Tobias

はい、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
2
Ame Nomade

検討できる別のアプローチがあります。

古くなったQuantalサーバーで実際にbashを使用していますか?

Bashが必要ない場合、/ bin/bashへの/ bin/shリンクを/ bin/dashへのリンクにまだ置き換えていない場合は、dashをインストールして、Bourneシェルの代替として使用します。

これは、シェルスクリプトで "bashism"を使用しない方が移植性が高くなり、よりシンプルでオーバーヘッドが少なく、より安全なダッシュシェルを使用できるようになる理由を示しています。

0
J G Miller