スパム症候群 〜その発病及び傾向と対策に関する一考察(未完)

設計書らしきものを書いたっきり半年ほどほったらかしだった例のスパム対策の件。最近になってスパムが酷くなってきたので、ついに新システムの実装に重い腰を上げた次第。で、一応完成したわけだが、付け焼き刃の知識に基づいているせいか、用いた対策とその実効性について少々疑問に思わざるを得ないような気がしなくもないので、ちょっと考察してみることに。仕様上の問題が発覚したこともあるし。以下、仕事モード入りまーす。

要求仕様

運用中のWeb掲示板サービスに対するスパム攻撃が活発化している。今年初頭の攻撃は特定IPアドレスからの書き込みだったため、書き込み禁止IPアドレスを逐次追加することにより防御できていたが、ここ数週間のスパムはIPアドレスが不特定多数に渡っており、同様の手法による防御は事実上不可能であった。したがって、別の方法により対応する必要がある。
なお、新システムの開発に当たっては、Basic認証等により書き込み権限を特定ユーザに限定する手法は極力取らないこととする。これは、(1)既存もしくは将来的に追加される利用者のユーザID、パスワード配布及び管理作業の煩雑さを避けるため、(2)掲示板以外の手段による連絡が比較的疎遠なユーザの掲示板への参加機会損失を防ぐため、の2つの理由による。

設計にあたっての現状分析

現行のWeb掲示板サービスは、(今年初頭の攻撃に対応するための)特定IPアドレスからの書き込み拒否以外、特に対応を行っていない。したがって、CGIのURL及びCGIへの標準入力パラメータ名がわかれば、正規の方法(書き込みページのフォーム利用)による手動の書き込みでなくとも、直接CGIへパラメータを渡すことにより機械的な書き込みが可能となる。なお、CGIのURL及び標準入力パラメータ名は、書き込みページのhtmlソース内容(formタグのaction属性、及びinputタグのname属性)から比較的容易に推定可能であり、機械的なスパム攻撃の危険性は高かった。
また、ここ数週間のスパム攻撃に関しては、不特定多数のIPアドレスからの書き込みという点で、以前の攻撃とは傾向が異なっている。アクセスログによる環境変数の記録がないため断定はできないが、「不特定多数のIPアドレス」という事実から、これはいわゆるクロスサイトリクエストフォージェリ(以下CSRF)による攻撃と推定される。すなわち、攻撃者が用意したWebサイトに当掲示板への書き込みスクリプトを埋め込んでおき、第三者がその攻撃用サイトにアクセスすることにより(第三者が意識することなく)当掲示板へのスパム書き込み処理が発生する、ということである。不特定多数のIPアドレスは、この「第三者」のIPアドレスと思われる。
なお、他の攻撃方法として「攻撃者による手動の、正規の書き込み方法を用いることによるスパム書き込み」という可能性も考えられるが、ここでは除外する。これは、書き込み元のIPアドレスの分布が、単一接続業者の提供IPアドレス範囲より明らかに広く、攻撃者がそれだけのアクセスポイントを確保するのは現実的に困難、という理由による。


−−−−−−−−−−−−

…なんか眠くなってきたので明日(以降)に続く。