最近増えた、ひぐらしやら著作権の侵害やらの荒らし。ちょうど、うちにも来たので調査してみたところ、ある程度対応できそうなので対応してみた。というわけで、POTI-board v1.32 のリリースノートでぃす。
・6月2日19時頃公開(lot.050602 )
うちにも荒らしが来て気付いたのだが、この荒らしの事を知る前に見つけた画像アップperlを改良しての犯行っぽい。
念の為にダウンロードしてそのperlをみたときは「一応アップできるよ」くらいのスクリプトで気にしてはいなかったが、今回の荒らしはこれを実用できるように改良したものを使っているらしいですね。
で。「バグ利用にて配信」と荒らしの内容にあるが、どちらかというと仕様の甘さを突いた方法での犯行です。
以下が犯行の方法。
(1) 送信する画像があるフォルダからランダムに画像を選び、picpost.phpにPaintBBSのヘッダー情報を付けて送信。このとき、proxyとUAのリストからランダムでそれぞれを偽装。
(2) potiboard.php?mode=piccom&stime=******にアクセスし、<option>タグのvalueを取得。このときクッキーも取得する。
(3) あとは取得情報を使い、お絵かき画像を偽って送信。このときも、proxyとUAを偽装しているっぽい。
ここで問題になるのが、picpost.phpに画像を送信しているところ。
これは、picpost.phpがアプレットからのデータしか受け取らないのを想定して画像のチェックをしてないところを突いた方法である。
他にも、proxyリストからIPを偽装することにより、連続及び二重投稿のチェックをすり抜けている。
ただ、間抜けな事に『未承諾広告』などの固有語句を毎回使ってるので、それを拒絶文字列に指定するだけで対処できたりする。
でも、解決策にはならないので先程の問題を踏まえて以下の仕様変更を行った。
【potiboard.php】
(1) 連続・二重投稿チェックをレベル分けして選択できるようにした
(2) 書込み時に画像の容量チェックを追加
※エラーメッセージMSG034を使用しますので、template_ini.phpの変更も必要
メッセージ例:アップロードに失敗しました<br>規定の画像容量をオーバーしています
【picpost.php】
(3) 容量違反・画像サイズ違反・拒絶画像のチェックを追加
※容量違反チェックのON/OFFはpicpost.phpの中でする
(1) 連続・二重投稿チェックをレベル分けして選択できるようにした
設定で連続・二重投稿対象を決めるセキュリティレベルと二重投稿チェックのセキュリティレベルを設けました。
【config.php】
// 連続・二重投稿対象セキュリティレベル
define(POST_CHECKLEVEL, '2');
// 連続・二重投稿対象セキュリティレベルが 高 のときの類似率(単位%)
define(VALUE_LIMIT, '80');
// 二重投稿セキュリティレベル
define(D_POST_CHECKLEVEL, '1');
// 二重投稿セキュリティレベルが 中 のときの類似率(単位%)
define(COMMENT_LIMIT_MIDDLE, '90');
// 二重投稿セキュリティレベルが 高 のときの類似率(単位%)
define(COMMENT_LIMIT_HIGH, '80');
POST_CHECKLEVEL
連続・二重投稿チェック対象を決める条件レベル。レベルが高い程チェックする対象が増えセキュリティに引っ掛かり易くなる。
0:最低 | … チェックしない |
1:低 | … ホストかパスワードが同じログの場合(従来の条件) |
2:中 | … 低レベルの条件に加え、名前・メールアドレス・URL・題名のいずれかが同じ場合 |
3:高 | … 低レベルの条件に加え、名前・メールアドレス・URL・題名のいずれかが類似率(VALUE_LIMIT)を上回る場合 |
4:最高 | … 無条件でチェック。最新ログ20件と連続・二重投稿チェックする事になる |
※中・高レベルのとき、見入力項目は無視する
VALUE_LIMIT
POST_CHECKLEVELが 3(高) のときの類似率。単位はパーセント。
投稿された項目とログの項目がこの値以上の割合で似ていたらチェック対象になる。
この値が高いと中レベルへ、逆に低いと最高レベルに近づく。[中] 100 ← 50 → 0 [最高]
D_POST_CHECKLEVEL
二重投稿とみなす条件レベル。レベルが高い程二重投稿と判断され易くなり投稿に失敗し易くなるので注意。
0:最低 | … 本文が一致し、画像なしの場合(従来の条件) |
1:低 | … 本文が一致する場合 |
2:中 | … 本文が類似率[中](COMMENT_LIMIT_MIDDLE)を上回る場合 |
3:高 | … 本文が類似率[高](COMMENT_LIMIT_HIGH)を上回る場合 |
COMMENT_LIMIT_MIDDLE
D_POST_CHECKLEVELが 2(中) のときの類似率。単位はパーセント。90%台を目安にすると良い。
COMMENT_LIMIT_HIGH
D_POST_CHECKLEVELが 3(高) のときの類似率。単位はパーセント。50〜80%くらいを目安にすると良い。
あまり下げ過ぎると何も投稿できなくなるかもしれないので注意。
(2) 書込み時に画像の容量チェックを追加
容量チェックをブラウザ任せになっていたのでスクリプト側でチェックするようにした。
これに伴い、エラーメッセージを追加したので、template_ini.php内の MSG034 にエラーメッセージを設定する必要があります。
define(MSG034, 'アップロードに失敗しました<br>規定の画像容量をオーバーしています');
※template_ini.phpはテンプレートに付属するもので、うちで配布しているテンプレートは既に対応済みです。
(3) 容量違反・画像サイズ違反・拒絶画像のチェックを追加
picpost.php の中で画像の容量制限チェック・画像のサイズ制限チェック・拒絶画像チェックをするようにした。
画像の容量制限チェック
config.php で設定するMAX_KB(単位KB)より、大きい画像は保存しない。
ただし、お絵かきした画像の容量は投稿してみないとわからないので不正投稿じゃなくても弾かれる可能性も出てくる。
よって、容量違反チェックのON/OFFをできるようにしています。(設定は picpost.php の中。デフォルトはON)
画像のサイズ制限チェック
config.php で設定するお絵かき最大サイズPMAX_W(幅)・PMAX_H(高さ)より、大きい画像は保存しない。
600以下にすると効果大。
拒絶画像チェック
config.php で設定する拒絶するファイルのmd5リスト$badfileと投稿画像のmd5値を照合して一致したら保存しない。
荒らしに使われた画像のmd5値は管理画面で確認できるので、それをリストに登録すればその画像は今後ここで拒絶できる。
※バージョンアップした picpost.php は古いバージョンの POTI-board でも使用できます。これだけでも置き換えればいくらか防げるでしょう。ただし、文字コードには注意して下さい。
ちなみに、配布中の POTI-board v1.21 の picpost.php は既に置き換えています。
■POTI-board v1.30〜1.31 からのバージョンアップ方法
potiboard.php と picpost.php を置き換えて、config.php に今回の新しい設定を加えてください。
あと、エラーメッセージを増やしているので template_ini.php も変更してください。
【ダウンロード】
>POTI-board
これら以外にも荒らし対策を考えてはいるが手っ取り早く対応できるのはこのくらいです。
他の対策方法は、次のバージョン以降に導入を考えています。
[ このエントリへはコメント出来ません ]
|