NP_cles()

123456789101112131415161718192021222324252627282930

NP_Blacklist 0.98 jp2

 
投稿者:hsur 投稿日時:2005-11-12 - 21:59
カテゴリー:Plug-in - / - トラックバック(5)- Views: 612

本日、ルールベースのブラックリストを突破するspamをはじめて受けました。その発信元を精査していたところ、そのIPがDNSBLにリストされていることが判明したため、プログラムの調査を行ったところ、DNSBLのLookup部に致命的なバグがあり、正しくDNSBLを参照できていないことが判明しました

jp1はspamを十分に防ぐ能力がありませんので、jp1をお使いの方は至急jp2へのアップデートをお願いします。

ダウンロードはこちら [NP_Blacklis v0.98 jp2][178clicks]
NP_Blacklis v0.98 jp3をリリースしています。

バグの経緯

オリジナルのNP_BlacklistのDNSBLのLookupルーチンにバグがあり、それをそのまま私が再利用する形で拡張したため、オリジナルのバグを引き継いでしまいました。オリジナルのバグを見破れなかった私の凡ミスです。ごめんなさい・・・・・・。

jp1からの変更点

・settings以下に空ファイルを追加
・DNSBLのLookup部分のバグを解消

バグの技術的説明

たとえば、172.16.111.222'というIPアドレスからアクセスがあった場合に、このアドレスがdnsbl.example.comというDNSBLに登録されているかどうかを調べる場合には、DNSで222.111.16.172.dnsbl.example.comというレコードを検索するという作業が必要になります。その結果、DNSレコードが見つかれば(多くのDNSBLは127.0.0.xという結果を返します。)そのIPアドレスはブラックリストに載っているということになり、逆に見つからなければそのアドレスはブラックリストに載っていないという判断になります。これが簡単なDNSBLの使い方です。

この一連の注目すべきなのはDNSBLを検索する際にはIPアドレス部分を逆から並べる必要があるということです。この処理をプログラムで書く場合には'.'で区切って、逆から並べなおすという作業になります。

NP_Blacklistのほとんどの動作はblacklist_lib.phpというルーチン群で処理されており、DNSBLのLookup処理もこの中に入っています。

この処理を本来は下記のようにすべきところが

list($a, $b, $c, $d) = explode('.', $spammer_ip);

オリジナルのプログラムはこのようになっていました

list($a, $b, $c, $d) = split('.', $spammer_ip);

explode()split()も最初の引数をパターンとして、後の引数の内容を分割するものなのですが、explode()のパターンは文字列として解釈されるのに対して、split()の引数は正規表現として解釈されるという違いがあります。これにより正常に処理が行われていませんでした。

完全に僕の見落としのせいですね。
ちょっと凹んでいます。。。。。。

    このエントリは役に立ちましたか?

      

    トラックバックについて [policy]

    Trackback URL:
    Trackbacks
    NP_Blacklistインストールしました。ただしオリジナル版ではありません。 ここから、NP_Blacklist_098jp2.zipをインストールしました。 作成者さんのサイトの記事 標準のNP_Blacklistは Blacklist一覧サ...
    細目的観測 (2005/11/27 18:06)
    NP_BlackList 絡みでいろいろありましたが、NP_cles() さんの NP_Blacklist 0.98 jp2 を使わせていただくことにしました。 早く SPAM コメント & トラックバックが来ないかと期待している私です。((本末転倒?)...
    徒然なるままに (2005/11/21 06:06)
    期待を受けてNP_cles()で先日より配布が始まったjp1のバグフィックス版。改造元のNP_Blacklistにもともと含まれているバグへの対応。DNSBL(ブラックリスト)参照が正しく行なわれてなかったらしい。 見たところ、使うべき関数をうっかり間違えた簡単なミスだった様子。だけど..
    kyms (2005/11/14 09:09)
    http://blog.cles.jp/item/1157 前バージョンが元にしていたバージョンから潜在的なバグがあったため、一部のSPAMが受信できてしまうという状態にあったようです。幸運なことに当サイトではまだ一度もSPAMコメント...
    →C↓C←C↑C (2005/11/13 14:02)
     Nucleus のスパム対策用の定番プラグインのひとつである NP_Blacklist は、 スパム判定用のデータを配布していた開発元のサイトが、増えすぎたアクセスに耐えかねて配布を中止され、リアルタイムのブラックリス...
    ひろの日記帳@International Cafeteria (2005/11/13 11:11)

    Comments [policy]

    No comments yet

    Add Comments

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン