TITLE:
Xoops "xoopsConfig[language]" Local File Inclusion Vulnerability
SECUNIA ADVISORY ID:
SA17573
VERIFY ADVISORY:
http://secunia.com/advisories/17573/
CRITICAL:
Moderately critical
IMPACT:
Exposure of sensitive information
WHERE:
>From remote
SOFTWARE:
Xoops 2.x
http://secunia.com/product/327/
DESCRIPTION:
rgod has discovered a vulnerability in Xoops, which can be exploited
by malicious people to disclose sensitive information.
Secuniaに出たレポートですが、register_globals が on の場合のみのレポートなので、ほぼ問題ありません。register_globals は必ず off です。
register_globals on でなければ動かないモジュールは利用するべきではありません。
それと、XOOPS 2.x となっていますが、これは明らかな間違いです。
JP版であれば、コアのclass内にWYSIWYGエディタを配置するようなことはしていませんし、本家版でも 2.0.x であれば、関係のない話です。
PHP5.0.5では参照の仕様が大きく変わり、参照で渡される引数に変数以外を送ると
Fatal error: Only variables can be passed by reference
というエラーで止まります。
ただ、普通のオブジェクトでもこのFatalエラーが出るようで、むしろバグと呼ぶべきものです。
myblocksadmin や mymenu だと、このFatalエラーに引っかかるパターンがあったため、とりあえずそれらのコードを修正しました。
まずは、その大元であるblocksadminモジュールから更新しましたが、順次、他のモジュールも対応していきます。
基本的には、GTicketクラスの利用方法が問題になっていますので、単にmyblocksadminやmymenuを差し替えただけではうまくいかないかもしれません。もう少々お待ちください。
XOOPSモジュールを開発していて思ったことは、PHPで書かれたWebアプリケーションにはあまりにもセキュリティホールが多すぎるということです。
今までは、それらのセキュリティホールを逐一指摘していましたが、それだとあまりに効率が悪すぎます。穴を開けてしまう原因は、Webアプリケーションの正しい作り方を知らないことが最大の理由ですが、あいにく攻撃方法について詳しく記述した良書がなかったので、自分で書いてみました。
私自身の知識と経験をすべて詰め込んだ、まさに「セキュアなWebアプリケーションを書くため」の本です。自分で言うのも何ですが、PHPプログラマー必携の本だろうと確信しています。このレベルでセキュリティについて書かれたPHP関連本は他にないでしょう。
現実に、書店に行くと、穴だらけのサンプルスクリプトを堂々と載せている「PHP入門書」が数多く存在しています。それらで入門しても良いのですが、そうやって作ったアプリケーションを公開する前に、必ずWebアプリケーションならではのセキュリティ問題について学んでください。初心者こそ読むべき本で、そのために、出版社と交渉して、値段を税込み2,000円以内に抑えるようお願いしたほどです。
以下書籍データ:
「PHPサイバーテロの技法」
GIJOE著
ソシム社 http://www.socym.co.jp/
予価1,800円(税別)
2005/11/25 発売予定
myblocksadminは、モジュール開発者が、そのモジュールに専用のブロック/グループ管理をつけるためのパッケージです。
このたび、XOOPS2.2対応コードを追加しました。
モジュール開発者の方は、最新版のmyblocksadminを利用するだけで、少なくともその部分については、2.2対応モジュールだと言えることになります。
拙作モジュールでは、とりあえずxhldにだけ反映させています。
現時点では、2.2対応コードは不十分であり以下がTODOです。
- 2.2の時だけ、ブロックオプション保存処理をエスケープする
- myblocksadmin内の「編集」
- myblocksadmin内の「削除」
- カスタムブロック処理