PEAK XOOPS - FCKEditor in englishin japanese

Archive | RSS |
XOOPS
XOOPS : FCKEditor
Poster : GIJOE on 2006-12-14 12:49:55 (19178 reads)

in englishin japanese
pico に載せるwysiwygエディタを検討しているのですが、とりあえずcommon/spawは実装しました。

その次の候補として、高機能という評判のFCKEditor(2.3.2)を試してみました。
ダウンロードしてみて驚いたのは、フロントエンドの素晴らしさに比べて、あまりにもバックエンド(といってもPHPだけですが)の出来が甘いことです。

アップロード処理がデフォルトでついていて、そのためのコネクタが汎用的に各種用意されている、というあたりに不安を覚えつつ、phpコネクタのソースコードを追ってみたところ……

簡単に見つかりました。容易に拡張子.phpがアップロード出来てしまいます(直接攻撃)。ほとんどのケースで、これは致命的な脆弱性でしょう。実際には、FCKEditorが置いてあるだけではダメで、phpのアップロードコネクタを有効にした場合のみの脆弱性ですし、config側で対応することもできますが…
/editor/filemanager/upload/php/config.php


$Config['Enabled'] = true ; // この機能を有効にしただけでアウト


あと、第三者にアップロードを許可しているのに、ファイルの中身をまったくチェックしていないので、例のIEのMIME-Type XSSはバリバリにオープンですし、同じく第三者がFlashをアップロードできるってことは、これまたXSSでしょう。ファイルアップロードは必ずホワイトリスト。これは鉄則です。
このケースでも、画像ファイルのみに限定して、その上でgetimagesize()等で、最低限のファイルの中身チェックを行うべきでしょう。

そもそも、アップロード処理がユーザ権限チェックをまったく通過しない、という設計はどうなんでしょうか? いわゆるWebアプリケーション脆弱性がなかったとしても、あるサーバのスペース・帯域を自由に第三者が利用できることになります。
こんなPHPバックエンドをそのまま使う人はさすがにいないだろうと信じたいところですが…


TinyD with FCKeditor というものがあったので、そちらも一応確認してみました。さすがに、アップロード処理にはXOOPSの権限チェックが入っていますが、やはり拡張子.phpがアップロードできる脆弱性はそのまま残っていました。(よく見たら、その部分の直前にFatalなtypoがあるので、意外とOKかもしれません

このモジュールの権限チェック部分については真面目に追っていないのですが、こんなに甘いチェックしかせずに、普通のユーザにアップロード許可を与えるのは問題あるでしょう。

他にも、$_FILES[]['name']がDocumentRootにそのまま格納されてしまう、という設計も問題ですし、ディレクトリ名などにXSSを埋め込めそうなのもマイナスです。safe_mode環境をまるっきり考慮していないのもなんだかなあ、という感じです。(この問題点はオリジナル/XOOPSモジュール共通)


ただ、FCKeditorのフロントエンドの作りはかなり良い感じですし、バックエンド部がやらなければならないことなんて、フロントに比べればほんのちょっとだけなので、PHP部分をまるまる作り直してみました。実際に作ってみた感想ですが、JavaScriptとPHPが入り組んでいるspawとは違って、本当に作りやすかったです。FCKeditorの設計が良いのでしょう。

ダウンロードはこちら。
http://xoops.peak.ne.jp/md/mydownloads/singlefile.php?lid=93

利用法ですが、spawと同じく、common/の下に置く形になります。別途、uploadsの下に、fckeditorというディレクトリを作っておいてください。(パーミッションはApacheが書き込めるように。Apacheモジュール版PHPならもちろん777です。CGI版なら755でOKです。)

これに対応したpico (0.2) もリリースしておきます。


Related articles
Printer friendly page Send this story to a friend

Comments list

GIJOE  Posted on 2007/5/7 6:05
I don't know fckeditor has a spell checker.

I have to check it for the security.
(Almost php files under fckeditor are insecure)
gigamaster  Posted on 2007/5/5 18:30 | Last modified
Many hosts have disabled shell command for security reasons and many users can't run aspell within fckeditor.

Ben aka Gentleben has shared a patch to use pspell.
The "spellchecker.php" file is available at sourceforge.net

PSPELL Support for PHP version spell checker
Submitted By:
Ben - gentleben

-----

Tested successful with XC and the last Pico release running on the following server config (pspell enable):
Linux 2.4 - Apache 1.3.36 - MySQL 4.0.27 - PHP 4.4.3
GIJOE  Posted on 2006/12/15 14:40
chika3さん、こんにちは〜

フロントエンドは出色の出来ですね。
素直に感心しました。

設計の良さから、機能拡張も比較的容易そうなので、いろいろやってみよう、という気にさせてくれますね。

とりあえず、ユーザ毎の権限/専用フォルダあたりの実装ですかね。そうなると、やっぱりモジュールとしてのコントローラも必要そうですが。
chika3  Posted on 2006/12/15 11:13
使ってみました。コレいいですね~。
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!