EOSなRHEL4/CentOS4で、GNU Bashの脆弱性対策

改定履歴

  • 2014/10/08 PM
        GNU Bash 3.0 Official Patch 22がリリースされていたので追記
  • 2014/09/30 PM
        初回投稿

だいぶ時間が経っていますが、GNU Bash の脆弱性 CVE-2014-6721 と CVE-2014-7169 のお話。

主要ディストリビューションのサポートが効いている子は、ほぼコマンドでアップデートすりゃ良いだけなので、そっちは割愛。
とりあえずここでは、延長サポートに契約はしていないけどいろんな事情で稼働している RHEL4 と、すでにサポートが終了している CentOS4 に絞ったお話。

ちなみにググれば出てきますが、一番簡単なのはおそらくOracle Linux 4の対策版と思われるSource RPMを拾ってきてリビルドする方法だと思います。
ここではそうではなく、RHLE4またはCentOS4のSource RPMを拾ってきて、GNU Bash Official Patchを適用する方法をあえて書いていく感じで。
この方法を実行したところですべての脆弱性に対応できるわけではありませんが、少なくとも一番大きいCVE-2014-6271と、CVE-2014-7169に関しては塞がるのかなと。

なお、いつものことですが、内容に関して何も保証することができませんし、利用した結果生じた損害については一切責任を負いません。
本記事の内容を利用する場合は、自己責任で行う必要がありますので、予めご了承ください。

 

#—– 検証環境 —–#

[shirase@bashchk4 ~]$ cat /etc/redhat-release
CentOS release 4.9 (Final)

[shirase@bashchk4 ~]$ uname -a
Linux test4sv 2.6.9-103.EL #1 Fri Dec 9 04:14:04 EST 2011 i686 i686 i386 GNU/Linux

[shirase@bashchk4 ~]$ bash --version
GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.

 

#—– 前提条件 —–#

  • wgetがインストールされていること
  • gcc、rpm-buildがインストールされていること
  • texinfo、bison、libtermcap-develがインストールされていること(bashの依存関係のため)

 

