coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

Pidora2014における Shellshock (Bash の脆弱性)について

2014-09-29 23:21:36 | Raspberry Pi
Shellshock と呼ばれているbashの脆弱性ですが、Pidora2014 では正式にはまだ修正が行われていません。

# /bin/bash --version
GNU bash, version 4.2.47(1)-release (armv6hl-koji-linux-gnu)
.......
# date;yum update bash
Mon Sep 29 20:46:47 JST 2014
Loaded plugins: langpacks, refresh-packagekit
No packages marked for update
#  env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' \
           bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
#

そこで、ソースからコンパイルすることにします。bash は、ほとんどのシステムで問題なくコンパイル可能ですので、pidora で問題ないでしょう。しかし、OpenSSLと異なり、最新バージョンの bash でも脆弱性は修正されていないため、パッチをあてる必要があります。bash のパッチは累積パッチが用意されておらず、各パッチが、patchlevel.h を毎回更新していく形式ですから、全てのパッチを001からあてていく必要があります。

4.2 のパッチ数が 50 、4.3 のパッチ数が 27 ですから、ここは bash-4.3 を /usr/local/bin にインストールするのが簡単そうです。

例えば、こんな感じです。

# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3.tar.gz
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3.tar.gz.sig
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-001
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-001.sig
,,,,,
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-027
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-027.sig

pidora では、gpg ではなくて gpg2 が標準ですから、パブリックキー 0x64EA74AB をインポートしてから、以下のようにチェックできます。

# gpg2 --verify bash-4.3.tar.gz.sig
gpg: Signature made Tue Feb 25 23:36:04 2014 JST using DSA key ID 64EA74AB
gpg: Good signature from "Chet Ramey <chet@cwru.edu>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7C01 35FB 088A AF6C 66C6 50B9 BB58 69F0 64EA 74AB
#


同様に27個のパッチを入手してチェックします。

用意できたら、コンパイルしてみます。

# tar xvf bash-4.3.tar.gz
# cd bash-4.3
# patch -p0 <../bash43-001
-bash: patch: command not found

となってしまいました。patch をインストールします。

# yum install patch
......

準備ができましたのでパッチをあてます。

# patch -p0 <../bash43-001
Ignoring potentially dangerous file name ../bash-4.3/test.c
patching file test.c
Ignoring potentially dangerous file name ../bash-4.3/patchlevel.h
patching file patchlevel.h

# grep '#define PATCHLEVEL' patchlevel.h
#define PATCHLEVEL 1

# patch -p0 <../bash43-002
......
# patch -p0 <../bash43-027

# grep '#define PATCHLEVEL' patchlevel.h
#define PATCHLEVEL 27

# ./configure
.....
# make (約16分)
....
# make install 2>&1 |tee Install.log
...
# which bash
/usr/local/bin/bash
# bash --version
GNU bash, version 4.3.27(1)-release (armv6l-unknown-linux-gnueabihf)
..............
#


先ほどのテストを行ってみます。

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' \
bash -c "echo test"

test
#

脆弱性は解消できました。インターネットに直接接続するような場合は、/bin/bash を待避して、作成した/usr/local/bin/bash をコピーする必要があります。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Apache httpd と Komodo Edit

2014-09-17 21:23:47 | Raspberry Pi
Webサーバ上でいろいろテストを行う必要があったので、Pidoraで Apache の httpd を起動することにしました。Raspberry Pi なので、もっと軽いWebサーバもありますが、テストしたい内容が httpd を使って行うものなのでこうしています。

標準では入っていないのでインストールします。

# yum install httpd 

====================================================================
 Package           Arch          Version             Repository            Size
====================================================================
Installing:
 httpd             armv6hl       2.4.9-2.fc20        pidora-updates       1.1 M
Installing for dependencies:
 apr               armv6hl       1.5.1-1.fc20        pidora-updates        88 k
 apr-util          armv6hl       1.5.3-1.fc20        pidora-updates        79 k
 httpd-tools       armv6hl       2.4.9-2.fc20        pidora-updates        77 k

Transaction Summary
====================================================================
Install  1 Package (+3 Dependent packages)

#
# systemctil -l status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
   Active: inactive (dead)

# chkconfig httpd
Note: Forwarding request to 'systemctl is-enabled httpd.service'.
disabled
#

