POTI-board v1.32 リリースノート

POTI-board

近増えた、ひぐらしやら著作権の侵害やらの荒らし。ちょうど、うちにも来たので調査してみたところ、ある程度対応できそうなので対応してみた。というわけで、POTI-board v1.32 のリリースノートでぃす。

  ・6月2日19時頃公開(lot.050602

ちにも荒らしが来て気付いたのだが、この荒らしの事を知る前に見つけた画像アップperlを改良しての犯行っぽい。
念の為にダウンロードしてそのperlをみたときは「一応アップできるよ」くらいのスクリプトで気にしてはいなかったが、今回の荒らしはこれを実用できるように改良したものを使っているらしいですね。

で。「バグ利用にて配信」と荒らしの内容にあるが、どちらかというと仕様の甘さを突いた方法での犯行です。

以下が犯行の方法。

ここで問題になるのが、picpost.phpに画像を送信しているところ。
これは、picpost.phpがアプレットからのデータしか受け取らないのを想定して画像のチェックをしてないところを突いた方法である。
他にも、proxyリストからIPを偽装することにより、連続及び二重投稿のチェックをすり抜けている。

ただ、間抜けな事に『未承諾広告』などの固有語句を毎回使ってるので、それを拒絶文字列に指定するだけで対処できたりする。

でも、解決策にはならないので先程の問題を踏まえて以下の仕様変更を行った。

(1) 連続・二重投稿チェックをレベル分けして選択できるようにした

設定で連続・二重投稿対象を決めるセキュリティレベル二重投稿チェックのセキュリティレベルを設けました。

 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.phppicpost.php を置き換えて、config.php に今回の新しい設定を加えてください。
あと、エラーメッセージを増やしているので template_ini.php も変更してください。

【ダウンロード】
POTI-board

れら以外にも荒らし対策を考えてはいるが手っ取り早く対応できるのはこのくらいです。
他の対策方法は、次のバージョン以降に導入を考えています。