#—– 適用手順 —–#

  1. Source RPMを拾ってくる
    [shirase@bashchk4 ~]$ cd /tmp
    
    ## CentOS 4の場合
    [shirase@bashchk4 tmp]$ wget http://vault.centos.org/4.9/updates/SRPMS/bash-3.0-27.el4.src.rpm
    
    ## Red Hat Enterprise Linux 4の場合はこちらかな、と。
    [shirase@bashchk4 tmp]$ wget http://ftp.redhat.com/redhat/linux/updates/enterprise/4ES/en/os/SRPMS/bash-3.0-27.el4.src.rpm
    
    [root@bashchk4 tmp]$ ls -al
    合計 4412
    drwxrwxrwt   4 root    root       4096 9月 30日 23:35 .
    drwxr-xr-x  23 root    root       4096 9月 30日 23:18 ..
    drwxrwxrwt   2 root    root       4096 9月 30日 23:18 .ICE-unix
    drwxrwxrwt   2 root    root       4096 9月 30日 23:18 .font-unix
    -rw-rw-r--   1 shirase shirase 4480292 2月 18日  2011 bash-3.0-27.el4.src.rpm
    -rw-rw-r--   1 shirase shirase       0 9月 30日 23:32 echo
    
  2. bash-3.0-27.el4.src.rpmをインストールする
    [shirase@bashchk4 tmp]$ su -
    Password: 
    [root@bashchk4 ~]# cd /tmp
    [root@bashchk4 tmp]# rpm -ivh bash-3.0-27.el4.src.rpm 
    
    # 下記のような警告が出ますが、"/usr/src/redhat/SOURCES"配下に関連ファイルがあれば、インストールはできているかなと。
    #     warning: user mockbuild does not exist - using root
    #     warning: group mockbuild does not exist - using root
    
  3. GNU Bash 3.0 Official Patch 17、18、19を入手する
    [root@bashchk4 tmp]# cd /usr/src/redhat/
    
    [root@bashchk4 redhat]# ls -al
    合計 32
    drwxr-xr-x  7 root root 4096 9月 30日 23:36 .
    drwxr-xr-x  3 root root 4096 9月 30日 23:36 ..
    drwxr-xr-x  2 root root 4096 5月  8日  2012 BUILD
    drwxr-xr-x  8 root root 4096 9月 30日 23:36 RPMS
    drwxr-xr-x  2 root root 4096 9月 30日 23:38 SOURCES
    drwxr-xr-x  2 root root 4096 9月 30日 23:38 SPECS
    drwxr-xr-x  2 root root 4096 5月  8日  2012 SRPMS
    
    [root@bashchk4 redhat]# cd SOURCES
    
    [root@bashchk4 SOURCES]# wget http://ftp.gnu.org/gnu/bash/bash-3.0-patches/bash30-017
    [root@bashchk4 SOURCES]# wget http://ftp.gnu.org/gnu/bash/bash-3.0-patches/bash30-018
    [root@bashchk4 SOURCES]# wget http://ftp.gnu.org/gnu/bash/bash-3.0-patches/bash30-019
    
    [root@bashchk4 SOURCES]# ls -al
    ## 一部抜粋
    -rw-r--r--  1 root root    1506 10月 20日  2004 bash30-014
    -rw-r--r--  1 root root    1821 11月  1日  2004 bash30-015
    -rw-r--r--  1 root root    2794 11月 12日  2004 bash30-016
    -rw-r--r--  1 root root    3226 9月 24日 23:26 bash30-017
    -rw-r--r--  1 root root    1115 9月 27日 06:04 bash30-018
    -rw-r--r--  1 root root    6676 9月 28日 11:36 bash30-019
    -rw-r--r--  1 root root      24 2月 15日  2005 dot-bash_logout
    -rw-r--r--  1 root root     191 9月  9日  2004 dot-bash_profile
    -rw-r--r--  1 root root     124 9月  9日  2004 dot-bashrc
    
  4. specファイルを変更する(変更内容のみ)
    *** bash.spec.015       2011-01-10 21:59:23.000000000 +0900
    --- bash.spec   2014-09-30 23:40:41.000000000 +0900
    ***************
    *** 1,7 ****
      Version: 3.0
      Name: bash
      Summary: The GNU Bourne Again shell (bash) version %{version}.
    ! Release: 27%{?dist}
      Group: System Environment/Shells
      License: GPL
      Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{version}.tar.gz
    --- 1,7 ----
      Version: 3.0
      Name: bash
      Summary: The GNU Bourne Again shell (bash) version %{version}.
    ! Release: 27%{?dist}.4
      Group: System Environment/Shells
      License: GPL
      Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{version}.tar.gz
    ***************
    *** 26,31 ****
    --- 26,34 ----
      Patch14: bash30-014
      Patch15: bash30-015
      Patch16: bash30-016
    + Patch17: bash30-017
    + Patch18: bash30-018
    + Patch19: bash30-019
      # Other patches
      Patch100: bash-2.03-paths.patch
      Patch101: bash-2.02-security.patch
    ***************
    *** 107,113 ****
      %patch13 -p0 -b .013
      %patch14 -p0 -b .014
      %patch15 -p0 -b .015
    ! #%patch16 -p0 -b .016
    
      # Other patches
      %patch100 -p1 -b .paths
    --- 110,119 ----
      %patch13 -p0 -b .013
      %patch14 -p0 -b .014
      %patch15 -p0 -b .015
    ! %patch16 -p0 -b .016
    ! %patch17 -p0 -b .017
    ! %patch18 -p0 -b .018
    ! %patch19 -p0 -b .019
    
      # Other patches
      %patch100 -p1 -b .paths
    
  5. Source RPMとRPMをビルドする
    [root@bashchk4 SPECS]# cd /usr/src/redhat
    [root@bashchk4 redhat]# rpmbuild -ba SPECS/bash.spec
    
  6. できたRPMをインストールする
    [root@bashchk4 redhat]# cd SRPMS/i386
    [root@bashchk4 i386]# ls -al
    合計 1804
    drwxr-xr-x  2 root root    4096 9月 30日 23:45 .
    drwxr-xr-x  8 root root    4096 9月 30日 23:36 ..
    -rw-r--r--  1 root root 1831187 9月 30日 23:45 bash-3.0-27.4.i386.rpm
    
    [root@bashchk4 i386]# rpm -Uvh bash-3.0-27.4.i386.rpm
    
    [root@bashchk4 i386]# /sbin/ldconfig 
    
  7. 確認
    [shirase@bashchk4 ~]$ bash --version
    GNU bash, version 3.00.19(1)-release (i686-redhat-linux-gnu)
    Copyright (C) 2004 Free Software Foundation, Inc.
    

