* [spam] URI spamフィルタ: 概要 [#wb00d081] - ページ: [[BugTrack2]] - 投稿者: [[henoheno]] - 優先順位: 重要 - 状態: 提案 - カテゴリー: 本体新機能 - 投稿日: 2006-11-18 (土) 23:48:10 - バージョン: #contents ** 関連: [#dc60ad85] - [[BugTrack/772]] [SPAM] Wiki SPAMming - [[開発日記/2006-11-04]] (official/dev) 内容ベースのspamフィルタ と 新規postについて - [[開発日記/2006-11-12]] spam.php: 冒険者向け: 現状の組み込み手順 - [[cvs:lib/spam.php]] ** メッセージ [#pd14f285] spamフィルタのコンセプト実装について、実現している部分を中心に概要をまとめます。 このフィルタは「ハイパーリンクを生成させようとする欲求の強さ(理不尽さ)」を計測し、その度合いによってブロックを行います。 + (特定の条件で)追加されるメッセージを調べ、以下の条件でブロックする -- URIの直書きによる外部リンク要求が既定の個数を超えた時 (3件以上) -- HTML Anchor タグによる外部リンク要求が既定の個数を超えた時 (1件以上) -- phpBB BBCode ないしその派生記法による外部リンク要求が既定の個数を超えた時 (1件以上) + ブロックされた場合: -- その内容は管理者にメールで通知される Subjectの例: [PukiWiki] [blocked] 自作プラグイン/csv2newpage.inc.php -- ブロックされた側には改行コード一つのみが送信される(※可変) ** URI追加型スパムについて [#a9766872] このフィルタの基本的な対象は、URIを他のWebアプリケーション(特に、第三者でも投稿できるHTMLフォームを持っているWebアプリケーション)に追加させようとするスパムです。 このスパム行為の発信者には、ある程度明確な特徴があります。簡単に言えば、「(1)任意の外部へのリンク(HTMLのAnchorタグ)を (2)ある程度の期間 (3)対象のサイトに出現させる/消させない」という事に強いモチベーションを持っています。また、送信側にとって「(4)低コストで」大きな効果をもたらすべく、様々な工夫が行われています。 *** URIに関する工夫 [#l00a18d6] 単純な(文字列比較や、正規表現による)フィルタを回避できるように、URIには、防御側が想定しないであろうバリエーションを持たせる事があります。また、文字列を隠蔽、ないし語句のゆれを作成するためにpercent-encodeを利用することがあります。 単純な例: メッセージとURI buy foobar http://example.org/buy/foobar buy foobar http://example.org#buy/foobar buy http://victim.example.org/go?http%3A%2F%2Fnasty.example.org buy foobar http://example.org/buy/foobar order foobar HTTP://EXAMPLE.ORG/ORDER/FOOBAR URIに使用されるドメイン名にはいくつかの傾向があります。 - 既存のサイトの一部 (サブドメイン・ディレクトリ) を借用したもの - レンタルWebスペースやブログレンタルサイトのようなサービス(サブドメイン・ディレクトリ)を借用したもの -- もちろん複数アカウントによって複数個が利用される - 独自にスパム用のドメインを取得したもの -- ドメイン名は数字や文字の羅列である場合がある いずれも、取得したドメインについては、(開設されてから閉鎖、ないし放置されるまで)ある程度の生存期間が存在します。 *** メッセージに関する工夫 [#d2d1dd0b] 複数のWebアプリケーションでも(羅列したURIの)どれかが外部リンクとして成立する様に、複数の記法をミックスさせる事があります。 例: 同じURIを(同時に)複数の方法で羅列 Nice site! Check about foobar http://example.org/buy/foobar <a href=" http://example.org/buy/foobar ">buy foobar</a> [url=http://example.org/buy/foobar]Buy Foobar[/url] AnchorタグやBBCodeなどの記法を用いたuri spamの特徴としては、「記法に関してはほぼ正確である」という点があります。この点については、それぞれの記法を解釈できるサイトについて、間違いなく記法を解釈させるためであると考えることができます。 <a href= http://example.org >buy example</a> <= "</a>"で閉じている <a href="http://nasty.example.com">visit http://nasty.example.com/</a> <a href=\'http://nasty.example.com/\' >discount foobar</a> [url]http://nasty.example.com/[/url] [url=http://nasty.example.com]visit http://nasty.example.com/[/url] *** 自動投稿に関する工夫 [#t71f3a46] 例えば: - ひな型を用意し、データと組み合わせた内容を投稿させます。生成したテキストデータを投稿する場合と、ターゲット(サイト)から得た情報からひな型を作り、そこから生成したデータを投稿する場合があります。 - 投稿対象として登録したサイトは次回以降も活用します。 - 高頻度(数分~数十分等)、長期間(昼夜休まず)に渡って投稿を行わせ続けます。 - 複数のIPアドレスから投稿を行わせます。 -- 異なるIPアドレスからのリトライ、また多重投稿を行わせる事で、フィルタの貫通確立を高めます。 -- 一度利用したIPアドレスは数日~数週間後に再利用する事があります。 -------- #comment