[spam] URI spamフィルタ (Part 1) とブロック機構: 概要

関連:

修正

spamフィルタのコンセプト実装について、実現している部分を中心に概要をまとめます。

  1. URIの計測機構 - URI追加型スパム(下記)の「ハイパーリンクを生成させようとする欲求の強さ(理不尽さ)」を計測します。
    • URIの直書きによる外部リンク生成要求の個数 (記法を問わない)
    • HTML Anchor タグ、phpBB BBCode ないしその派生記法による外部リンク生成要求の個数
  2. 上記フィルタを利用したブロック機構
    • (comment、pcomment、bugtrack、trackerなど、特定のシチュエーションで)新規に追加されるメッセージを調べ、特定の条件でブロックする
    • ブロックされた側には、改行コード一つのみが送信されます。
  3. ブロック内容の通知機構 - ブロックした投稿内容については、ブロックした事がわかる形で管理者にメールされます。管理者は誤判定などが無いかどうか、ブロック通知をチェックすべきです。メールクライアントのフィルタ機構によって、普段とは別のフォルダへ振り分けることができます。
     Subjectの例 ('[blocked]' が挿入される):
     [PukiWiki] [blocked] 自作プラグイン/csv2newpage.inc.php

概要: URI追加型スパム

他のWebアプリケーション(特に、第三者でも投稿できるHTMLフォームを持っているWebアプリケーション)に、URIを自動的に追加させようとするスパムを、ここでは「URI追加型スパム」と呼ぶ事にします。

このスパム行為の発信者には、ある程度明確な傾向があります。総じて、発信者は「(1)低コストで (2)大きな効果(※金銭的な)」をもたらすために、「(3)任意の外部へのリンク(HTMLのAnchorタグ)を (4)ある程度の期間 (5)対象のサイトに出現させる/消させない」という事に強いモチベーションを持っています。

URIに関する工夫

単純な(文字列比較や、正規表現による)フィルタを回避できるように、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
 order foobar HTTP://EXAMPLE.ORG/BUY/FOOBAR

URIに使用されるドメイン名にはいくつかの傾向があります。

いずれも、取得したドメインについては、(開設されてから閉鎖、ないし放置されるまで)ある程度の生存期間が存在します。

メッセージに関する工夫

ひな型と、その時追加したいURIを組み合わせ、生成したデータを投稿します。生成したテキストデータを投稿する場合と、ターゲットに選んだサイトから得た情報(例: どのようなフォームを持っているか)からひな型を作り、そこからデータを生成する場合があります。

特定の記法を解釈するWebアプリケーションを狙って、何らかの記法を利用する事があります。

 例: URIを(同時に)単一の方法で羅列
 [ url=http://example.org/buy/foobar]Buy Foobar[/url]
 [ url=http://example.org/buy/foobar]Buy Foobar[/url]
 [ url=http://example.org/buy/foobar]Buy Foobar[/url]

また、複数の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]

ターゲットとしたサイトごとに適切な記法を使わない点については、投稿側のスパム作成コストや、スパム対象一覧の蓄積方法・流通方法などに原因があるのではないかと推測する事ができます。もしそれに見合うのならば、適切な内容が使用されるでしょう。

自動投稿に関する工夫 (対象、頻度、分量に関する工夫)

着実な積み重ねによって、ターゲットとしたサイトを侵食する事を目標とします。結果的に、管理側が長期間にわたり管理を放棄した状態となるのが理想的です。

例えば:

URI追加型スパムのブロックについて

上記のような特徴をもっている自動スパムに対して、従来型の機械的なフィルタは、(1)ユーザーの利便性を損なわずに (2)管理者のメンテナンス負担を減らせるか、といった点のバランスに問題があります。

「URI追加型スパム」は、(投稿テストを除き)基本的に必ずURIをコンテンツに追加させようとします。そこで、投稿されるコンテンツに含まれるURIを検証し、その質や量で自動的にブロックを判定する機構があれば、IPアドレスが合致するかどうかや、NGワードを含んでいるかどうかに限定せずにスパムをブロックする事が可能になります。


コメント: URIが既に含まれている場合の挙動


コメント: ブロック結果とそのバリエーション


コメント: goodhostに対する処理 (無視したい対象に対する無視の仕方)


コメント


*1 気分になった
*2 まな板の上に乗せるhostを少しでも増やすために、あまり綺麗にuriをpickupしていない点の
*3 uriの中に別のuriや別のhostが隠れているかもしれないが、まとめて全部、系統立てて
*4 使い捨ての攻撃はそれでも防げませんが、密度が高まるでしょう
*5 spamの源を断つ方向の

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-10-06 (土) 11:16:56
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.268 sec.

SourceForge