snort1.7のUNICODE誤検知抑制&ニューパターン検知パッチ


 ついに出ました、snortの新しいバージョン、snort1.8!

 今のところ、ソースのみの公開ですが、今後バイナリも公開されると思います。
 ということで、このページもobsolute、と思いましたが、1.8は一部にメモリリークがある、と言う報告があり、ソースコードの一部差し替えがが出てきそうな雰囲気もあるため、当面このページは残しておきます。

 ちなみに、ここで公開しているパッチのアイディアが1.8で実装されました。
 残念ながらパッチのコードがあまりに汚いため、1.8のコードはパッチのアイディアを元にsnort開発陣が書き直したものです(苦笑)。
 ぜひぜひsnort1.8を使ってみてください。
 #ただし、安定したらね(笑)
 #インストールの際にはCREDITSファイルと
 #spp_http_decode.cを見てね(^^)


 個人的にも使用している、侵入検知ソフト、snort1.7には対IIS-UNICODE攻撃を察知するプリプロセッサが導入されています。
 しかしながら、このパッチ、「%??」と書いてあるURLは何でもかんでも攻撃と認識してしまいます。その結果、日本語で検索をかけると多くの場合、攻撃だぁ、とメッセージを吐いてしまうのです。
 ああ、うっとおしい。
 しかも、この現状のプリプロセッサでは検知できないパターンを確認してしまいました。おいおい、役立たずじゃんね、このルーチン。
 というわけで、Security Talk MLの方々および、あらい@ラックさんにご協力いただき、このたびパッチを作成しました。
 動作については無保証ですが、私としてできる範囲のことをやったつもりです。バグとかあったらごめんなさい、ということで、ファイナルβバージョン(笑)として公開します。
 ちなみに、このパッチ、凝ったことはいっさいしていないので、OSは問わないんじゃないかと思います(NT/2Kはその限りではないけど)。
 バグや動作確認をされた方は、ぜひぜひご一報ください。

 アルゴリズムは、%がついた文字列が送信されたら、(一応)UNICODE(UTF-8)を解析して、怪しい文字があったらメッセージを出力する、という形になっています。
 怪しい文字は「/」、「\」、「.」を想定しています。
 また、UTF-8エンコードは1バイト2バイト〜3バイトまでです。現状で確認されている、2〜3バイトのUTF-8エンコードはすべてデコード可能となっていますし、転置表現をどのバイトで施してある場合でも検知できるはずです。
 なお、ほんとに単なるパッチですので、使いたくても使えない方はご一報ください。要望多数の場合、Linux(Kondara MNU/Linux1.1/1.2/2000)でrpmを作ってここに置きます。その時いっしょにtar玉も置きます。

パッチはこれです。

 最後に。このパッチが皆さんの役に立てば幸いです。




突っ込みはしかPまで。スパム、DMおことわり。