牙

つまり、最も近い次のリリースで十分に近いパッケージを見つけることができますか?それとも、ソースコードでコンパイルする方が複雑でより良いですか?それともDebianで入手できますか?

(この質問は少なくともUbuntu 11.10と12.10に関するものです。他の人もこの問題に遭遇すると確信しています。したがって、特定の寿命終了Ubuntuが何であるかによってアドバイスが異なる場合は何をすべきかを伝えるのが役立ちます! )

PS「アップグレード」は回答として受け入れられません。 ;-) わかりました。しかし、時にはサーバーを破棄/アップグレード/交換するのに時間がかかり、bashを最初にパッチしたいと思います。

答え1

使い続けたいから正式にサポートされていません出版されたら、唯一の選択肢は直接サポートすることです。

Ubuntuの特定のバージョン(11.0、12.0、または13.10)のソースコードを入手してから、参照用に公式パッケージと同じパッチを適用することをお勧めします。

Bashの脆弱性はメディアで最も報道されていますが、ほぼ毎日他の多くの脆弱性が発見されているので、少なくとも購読を真剣に検討する必要があります。Ubuntuセキュリティ勧告だからあなたは常にそれらを知っています。サポートされていないバージョンを使用しているため、これは特に重要です。

答え2

Quantal(Ubuntu 12.10)に対する短い回答:ダウンロードとインストールバッシュパッケージ正確なリポジトリから。

Quantum(Ubuntu 12.10)の場合IBash パッケージ検索近くのバージョンです。私はまれで正確なパッケージをダウンロードしました。

始める前に新規インストールが失敗した場合にシステムを復元できるように、既存のbashパッケージをバックアップしました。 (dpkg-repackパッケージが必要です。)

$ dpkg-repack bash

緊急時に復元する方が簡単なので、実行可能ファイルをコピーする必要が/bin/bashありましたが。/root/bash.vulnerable

ラリン

まず試しましたRaringのパッケージ:

$ dpkg -i bash_4.2-5ubuntu3_i386.deb

ところで、テスト結果はそれでも脆弱です

精密

それから試しました。精密包装:

$ dpkg -i bash_4.2-2ubuntu2.6_i386.deb

次のようにテスト済み安全、使用bashcheckスクリプト

Testing /bin/bash ...
GNU bash, version 4.2.25(1)-release (i686-pc-linux-gnu)

Variable function parser pre/suffixed [%%, upstream], bugs not exploitable
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
Not vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Not vulnerable to CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)

しかし、LTSバージョンをインストールしたらよかったでしょう。時間があればアップグレードしようとしています。

答え3

termcapソースからbashを構築するのはとても簡単です。動作するC開発環境(gcc、binutilsなど)とライブラリとヘッダ(デフォルトですが使用可能)が必要ですcurses

あなたはする必要があります少なくともこの作業を完了する前に、現在のバイナリをバックアップしてください。bashフルバックアップまたはリカバリディスクをバックアップすることをお勧めします。オペレーティングシステムによっては、bash起動スクリプトの重要な部分かもしれません!新しいバージョンには、以前のバージョンと互換性のない動作変更が含まれる場合があります。

bash-2.05bからbash-4.3までのすべてのバージョンで同じステップシーケンスが機能するはずです。必要に応じて、同じバージョンを使用できるように、必要に応じて「4.3」を置き換えます。やや古いbash-2.05bを実行しない限り脆弱ですが、公式パッチはなく、AFAICTの修正は2.05bにバックポートされました。

もう一度確認する必要があります公式ウェブサイト古い画像が表示される場合に備えて、現在のパッチレベルです。

mkdir -p /usr/local/src/dist && cd /usr/local/src/dist
wget http://ftpmirror.gnu.org/bash/bash-4.3.tar.gz.sig
wget http://ftpmirror.gnu.org/bash/bash-4.3.tar.gz
wget http://tiswww.case.edu/php/chet/gpgkey.asc
gpg --import gpgkey.asc
gpg --verify bash-4.3.tar.gz.sig
cd ..
tar xzvf dist/bash-4.3.tar.gz
cd bash-4.3
mkdir patches && cd patches 
wget -r --no-parent --accept "bash43-*" -nH -nd  \
  ftp.heanet.ie/mirrors/gnu/bash/bash-4.3-patches/     # Use a local mirror
echo *sig | xargs -n 1 gpg --verify --quiet            # see note 2

cd ..
echo patches/bash43-0?? | xargs -n 1 patch -p0 -i      # see note 3 below

./configure --prefix=/usr  --bindir=/bin \             
        --docdir=/usr/share/doc/bash-4.3 \
        --without-bash-malloc            \
        --with-installed-readline

 make
 make test && make install   # see note 6

メモ:

  1. -rローカルミラーを使用してパッチを取得するには、ftpmirror.gnu.orgはリダイレクトを返しますが、これはディレクトリ全体をダウンロードするオプションでは機能しません。
  2. (隠れた帽子の場合)gpg便利なエラーコードを設定せず、検証に失敗しても大声で文句を言うことはありません。 (豊富な)出力で「BAD」文字列を見つけます。
  3. 現在、bash-4.3のパッチは25 27 30個で、そのうち25〜30個はCVE-2014-6271以降の問題を解決しています。この問題を解決するために、より多くのパッチが出てくるかもしれません!patch「潜在的に危険なファイル名を無視してください。/bash-4.3/patchlevel.h」などの警告が表示されることがあります。しなければならない無害な場合は、patchlevel.h予想されるパッチレベルの行が含まれていることを確認してください。#define PATCHLEVEL ...
  4. オプションはconfigureデフォルト値を変更します/usr/local/。これは、 make install が現在の設定を上書きする必要があることを意味します。bash
  5. --without-bash-mallocより速く、少し無駄な内部実装よりもlibc mallocを選択してください。これ可能ロード可能なbashモジュールを使用すると、非互換性が発生する可能性があるため、影響を受けますが、この機能を使用する人はあまりありません。このパッケージは次のように呼び出すことができます。バッシュ組み込み関数
  6. make test少し時間が必要です。これを行うにはルートである必要がありますmake install(ソフトウェアをルートにコンパイルすることは通常悪い習慣と見なされます)。
  7. UbuntuはDebianの派生物であり、Debianと同じ追加のパッチを使用できます。ここ例えば。これらのパッチには、使用する機能が含まれる場合があります。 Bashソースツリーにパッチを適用する場合は、debian/READMEこのファイルを参照してください。
  8. もう1つの問題は、まだ静的バスバイナリがある可能性があるため、それも再構築する必要があることです。これを行うには、./configure ...""ステップからやり直してください--enable-static-link

見てみることもでき、bashLinuxで最初から構築する。これオープンソースソフトウェアこのリストはパッチと現在の状態を確認するのに最適な場所です。

答え4

誰かがこれを行うためにPerlスクリプトを作成しました。

バッチスクリプト用のGithubリポジトリです。

$ git clone https://github.com/sillymoose/bashfix.git
$ cd bashfix
$ chmod +x bashfix.pl
$ ./bashfix.pl
Bash version 4.2.13 detected
Created working directory /tmp/PIRKRioxmM
Downloading Bash
Downloading Patches
Bash patched to level 52
Bash fully patched!
Configuring Bash ...
Building and testing Bash ...
Success. New Bash binary built!
Making backup copy of /usr/bin/bash at /usr/bin/bash.bak
Making backup copy of /bin/bash at /bin/bash.bak
Bash version 4.2.52 is now installed

関連情報