PEAK XOOPS - 本家版とJP版のSecurityパッチの差 (updated) in englishin japanese

Archive | RSS |
XOOPS
XOOPS : 本家版とJP版のSecurityパッチの差 (updated)
Poster : GIJOE on 2005-11-15 18:37:43 (8372 reads)

in englishin japanese
実は、このサイトについては、あえて本家版で運用しています。
さすがに、2.2.x には穴が多すぎて自分で使う気にはとてもなれませんが、2.0.x 系列であればそれほど酷いことはありません。Protectorとの併用で十分に実用になるでしょう。

実は、2.0.13.2に上げたのは最近なのですが、以下のセキュリティパッチについて、その差が気になったので、ここにメモしておきます。

JP版:
2.0.12-JP -> 2.0.13a-JP

本家版:
2.0.13.1 -> 2.0.13.2



2005年10月に問題となった一連のセキュリティパッチは内容的には以下の通りです。

(1) IEだけのバグで、javascrip t: というURI要素の間にコントロールコードがあっても、JavaScriptが実行される
(2) IEだけのバグで、Content-Typeと中身が異なるHTTPボディが送られてくると、text/htmlであるかのように解釈する
(3) newbbやcommentのアイコンにJavaScriptが埋め込める
(4) misc.php のメール送信部分にCR+LFがInjectionできる
(5) contactモジュールのメール送信部分にもいろいろInjectionできる

ちょっと経緯を説明しますが、元は、JPCERTのレポート IPA#77105349 でした。
その中身は(1)と(3)だけでしたが、Marijuanaさんの独自調査で(4)と(5)が、JM2さん主催MLでの活動で(2)が追加されました。

修正コードの適用は基本的に、minahitoさんとnobunobuさんが担当したことがCVSから見て取れます。この当時、本家サイトはずっと落ちていたので連絡に困ったのですが、結局onokazuさんが本家コアチームに連絡したようです。本家版2.0.13.2のクレジットには、Skalpaという名前がおどっていますが、基本的にJP版のパッチを参考にして独自に解釈したものだと思われます。


このうち、(5)については、「contactモジュールは捨ててください」の一言で解決します。
出来の悪い標準モジュールの中でも下から数えて何番目、というレベルです。さっさと捨てて乗り換えてしまいましょう。Marijuanaさんの「問い合わせスペシャル」なんて素晴らしい出来ですよ。

(3)については、実は「嘘のレポート」です。あんな短いフィールドに、攻撃性のJavaScriptは埋め込めません。(JPCERTの確認体制には問題がありますね)

それでも、(3)と(5)について丁寧にパッチされています。minahitoさん、nobunobuさん、お疲れさまでした。本家版もJP版に準じます。


残る(1)(2)(4)が本当の脆弱性です。


(4) は確かに脆弱性です。そして、この部分のパッチには、本家版JP版の差はありません。というより、Skalpaさんが素直にJP版のパッチを採用しています。


(1) については、本家版とJP版で差があります。

JP版では、[ img]タグのURL部分についてだけ、コントロールコードのチェックをしています。確かに狙い目はそこなのですが、<a href=""> のような形でのアサインについては、対策していません。URL専用の表示サニタイズ関数が追加されているので、それを使いなさい、という意味だと思われます。(個人的には、[ url]でクリックさせる方法は大丈夫なのか、という心配はあります)

一方、本家版では、BBCODEデコード全体として、コントロールコード込みのjavascrip t:文字列を検索して (tammairanslip) に書き換えます。この場合、<a href="">のような形でのアサインについてもOKとなります(もちろんこのサニタイザを通った場合)。[ url]の心配もないでしょう。

ここについては、設計として正しいのはJP版、安全性最優先なのが本家版と言えそうです。
これはポリシーの違いですね。

私自身は、Protectorで、そういうPOSTデータがあったら、コントロールコードを削除するロジックを追加しようと思っています。こういうのはProtectorに任せるのが一番だとさえ思っています。POSTデータのみのチェックなので、表示側に負担がかからないのもメリットです。


さて一番の問題は、(2) です。これに関与するのは、class/uploader.php なのですが、JP版は正しい対応をしていると思います。一方、本家版は、POCの意味を勘違いしているようです。getimagesize()で画像だと判断した時点でOKとしてしまっています。

getimagesize()から得られた画像タイプと、拡張子が合っているかのチェックこそが重要なのですが、Skalpaさんはそのあたりを誤解してしまったようです。

以上から、本家版2.0.13.2を使っていたとしても、class/uploader.php だけは、JP版2.0.13a-JPのファイルで上書きするのが良さそうです。


なお、本家版には、JP版にないパッチも2つほど含まれています。

class/mail/phpmailer/class.smtp.php での無限ループ対策
include/functions.php のcheckEmail()関数のバグFix

おそらくセキュリティ問題にはならないので、これらについては、JP版に急いで取り込む必要はないでしょう。

0 comments
Printer friendly page Send this story to a friend

Comments list

Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!