概要
先日より話題になっている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月中旬頃です。