24時間365日フルマネージドホスティングサービスのデイーネット

[技術ブログVol.16] REHL5とCentOS5のbash最新バージョンとその中身

bash_logo.png

概要

先日より話題になっているbashの脆弱性[Shell Shock]ですが、RHEL5とCentOS5では、最新バージョンにアップデートしてもbashのバージョンが違います。

本来なら、RHELとCentOSは互換性がある為、パッケージのバージョンは同じになるので、今回のアップデートでも同じバージョンになるはずです。
しかし、なぜか下記のように、最新状態にアップデートしてもバージョンが微妙に異なります。

RHEL5
bash-3.2-33.el5_11.4

CentOS5
bash-3.2-33.el5_10.4

ちなみにRHEL6とCentOS6では、同じバージョンになります。

これは、RHEL5とCentOS5のOS自体のバージョンのズレによるものと思われます。
2014年9月29日現在で、RHEL5の最新バージョンは「5.11」でCentOS5の最新バージョンは「5.10」です。

通常は、RHELがバージョンアップされると、CentOSも追随してバージョンアップしますが、RHEL5.11は9月16日にリリースされたばかりで、まだCentOS側が追い付いていない状態です。
この為、OS自体のメジャーバージョンは同じであるにもかかわらず、パッケージのバージョンが違う、という現象が発生しています。

個人的になんとなくスッキリしないので、適用されているパッチの中身に差が無いか確認してみました。

Change Logで確認

まずは簡単に変更履歴から確認してみます。
それぞれのOSで、bashのchangelogを見ると、どちらも同じパッチが適用されているようです。

rpm -q --changelog bash

redhat5の場合
- CVE-2014-7169 - bypass patch bug
- CVE-2014-7169 - proper 3.2 backport - courtesy of Florian Weimer
- CVE-2014-7169

CentOS5の場合
- CVE-2014-7169 - bypass patch bug
- CVE-2014-7169 - proper 3.2 backport - courtesy of Florian Weimer
- CVE-2014-7169

しかし、これだけでは不安なので、ソースを確認してみます。

ソースの確認

まずは、RHEL5のサーバを用意します。
今回は、AWS上でサーバを一時的に作成しました。

サーバが作成できたら、bashのSRPMをダウンロードします。

# yumdownloader --source bash
# ls
bash-3.2-33.el5_11.4.src.rpm
SRPMファイルの展開
# rpm -ivh bash-3.2-33.el5_11.4.src.rpm
# cd /usr/src/redhat/SPECS

展開すると、「/usr/src/redhat/」以下に各種ファイルが展開されます。
「/usr/src/redhat/SPECS」ディレクトリの「bash.spec」というSPECファイルがあるので、中身を見ると、

less bash.spec
---(抜粋)------------------------------------

# 1146321 - cve-2014-7169

Patch157: bash-4.2-cve-2014-7169-0.patch
Patch158: bash-4.2-cve-2014-7169-1.patch
Patch159: bash-4.2-cve-2014-7169-2.patch

となっており、今回の脆弱性に対して上記の3つのパッチが適用されたことが分かります。

これらのパッチファイルは、「/usr/src/redhat/SOURCES」ディレクトリに存在します。

CentOS5用のパッチファイルの用意

次に、CentOS5で適用されるパッチファイルを準備します。
今回は、上記と同じRHEL5のサーバ上で、ファイルを用意しようと思います。

まずは、CentOS5用のSRPMをダウンロードします。
今回は、CentOSのサイトからファイルをダウンロードします。

# wget http://vault.centos.org/5.10/updates/SRPMS/bash-3.2-33.el5_10.4.src.rpm
SRPMファイルの展開

このファイルをそのまま展開すると、先ほどと同じ「/usr/src/redhat/」に展開されてしまうので、
展開先を違う場所に指定するように、事前に設定しておきます。

展開先を指定するために、下記のような「.rpmmacros」という設定ファイルを用意します。

# cat .rpmmacros
%_topdir /usr/src/centos

この内容は、SRPMファイルの展開先を「/usr/src/centos」ディレクトリに指定する、という内容になります。

SRPMファイルと「.rpmmacros」ファイルは同じディレクトリにあるという前提で作業を進めます。

最初にRHELと同じように、SRPMファイルを展開します。

# rpm -ivh bash-3.2-33.el5_10.4.src.rpm

今回は、「/usr/src/centos」ディレクトリに展開されるので、そこにあるSPECファイルを見ます。

# cd /usr/src/centos/SPECS/
# less bash.spec
---(抜粋)------------------------------------

# 1146321 - cve-2014-7169

Patch157: bash-4.2-cve-2014-7169-0.patch
Patch158: bash-4.2-cve-2014-7169-1.patch
Patch159: bash-4.2-cve-2014-7169-2.patch

RHELと同じように、上記の3つのパッチファイルが適用されていることが分かります。
この時点で、恐らく同じ内容のパッチが適用されたということが推測されます。

これらのパッチファイルは、同じように「/usr/src/centos/SOURCES」ディレクトリ以下にあります。

確認

用意ができましたので、それぞれのバージョンのパッチファイルの中身を比較してみます。
見やすさの為に、CentOSのパッチファイルの名前を変えて、RHELと同じフォルダにコピーします。

# cd /usr/src/centos/SPECS/
# cp bash-4.2-cve-2014-7169-0.patch /usr/src/redhat/SOURCES/bash-4.2-cve-2014-7169-0.patch_centos
# cp bash-4.2-cve-2014-7169-1.patch /usr/src/redhat/SOURCES/bash-4.2-cve-2014-7169-1.patch_centos
# cp bash-4.2-cve-2014-7169-2.patch /usr/src/redhat/SOURCES/bash-4.2-cve-2014-7169-2.patch_centos

コピーできたら、RHELのパッチファイルの場所に移動します。

# cd /usr/src/redhat/SOURCES/

以下のようにRHEL用のパッチと、CeonOS用のパッチがあることを確認します。
ここで、それぞれのパッチの内容を比較していきます。

# ls -1 bash-4.2-cve-2014-7169*
bash-4.2-cve-2014-7169-0.patch
bash-4.2-cve-2014-7169-0.patch_centos
bash-4.2-cve-2014-7169-1.patch
bash-4.2-cve-2014-7169-1.patch_centos
bash-4.2-cve-2014-7169-2.patch
bash-4.2-cve-2014-7169-2.patch_centos

スペースやタブは比較対象に含めずに内容の比較をします。

# diff -BbwE bash-4.2-cve-2014-7169-0.patch bash-4.2-cve-2014-7169-0.patch_centos
# diff -BbwE bash-4.2-cve-2014-7169-1.patch bash-4.2-cve-2014-7169-1.patch_centos
# diff -BbwE bash-4.2-cve-2014-7169-2.patch bash-4.2-cve-2014-7169-2.patch_centos

いずれも結果の出力は何もなし。

上記の通り、差異としての出力がなく、全ての結果で差異がありませんでした。
ということで、各バージョンでパッチの内容に違いが無いことが分かりました。

結論

  • RHEL5とCentOS5では、bashのバージョンが違いますが、どちらも同じ最新のパッチが適用されています。
  • 6系バージョンでは、RHELとCentOSは、同じbashバージョンです。

慣れていると、RHEL5とCentOS5では、同じバージョンになると思ってしまいますが、正しくは

「バージョンが微妙に違うけど中身は一緒」

ですので、ご注意下さい。

技術ブログ中の人

次回の更新予定は、当初通り10月中旬頃です。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar