RHEL4/CentOS4向けのbash RPM(10/07 12:00修正)


bash脆弱性について、いろいろ状況が変わりつつあるので書き直し。

RHEL4/CentOS4サーバが生き残っている場合に、簡単に対処する方法があるのか探してみる。

まず、RedHatで情報を探すと、RHEL4については、延長サポート内では以下の脆弱性が該当するようだ。
RHSA-2014:1294-1 Critical: bash security update(CVE-2014-6271)
RHSA-2014:1311-1 Important: bash security update(CVE-2014-7169)

両方のページから情報を見ていくと、以下のページに着く。
Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169)

さらに、検証や、パッチを提供できない場合に状況を緩和するための方策が掲載されている、以下のページがある。
Mitigating the shellshock vulnerability (CVE-2014-6271 and CVE-2014-7169)

で・・・9/27 7時頃に「Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169)」を始め、各ページの情報が更新されていた。
Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169)」の「Products Affected:」の「Red Hat Enterprise Linux 4」欄が「bash-3.0-27.el4.4」に書き換わった。
Important: bash security update」の「Updated packages」が「bash-3.0-27.el4.4.src.rpm」に書き換わった。

というわけで、「bash-3.0-27.el4.4」が出たようだ。

RedHatの延長サポートが提供するSource RPMを入手するのは面倒なので、Oracle LinuxのSource RPMを確認。
https://oss.oracle.com/el4/SRPMS-updates/を見ると、「bash-3.0-27.0.3.el4.src.rpm」が登場している。
Changelogを確認すると、以下の様になっている。

* Fri Sep 26 2014 Todd Vierling <todd.vierling@oracle.com> - 3.0-27.0.3
- Rework env function definition for safety (Florian Weimer) [CVE-2014-7169]
* Thu Sep 25 2014 Todd Vierling <todd.vierling@oracle.com> - 3.0-27.0.2
- Preliminary fix for CVE-2014-7169
* Wed Sep 24 2014 Guangyu Sun <guangyu.sun@oracle.com> - 3.0-27.0.1
- Check for fishy environment (Ondrej Oprala) [CVE-2014-6271]
Resolves: #1141644

RHEL4の「bash-3.0-27.el4.4」での修正内容が分からないので、同等品なのかが判断できないが、不足していたCVE-2014-7169対策の一環である、ということは分かった。

とりあえず、https://oss.oracle.com/el4/SRPMS-updates/bash-3.0-27.0.3.el4.src.rpmを入手して、「rpmbuild –rebuild bash-3.0-27.0.3.el4.src.rpm」でバイナリRPMを作って、インストール・・・・

という風にやってたのですが、しばらく修正が続きそうな感じもあります。
なので、これを機会にOracle Linux 4のPublic yum repositoryを使用してしまおう、という考えもあると思います。
その場合は、「RHEL4/CentOS4をOracle Linux4に!」という別記事の方を参照してください。
この切り替えを行ってしまうと、Oracle Linuxに乗り換える、という話になるのですが、Oracle Linux 4は、それ以降のバージョンと違って、ほとんど差がないですし、元のサポートが切れたRHEL/CentOSの方に戻る、ってことも無いでしょうから、あまり問題はないのではないでしょうか?


2014/09/29 11:00追記
https://github.com/hannob/bashcheckという脆弱性チェックスクリプト

bash-3.0-27.0.3.el4での実行結果は以下の様になった。

./bashcheck
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
Variable function parser inactive, likely safe from unknown parser bugs
#

ちなみに、bash-3.0-27.0.2.el4だと以下だった。

./bashcheck
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
Not vulnerable to CVE-2014-6271 (original shellshock)
Not vulnerable to CVE-2014-7169 (taviso bug)
./bashcheck: line 18: 3528 Segmentation fault    bash -c "true $(printf '<<EOF %.0s' {1..79})" 2>/dev/null
Vulnerable to CVE-2014-7186 (redir_stack bug)
Test for CVE-2014-7187 not reliable without address sanitizer
Variable function parser inactive, likely safe from unknown parser bugs
#

2014/10/07 12:00追記

上記のbashcheckがバージョンアップし、下記の脆弱性に関するチェック項目が増えました。
CVE-2014-6278

bash-3.0-27.0.3.el4での実行結果は以下の様になった。

