[openpne-dev:146] >ALL regiter_globals = On 時の脆弱性情報到着

0 views
Skip to first unread message

■手嶋 守

unread,
Dec 11, 2007, 6:44:34 AM12/11/07
to openp...@ml.pne.jp
手嶋です。
mixi経由で脆弱性情報を頂きました。

小川さんに確認を取りましたが OpenPNEはregister_globals = On時の動作は保
証していないとのこと。

ただ、放置しておくのは問題なので
セットアップドキュメントなどでの対応は必要になるでしょう。

また、報告して頂いた方のアドバイスとして、Onだと動かないようにしちゃって
も良いのではないか?との事でした。

それも一理有りと思います。

報告内容は下記の通りです。MLログとしてシェアしておきます。


---------------------------------------------------------------------
「OpenPNE 2.10.1 の脆弱性について」

前提条件:
最近は少なくなってきてるとは思うけど
register_globals = on

再現方法:
1.てきとうな入力ふぉ~むに
 <script>alert('Hello,World!');</script>
 なかんじですくりぷとを描き込む
2.1の内容を表示しているぺ~じにのあどれすに
 &GLOBALS[SMARTY][force_compile]=1&GLOBALS[SMARTY][default_modifiers]=
 をつけてあくせすすると1のすくりぷとが起動する
3.1の内容を表示しているさいとのあどれすを誰かに教えてあげる
 ※2を実行していれば通常のあどれすでもすくりぷとの実行ができちゃいます

管理画面では2で付けたくえり付きのあどれすを管理権限のあるひとに踏んでも
らう必要があるからちょっと難易度が上がるけど,おんなじ方法で任意のすくり
ぷとの実行ができちゃいます

原因:
/webapp/init.inc L54-64

$GLOBALS['SMARTY'] = (array)$GLOBALS['SMARTY'] + array(
---- >8 ---- 中略 ---- >8 ----
'default_modifiers' => array('@t_escape'),
'error_reporting' => E_ALL ^ E_NOTICE,
);

ここで+演算子を使って配列を結合しているけど,+演算子では重複しているき
~を上書きしないため汚染された $GLOBALS['SMARTY'] が残っちゃいます

応急処置:
A.register_globals を off にする
B./var/webapp/init.inc を読み込む前に $GLOBALS['SMARTY'] を初期化する


-----------------------------------------------------------
手嶋 守 (tej...@tejimaya.com)
http://sns.openpne.jp/?m=pc&a=page_f_home&target_c_member_id=7

メッセンジャー(Skype) tejimamamoru
株式会社手嶋屋 http://www.tejimaya.com
OpenPNEプロジェクト http://www.openpne.jp
-----------------------------------------------------------

Reply all
Reply to author
Forward
0 new messages