ブート時に起動できるようにします。

# systemctl enable httpd.service
ln -s '/usr/lib/systemd/system/httpd.service'
'/etc/systemd/system/multi-user.target.wants/httpd.service'
#
# systemctl -l status httpd.service
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: inactive (dead)

#

enable になりましたが、reboot していないのでまだ httpd は動いていません。

# rpm -qa |grep httpd
....
httpd-2.4.9-2.fc20.armv6hl
# rpm -ql httpd-2.4.9-2.fc20
/etc/httpd
.....
/usr/lib/httpd/modules
.....
/var/www
/var/www/cgi-bin
/var/www/html
#

ですから、設定ファイルは /etc/httpd/conf/httpd.conf です。

httpd を起動します。

# systemctl start httpd.service
# ps -ef |grep httpd
root 1333 1 9 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1334 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1335 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1336 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1337 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1338 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 1340 548 0 14:47 pts/0 00:00:00 grep --color=auto httpd
#

ここで一人しか使っていないので、プロセス数を少なくします。/etc/httpd/conf.d/mpm.conf を作成して、次のようにしました。

# cat mpm.conf
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 2
</IfModule>
#
# systemctl stop httpd.service
# systemctl start httpd.service
#

これで準備ができました。標準ではWebページのトップのディレクトリは、
/var/www/html
ですが、ユーザ espiya のホームディレクトリにテストというディレクトを作成して、そちらをリンクします。

$ cd
$ mkdir test
$ su
# ln -s /home/espiya/test /var/www/html/test

標準では /home/espiya に httpd からのアクセス権がありませんので許可します。

# ls -ld /home/espiya
drwx------ ................................
# chmod 0755 /home/espiya
#

これで、

http://Raspberry Pi のIPアドレス/test/

として参照出来るようになります。

HTML のファイルを作成する場合、Pidora 上のエディタを使って作業してもよいのですが、やはり Windows 上のエディタの方が何かと便利です。今のところ使っているのは、Komodo Edit です。Komodo Edit は、リモートファイルをオープンする機能が付いているので、Pidora上のファイルをあたかもWindows上のファイルのように扱えるのが気に入っています。

詳しい解説は例えば、
RASPBERRY LIFE
に書かれていますが、そこで書かれているFTPを使う方法だとFTPサーバをインストールしなければいけないので、ここでは標準で利用できる OpenSSH を利用することにします。

設定は、Komodo Edit を実行して、メニューバーから、
[Edit] -> [Preferences]
で、Preferences ウィンドウを開き、左側の[Servers]というところをクリックします。設定は、

Server type : SFTP
Name : pidora (適当な名前)
Hostname : Raspberry Pi のIPアドレス
Port : 22
Username : espiya (適当なユーザ名)
Password : 空白ならKomodoを起動すると最初の一回だけ聞いてきます。
Default path : 該当ディレクトリをフルパスで指定します。

記入が終わったたら、[Add] をクリックして、[OK]をクリックします。

テストは、メニューバーの [File] -> [Open] -> [Remote File...] で、

Open Filesとうウィンドウが表示されます。[Server]の右側をクリックすると、先ほどの Name で指定した名前が表示されます。後はファイルを選択して、
[Open]をクリックすれば、ファイルを開けます。このファイルの内容を修正して、保存すると、自動的に Pidora 側のファイルが更新されます。日本語コードはUTF-8がお勧めです。予めPidora 側で小さな HTML5 のファイルをひな形として作っておいて、コピーして使うようにしています。

設定が間違ってエラーになってしまった場合は、設定を変更してから一度Komodoを終了してもう一度起動し直すのが無難です。

HTML5なら表示もできます。メニューバーの地球儀の形のアイコンをクリックするとウィンドウが分割されて下側にブラウザが開きます。Pidoraを使っているので、この機能を使わずに外部のブラウザで確認するのがよさそうです。

このように Komodo Edit は作成したプログラムの実行もできるのですが、Pidoraの場合は、別に ssh でログインして確かめた方が何かと便利だと思います。

この環境で HTML5 ファイルを作成するのはとても便利で、WindowsとPidoraをうまく使い分けて行うテストは、coLinux の時と同様に快適です。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする