JP Vendor Status Notes - JVN#98836916 : 複数のWiki クローン製品におけるサービス運用妨害 (DoS) の脆弱性は、ページ更新前後の差分を取る際に、あまりにデカいデータだと差分情報が大きくて、サーバのCPU/メモリ等のリソースを食ってしまう。これを連続でやられると、ツライ。という脆弱性。
FreeStyleWiki での対策:
* 差分表示で、ページの行数が極端に多い場合は差分検出を行わないようにした。
* 受信するリクエストのサイズをsetup.datで設定できるようにした。
履歴/2006-7-3 - FreeStyleWiki
Hiki での対策:
Ruby の timeout ライブラリを用いて、Hiki がリクエストを処理する時間に制限を加えました。時間の制限は、デフォルトでは 30 秒となっています。この秒数は、設定ファイル hikiconf.rbの @timeout 変数にて変更可能です。
Hiki - Hiki Advisory 2006-07-03
Wikiもどき での対策:
二通りありますが、前者の方法(機能の無効化)は根本的な対処方法ではありませんので、後者の方法(時間制限を設ける)をお勧めいたします。
MoonRock@MoonRock/wikimodoki/security (Wikiもどき セキュリティ情報) - 差分表示処理中においてDoS状態に陥る脆弱性 (2006-07-03)
それぞれに、いろいろな対策。
対象の Wiki クローンは FreeStyleWiki, Hiki, Wiki もどき の3種類らしいけど、ほかの Wiki にだってこの脆弱性はあるだろうなぁ。
というわけで、自分で調べる前に聞いてみる。誰か親切な人が答えてくれるに違いない。
FreeStyleWiki 等で発覚した脆弱性。
JP Vendor Status Notes: http://jvn.jp/jp/JVN%2398836916/index.html
Diff に時間がかかるとのこと。YukiWiki ではだいじょうぶでしょうか?
YukiWikiの差分表示機能にはDoS脆弱性はありませんか? - FreeStyleWiki 等で発覚した脆弱性。
って YukiWiki のサイトで尋ねてみたら、
* あります。
* この脆弱性(?)は非常に単純で、違いがいっぱいあると差分計算に時間とメモリが必要、というものです。
* 例えば、あるページに3万行ありその全ての行を書き換え更新すると、差分の計算に15分程かかり、メモリは80MB程消費します。
* これを複数のページ(10~20ページ程)に対して同時実行すれば、サーバは最悪ダウンします。
* 対策としては、Webサーバ側でリソース制限を行うか、YukiWiki側で常識外れに巨大な差分が生じる時は、差分の更新をしない処理をするしかないと思います。
o ちなみにFreeStyleWikiでは1000行以上の場合には差分表示を出来ないようにして回避しています。
* YukiWikiならsub do_writeにある差分書込の処理を↓な風に変えればO.K.ですかね。
o $diffbase{$form{mypage}} = &difftext(\@msg1, \@msg2) if (@msg2 < 1000);
* ページ内の行数の方を制限したらだめですか?
o むしろそれが本筋ですね。ただ、私はなるべく制限をしたくないので、difftextを止める方を選んだんです。
* YukiWiki 2.1.3が公開されていますね。
YukiWikiの差分表示機能にはDoS脆弱性はありませんか? - FreeStyleWiki 等で発覚した脆弱性。
参考になるなぁ。
で、1年9ヶ月ぶりに YukiWiki2 がバージョンアップ。
その YukiWiki 2.1.3 での対策:
# 書き込み長さの最大制限
* wiki.cgi: length_reject追加。
* wiki.cgi: $max_message_length追加。
* resource.txt: toolongpost追加。
YukiWiki2作業記録 - YukiWiki作業記録 - 2006-07-06
追記: 2006-07-08
YukiWiki 2.1.3 は、2006-07-07 リリ-ス扱い。
Ref. [結] 2006年7月 - 結城浩の日記 - YukiWiki 2.1.3を公開 / JPCERT/CCの製品開発者リストへの登録
tags: zlashdot Zura Wiki YukiWiki
Posted by NI-Lab. (@nilab)
コメント
YukiWiki 2.1.3 では、ページデータ更新時に行数ではなく、文字数(length 関数でチェックしているから環境によってはバイト数?)で制限をかけるようになっている。
投稿者: NI-Lab. | 2006年07月07日 07:54