phpMyAdminにおける任意スクリプト実行可能な脆弱性の検証 - ockeghem(徳丸浩)の日記(情報元のブックマーク数)
phpMyAdminですか、、、、広く使われている場合適用まで時間がかかるのは大変ですよね・・・
phpMyAdmin(3.3.10.2未満、3.4.3.1未満)には、リモートから任意のスクリプトが実行可能な脆弱性があります。このエントリでは、この脆弱性が発生するメカニズムと対策について報告します。
phpMyAdminにおける任意スクリプト実行可能な脆弱性の検証 - ockeghem's blog
うひゃぁ・・・
概要
phpMyAdminには下記の2種類の脆弱性の組み合わせにより、リモートから任意のスクリプトを実行させられる脆弱性があります。
- CVE-2011-2505
- CVE-2011-2506
該当するバージョンは以下の通りです。
- phpMyAdmin バージョン3.3.10.2未満
- phpMyAdmin バージョン3.4.3.1未満
影響を受ける条件は、上記バージョンのphpMyAdminを使用していることに加えて、以下をすべて満たす場合です。
phpMyAdminにおける任意スクリプト実行可能な脆弱性の検証 - ockeghem's blog
- setup/index.phpとsetup/config.phpを外部から実行できる
- phpMyAdminのconfigディレクトリが存在し、PHPスクリプトから書き込みができる
- config/config.inc.phpを外部から実行できる
ふむふむ。
調べた結果はご覧の通りですが、私は、設定ファイルをPHPのスクリプトとして生成するというphpMyAdminの設計がそもそも危なっかしいと思います。設定ファイルはテキスト形式にしておけば、スクリプトインジェクションの可能性もありません。おそらく、導入を簡単にするための工夫なのだと思いますが、よくない設計だと思います。
phpMyAdminにおける任意スクリプト実行可能な脆弱性の検証 - ockeghem's blog
また、parse_strの使用も問題です。第2引数をとらないparse_strは、常に変数汚染の危険性が伴いますが、phpMyAdmin3.4.3.1のソースを調べたところ、parse_strを使っている箇所がまだ1つ残っていました(libraries/auth/swekey/swekey.auth.lib.php 146行目)。脆弱性となるかどうかは調べていませんが、潜在的に危険であると言えます。
しかし、私が一番問題だと思うのは、phpMyAdminを危険な状態で設置しているサイトが少なからずあることだと思います。phpMyAdmin自体に認証機能があるので油断している利用者がいるのかもしれませんが、それは危険です。phpMyAdminはインターネットに公開して使用されることを想定した設計になっていないように思います。phpMyAdminはインターネット越しに使わないのが一番よいと思いますが、レンタルサーバーなどでやむを得ずインターネット越しにphpMyAdminを利用する場合は、IPアドレス制限やHTTP認証などを併用するべきです。