phpMyAdmin 3.5.8.1とmcrypt拡張

情報統轄本部から、次のような内容のメールが届いた。

[検知日時]
・2013/1/21  17:29:19

phpMyAdmin の脆弱性を狙った攻撃を検知いたしました。

・送信元: 184.154.22.68

[ 分析結果 ]
SOC から調査いたしましたが、攻撃の対象となったホストで利用されている
phpMyAdminのバージョンを確認することができませんでした。脆弱なバージョン
のphpMyAdminをご利用の場合、攻撃が成功している可能性が考えられますため、
本イベントを Critical といたします。

[ 想定される脅威 ]
phpMyAdmin には複数の脆弱性が存在し、特別な HTTP リクエストにより、任意
のPHP コードが実行される可能性があります。

要するに、phpMyAdminを最新版にしなさい、と、言うことらしい。

ちゃんと、最新版にしているもーん。

で、今回も、最新版にしました。

それはそれとして、いつも気になるのが、Mac OS Xの場合、PHPにmcryptが含まれていない。
ので、phpMyAdminを使うたびに、

mcrypt 拡張がありません。PHP の設定をチェックしてみてください。

と、怒られてしまう、こと。

対応方法としては、MacPortsでPHPを導入、/etc/apache2/httpd.confに

LoadModule php5_module /opt/local/apache2/modules/libphp5.so

という記述を入れてしまうこと。

ただし、こうすると、phpが2カ所に存在ししまい、どのバージョンを使っているか、わからなくなることもある。pathの通し方しだい。

# /usr/bin/php -v
PHP 5.3.15 with Suhosin-Patch (cli) (built: Aug 24 2012 17:45:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
# /opt/local/bin/php -v
PHP 5.3.23 (cli) (built: Mar 17 2013 12:26:24)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
#

ところで、Mountain Lion 10.8のサーバーでは、サーバー関係の諸ファイルが
/Applications/Server.app/Contents/ServerRoot/

にまとめられている。2カ所以上にファイルを置くと、「忘れ」たり、問題になりそう。
コマンドラインで使うときは5.3.23、サーバーは5.3.15なので、動きが微妙に違う、とか。
テストした結果と実際にWebサーバーで使った時が、微妙に異なる、とか。

で、PHPは/usr/bin/phpを使う、ということにして…
mcrypt.soは、最新版を使う…
場所は、

/opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so

にあるから、/usr/lib/php/extensions/no-debug-non-zts-20090626/にシンボリックリンクを作ってしまえっっっ

/etc/php.iniファイルには、

extension=mcrypt.so
を追加。そして、Apacheをリスタートしてみる。

/usr/sbin/apachectl restart

予想通り、phpMyAdminには警告が出なくなった。やったっっっっっ

2つよいこと、さてないものよ…

/opt/local/bin/php -vを実行すると、あるいは、pearを実行すると、

PHP Warning:  Module ‘mcrypt’ already loaded in Unknown on line 0
Warning: Module ‘mcrypt’ already loaded in Unknown on line 0

という警告が出るようになった…むむむむむむむむむっ

要するに、「extension=mcrypt.so」という宣言が重複してるのね。どこだ?

ようやく見つけたのが、

/opt/local/var/db/php5/mcrypt.ini

開いてみると…

; Do not edit this file; it is automatically generated by MacPorts.

と書いてある。書き換えるなって?

書き換えないなら、/etc/php.iniから「extension=mcrypt.so」を削除することになるが、そうなると、多分、Webサーバーを使う、つまり、phpMyAdminを使うと、また、警告が出るはずだ、な。

えぇぃっっっ、書き換えてしまえっっっっっ

extension=mcrypt.so

;extension=mcrypt.so
と、コメントにして、Apacheを再起動。
Webサーバーは無事に起動したし、phpMyAdminを使っても警告は出ない。
/opt/local/bin/php -vを実行しても、/usr/bin/php -vを実行しても、警告は出ない。

ふぅ


コメントを残す