情報技術の四方山話

AI、IoT、ヤマハルータ、VPN、無線LAN、Linux、クラウド、仮想サーバと情報セキュリティのよもやま話

redhat発表によるbashの環境変数経由の脆弱性の簡単な確認方法の実際

2014-09-26 11:31:51 | 情報セキュリティ
匠技術研究所
redhat発表によるbashの環境変数経由の脆弱性の簡単な確認方法


こんにちは。いつもアクセスありがとうございます。匠技術研究所の谷山 亮治です。
今日はLinux等で広く使われているbashのシェルプログラム実行時の脆弱性の速報です。

Linux等UNIXおよびその影響のある基本ソフト上の「shell」の一つである「bash」はプログラム(=コマンド)を実行する環境として広く使われています。プログラムは、実行時に必要な情報を「環境変数」として受け取る機能を備えています。

一般的に各shellは複数のプログラムを連携して実行する為に「シェルプログラム」を書くことができ、そのプログラムを実行することができます。シェルプログラムも、それ以外のプログラムも「プログラム」としての取り扱いに違いはなく、実行時に必要な情報を「環境変数」として受け取る機能があります。

今回のbashの脆弱性は、bashで作られたプログラムを実行する際のこの機能を利用して、環境変数に悪意の情報を仕込み、実行することができるというもので、最悪の場合システムを乗っ取ることもできる可能性があります。

では、どうやって外部から基本ソフト上のbashを実行するのでしょうか。それは、外部からのアクセスを許可した、様々な「サーバープログラム」を経由します。代表的にはWebサーバー、ファイルサーバー、sshサーバー等、様々なサーバープログラムがありますが、その中で使われているかもしれないbashプログラムを経由して実行します。

緊急の対処としては、以下の対応が必要です。

■サーバーでのbashプログラムの更新あるいは実行停止と他言語プログラムへの差し替え
基本ソフト、サーバーに関係なくbashを使うことができるサーバーは、このbashの脆弱性を改修した更新bashに変更します。

Webサーバー上でいわゆるcgiとしてbashプログラムを使っている場合は、いったんそのプログラムの利用を停止し、perlなど別のプログラム言語に書き直したものに差し替える必要があります。書き換える際、類似の脆弱性が予想されるshellプログラムは避けるべきです。

■サーバー管理者!必見!RedHatの情報提供(英文)
Bash specially-crafted environment variables code injection attack

記事中のテストコードを弊社サーバーで実行してみました。尚、お客様用サーバーのbashはすべて更新済みです。

$ uname -a
Linux okavms 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
$

$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

環境変数"x"に仕込まれた、echoコマンドが実行され、
"vulnerable"
が表示されました。ここに任意のコードを組み込むことができます。

行の最後の、bashが実行され
"this is a test"
が表示されます。これは期待の動作です。

このbashをアップデートして、実行します。
# yum update bash
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.tsukuba.wide.ad.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package bash.x86_64 0:4.1.2-15.el6_4 will be updated
---> Package bash.x86_64 0:4.1.2-15.el6_5.1 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
bash x86_64 4.1.2-15.el6_5.1 updates 905 k

Transaction Summary
================================================================================
Upgrade 1 Package(s)

Total download size: 905 k
Is this ok [y/N]: y
Downloading Packages:
bash-4.1.2-15.el6_5.1.x86_64.rpm | 905 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : bash-4.1.2-15.el6_5.1.x86_64 1/2
Cleanup : bash-4.1.2-15.el6_4.x86_64 2/2
Verifying : bash-4.1.2-15.el6_5.1.x86_64 1/2
Verifying : bash-4.1.2-15.el6_4.x86_64 2/2

Updated:
bash.x86_64 0:4.1.2-15.el6_5.1

Complete!
#

$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

(*)マイナーアップデートのためか、バージョン表示は変わりません。
確認コードを実行します。


$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
$

環境変数"x"に埋め込まれた機能を無視した旨のWaringと"x"の実行エラーが表示され、"x"に埋め込まれたコードは実行されず、その後の"test"行が表示されました。期待する動きです。

当面、bashの改修は続くと思われるので、常に最新バージョンに維持する必要があります。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 事務所のISDN電話回線をひか... | トップ | Linux/CentOS6/yum updateで... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

情報セキュリティ」カテゴリの最新記事