#—– 比較検証 —–#

こちらの bashcheck スクリプトを使用します。

  • パッチ適用前
    bashcheck結果 - パッチ適用前
    bashcheck結果 – パッチ適用前
  • パッチ適用後
    bashcheck結果 - パッチ適用後
    bashcheck結果 – パッチ適用後

 

とまぁ、こんな感じ。


2014/10/08 PM 追記

居なかった間にGNU Bash 3.0 Official Patch 22までリリースされていたので、その分の結果を追記します。
なお適用方法については、上記の手順にpatch20~22の取得、適用手順を追加したものですので、省略します。

  1. specファイル変更 (orig -> Patch 22)
    *** bash.spec.orig      2011-01-10 21:59:23.000000000 +0900
    --- bash.spec   2014-10-08 06:51:25.000000000 +0900
    ***************
    *** 1,7 ****
      Version: 3.0
      Name: bash
      Summary: The GNU Bourne Again shell (bash) version %{version}.
    ! Release: 27%{?dist}
      Group: System Environment/Shells
      License: GPL
      Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{version}.tar.gz
    --- 1,7 ----
      Version: 3.0
      Name: bash
      Summary: The GNU Bourne Again shell (bash) version %{version}.
    ! Release: 27%{?dist}.7
      Group: System Environment/Shells
      License: GPL
      Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{version}.tar.gz
    ***************
    *** 26,31 ****
    --- 26,37 ----
      Patch14: bash30-014
      Patch15: bash30-015
      Patch16: bash30-016
    + Patch17: bash30-017
    + Patch18: bash30-018
    + Patch19: bash30-019
    + Patch20: bash30-020
    + Patch21: bash30-021
    + Patch22: bash30-022
      # Other patches
      Patch100: bash-2.03-paths.patch
      Patch101: bash-2.02-security.patch
    ***************
    *** 107,113 ****
      %patch13 -p0 -b .013
      %patch14 -p0 -b .014
      %patch15 -p0 -b .015
    ! #%patch16 -p0 -b .016
    
      # Other patches
      %patch100 -p1 -b .paths
    --- 113,125 ----
      %patch13 -p0 -b .013
      %patch14 -p0 -b .014
      %patch15 -p0 -b .015
    ! %patch16 -p0 -b .016
    ! %patch17 -p0 -b .017
    ! %patch18 -p0 -b .018
    ! %patch19 -p0 -b .019
    ! %patch20 -p0 -b .020
    ! %patch21 -p0 -b .021
    ! %patch22 -p0 -b .022
    
      # Other patches
      %patch100 -p1 -b .paths
    
  2. Source RPM、RPMビルド、インストール実施後、比較検証
    • GNU Bash 3.0 Official Patch 19まで適用後
      bashcheck結果 - Patch19まで適用後
      bashcheck結果 – Patch19まで適用後
    • GNU Bash 3.0 Official Patch 22まで適用後(bashcheckは実施時最新版)
      bashcheck結果 - Patch22まで適用後
      bashcheck結果 – Patch22まで適用後

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中