# ./bashcheck
Testing /bin/bash ...
GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)
Variable function parser pre/suffixed [(), redhat], 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
Found non-exploitable CVE-2014-6277 (lcamtuf bug #1)
Not vulnerable to CVE-2014-6278 (lcamtuf bug #2)
#

CVE-2014-6277の判定は以下で行われていた。

bash -c "f(){ x(){ _;};x(){ _;}<<a;}"&#91;/code&#93;
で、これを直接実行すると、以下の結果になる。
&#91;shell&#93;# bash -c "f(){ x(){ _;};x(){ _;}<<a;}"
セグメンテーション違反です
# echo $?
139
#&#91;/shell&#93;
正常終了できてないから問題あり、ということですね。
<hr />
<strong>以下は古い情報です。</strong>
アーカイブとして残しておきます。
<hr />
昨日から、bashの脆弱性に関して騒がしい。
RHEL4/CentOS4サーバが生き残ってる場合、簡単に対処できる方法があるのか探してみる。
まず公式情報を確認。
・<a href="https://rhn.redhat.com/errata/RHSA-2014-1294.html">RHSA-2014:1294-1 Critical: bash security update</a>(CVE-2014-6271)
ここに、「Red Hat Enterprise Linux ELS (v. 4)」「bash-3.0-27.el4.2.src.rpm」があるので、RHEL4の延長サポートであれば修正が出ているようだ。
ただ、延長サポート中のRHEL Souce RPMを探すのはめんどいので、<a href="http://blog.osakana.net/archives/3588">前回</a>と同じく、Oracle LinuxのSource RPM配布場所「<a href="https://oss.oracle.com/el4/SRPMS-updates/">https://oss.oracle.com/el4/SRPMS-updates/</a>」をチェックしてみる。
とりあえず、2014年の更新分としては、以下があった。
<del datetime="2014-09-26T05:45:06+00:00">2014/09/24 <a href="https://oss.oracle.com/el4/SRPMS-updates/bash-3.0-27.0.1.el4.src.rpm">bash-3.0-27.0.1.el4.src.rpm</a></del>
2014/09/25 <a href="https://oss.oracle.com/el4/SRPMS-updates/bash-3.0-27.0.2.el4.src.rpm">bash-3.0-27.0.2.el4.src.rpm</a>
2014/06/10 <a href="https://oss.oracle.com/el4/SRPMS-updates/openssl-0.9.7a-43.18.0.2.el4.src.rpm">openssl-0.9.7a-43.18.0.2.el4.src.rpm</a>
2014/09/16 <a href="https://oss.oracle.com/el4/SRPMS-updates/tzdata-2014g-1.0.1.el4.src.rpm">tzdata-2014g-1.0.1.el4.src.rpm</a>
<del datetime="2014-09-26T00:29:24+00:00">bash-3.0-27.0.1.el4.src.rpmなら修正済みのバージョンなんですかね?</del>
ということで・・・「rpmbuild --rebuild bash-3.0-27.0.1.el4.src.rpm」という感じでRPMパッケージを作成してインストールっと。
下記に追加したように修正が完全ではないようでした。
注意: 上記のURLは、source RPMです。コンパイル済みのバイナリRPMは、各自が作成してください。
<hr />
2014/09/26 9:30追記
bash-3.0-27.0.1.el4.src.rpmの修正内容を確認すると、下記の様に書かれている。
[code]* Wed Sep 24 2014 Guangyu Sun &lt;guangyu.sun@oracle.com&gt; - 3.0-27.0.1
- Check for fishy environment (Ondrej Oprala)
Resolves: #1141644

Oracleの#1141644とは何かを探すと「Oracle alert ELSA-2014-1293 (bash)」で、これは、「RedHat Critical: bash security update RHSA-2014-1293 / CVE-2014-6271」に該当する。

で、「Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169)」を確認すると、「影響を受けるバージョン」として「Red Hat Enterprise Linux 4 bash-3.0-27.el4.2」が書かれている。

つうわけで、Oracle Linuxのbash 3.0-27.0.1はCVE-2014-7169で、RHELのbash 3.0-27.el4.2はCVE-2014-7169+CVE-2014-6271ということで、パッチが足りていない。
なおかつ、RHELのbash 3.0-27.el4.2、であっても完全な修正は行われていないので、完全な修正のためには次のバージョンを待つ必要がある、と。

じゃぁ、一時的に対処する方法はあるのか?と「Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271, CVE-2014-7169)」に記載されているworkaroundを確認
・「mod_security」を使用
・「iptablesのstringモジュール」を使用

どっちも、RHEL4には存在しないじゃないですかー


2014/09/26 13:30+18:30修正

Oracle public yum の方にbash-3.0-27.0.2.el4.src.rpmが登場
2014/09/25 bash-3.0-27.0.2.el4.src.rpm

といっても、まだ、脆弱性が残ってるバージョンになりますけどね。
とりあえず、「env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”」で確認できる脆弱性については、コレで解決してますね。
ただ、bashの脆弱性は続々発見されているので、どこまでが該当してて、対応しなければならないのかよく分からない・・・


2014/09/26 17:00おまけ

iptablesのstringモジュールって、iptables-1.3.8を持ってくれば使えるのかな?と思って、足りないヘッダファイルをRHEL5から持ってきて、RHEL4環境に入れてみたんですが、RHEL4 kernel側が対応していないので無意味でした。


2014/09/26 20:00追記

RHEL4/CentOS4をOracle Linux4に!」という別記事も書いてたりします。

上記で上げたOracle LinuxのSource RPMを元にしているYUM レポジトリを使用する、という話です。
まぁ、RHEL/CentOSではなく、Oracle Linuxに乗り換える、という話ではありますが、Oracle Linux 4は、それ以降のバージョンと違って、ほとんど差がないですから、気軽に乗り換えることができます。

  1. こんにちは。
    有益な情報、ありがとうございます。

    ひとつ質問なのですが、2014/09/26 13:30のPOSTで、

    > といっても、まだ、脆弱性が残ってるバージョンになりますけどね。

    とありますが、このソースはどこになりますでしょうか?
    教えてくださいませ。

    • あ・・・すみません、不正確な表記でした。
      「env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”」の問題については解消してるけど、それ以外にも発見されてるbashの問題についてが、どうなってるのか分からない。
      というところです。

      • あー、そうでしたか。
        とりあえず、6271,7169はOKということですね。
        ありがとうございました。m(__)m

  2. bash-3.0-27.0.2.el4.src.rpm てのがでましたね。完全にバグフィック
    されたのかな・・・

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Trackbacks and Pingbacks: