IIS をガードする guard3


guard3 バージョン 1.26 公開中

新機能――不正なエンコードパターンの検出ロジックを強化,「メソッド」「パス」「クエリストリング」に対するパターンマッチによるHTTPリクエストの受容/排除ルール,カスタムエラーページをサポート,など。

1.24 およびそれより古いバージョン(ベータ版を含む)では,HTTPリクエストの作り方を工夫すると guard3 のフィルタリングを迂回できる脆弱性がありました。この 1.26 ではその問題に対処しています。

ダウンロード:

変更履歴

2002.06.05 ver 1.26 リリース
  • パターンマッチによるフィルタリングルール記述機能を導入。メソッド,パス,クエリストリングなどとの照合が可能。不正なエンコードパターンの検出ロジックを強化。カスタムエラーページをサポート。1.24およびそれより古いバージョンのセキュリティ脆弱性に対策。
2000.03.24 ver 1.03 リリース
  • 不正なURL指定による文字置き換え機能回避の不具合修正
2000.02.22 ver 1.02 リリース
  • 漢字コード取扱上の不具合の修正
  • 不当な %xx エンコーディングの排除
  • 起動時および停止時のログ出力

guard3 とは

(2002年6月)
「guard3」は,Windows 2000などで使われる標準のWWWサーバソフトInternet Information Services(IIS)に組み込んで使用するアドインモジュールです。「guard3」は,長すぎるURL,予定外のメタキャラクタ,不正な文字エンコーディングなど,Webアプリケーションへの攻撃に使われる各種のHTTPリクエストをあらかじめ設定しておいたパラメタに従って排除します。

「guard3」が最初に作られたのは2000年2月のことでした。その後寄せられた各種の機能強化要望を盛り込み,今回(2002年6月)バージョン1.26を公開いたします。バージョン 1.26 の特徴は次のようなものです。
  • これまでのバージョンで見つかった脆弱性――ある種の工夫をするとguard3のフィルタリング機能を迂回してIISに不正なHTTPリクエストを送り込めてしまう問題――に対策しました。
  • IISが受け入れてしまう各種の不正な文字エンコーディングを以前よりも強力に排除するようにしました。
  • HTTPリクエストの「メソッド」「パス」「クエリストリング」およびクエリストリング中の各「名前=値」対について文字列パターン照合を行い,マッチしたHTTPリクエストを排除(あるいは受容)するといったパターンマッチルール群を記述できるようにしました。
  • URLに関するバイト数制限をパス部分とクエリストリング部分に分けて指定できるようにしました。
  • 複数IPアドレスや複数仮想ディレクトリを持つIISサイトのために,個別のIPアドレスごと,特定のコンテンツパスごとに異なる設定が行えるようにしました。
  • HTTPリクエストを排除する際に,あらかじめ用意した静的HTMLページを表示できるようにしました。
guard3 1.26 の機能の詳細はドキュメント(guard3_126.pdf)をご覧ください。

フリーソフトウェア
guard3 バージョン 1.26 は 1.03 にひきつづき,フリーソフトウェアです。セキュリティ対策のためにIISに組み込むという目的であればご自由にお使いください。guard3そのものを転売すること(他者にコピーを譲渡しその際に対価を受け取ること)はお断りいたします。

ソースコード
guard3 のダウンロードアーカイブにはソースコードを添付しています。guard3 に脆弱性/バックドア/バグが疑わしい場合は(手間はかかりますが)誰でも検証できるようにしています。また,必ずしも優れたコードではありませんが,ISAPIフィルタをC++で記述する際の参考にしていただいてけっこうです。ただし,guard3 のソースコードの大部分をそのまま再利用し,少しだけ改造したものを商品化する,といったことはお断りいたします。

ソースコードを改変して使用する場合は,ソースコードやドキュメントにおける原作者の著作権表示を保持するように願います。本ソフトウェアの再配布を希望される場合は,作者までご連絡願います。

免責
本ソフトウェアはIISのセキュリティ対策を目的としており,慎重にプログラミングされています。しかしながら,本ソフトウェアの機能,動作,性能について,作者は一切保証いたしません。また本ソフトウェアの使用に起因する障害,動作不良,セキュリティ侵害等,いかなる結果に対して,作者および作者の雇用者は一切の責任を負いません。すべて使用者の責任において,ご使用願います。

バグ報告は作者まで直接,電子メールでお願いします。
guard3 作者: 長谷川武 has@nttdata-ccs.co.jp
株式会社NTTデータCCS



過去の説明文:

ISAPI フィルタ 「guard3.dll」 とは(2000年2月)

「guard3.dll」 は,IIS の背後で JET エンジンが利用されている際に生じる 安全上の問題に対応する目的で開発された ISAPI フィルタです。 「guard3.dll」 は次の機能を持ちます (詳細については添付の readme.txt を参照)。

    1. 長すぎる URL の排除

    guard3.dll は,長すぎる URL の HTTP リクエストを排除します。 長すぎる URL の HTTP リクエストがくると,guard3.dll は

      400 Bad Request

    という,エラーページのレスポンスを返す一方,IIS に対してはサーバ 上の何のリソースにもアクセスしないよう誘導します。 これにより,長すぎるパラメタを受け取ると支障をきたすおそれのある CGI その他の動的コンテンツの呼び出しを抑制できます。

    2. 特定パスにおける文字の置き換え

    guard3.dll は,IIS が受信した HTTP リクエストメッセージが特定のパ スへの参照を含む場合などに,あらかじめ与えられた文字の置換の指定に もとづいて HTTP リクエストを書換えます。

      例) "/bbs/search.asp" というパスを含むリクエストでのフォームデータ に含まれる,すべての "|" 文字を "_" 文字に変換する。

    3. ログファイルへの出力

    guard3.dll は独自のログファイルを書き出します。 ログファイルに書かれる内容は,以下の通りです。

    • guard3.dll の動作開始日時と動作パラメタのエコー
    • URL が長すぎるために排除された HTTP リクエスト
    • 特定パスに該当し,かつ該当文字を含んでいたため置換が行われ た HTTP リクエスト

「guard3.dll」 のダウンロード

「guard3.dll」 は こちら からダウンロードできます。 アーカイブには ISAPI の dll モジュール,一切のソースコード, および readme ファイルが含まれています。

「guard3.dll」 のインストール

「guard3.dll」 のインストールについては,添付の readme.txt をご参照願います。

なお,図解によるインストール手順 (およびレジストリ定義ファイル) は こちら をご覧下さい。(by Port139 伊原氏)

重要!! IIS4.0 ではマイクロソフトが提供する 「"エスケープ文字解析" の脆弱性に対する 修正プログラム を必ずインストールして下さい。 この修正プログラムがインストールされていない場合, guard3.dll の文字置き換え機能が意図的に回避される危険性があります。

guard3 ver1.0.2 以降ではこの問題の対策が施されています。

注意事項

本ソフトウェアは所属する組織内部および個人のコンピュータ上において, 自由にコピーおよび使用していただいて結構です。 ソースコードを改変して使用する場合は,ソースコードやドキュメントにおける 原作者の著作権表示を保持するように願います。 本ソフトウェアの再配布を希望される場合は,作者までご連絡願います。

なお,本ソフトウェアの機能,動作,性能について,作者は一切保証しません。 また本ソフトウェアの使用に起因する障害,動作不良,セキュリティ侵害等, いかなる結果に対して,作者および作者の雇用者は一切の責任を負いません。 すべて使用者の責任において,ご使用願います。 バグ報告は作者まで直接,電子メールでお願いします。


「guard3.dll」 作者 長谷川武
株式会社NTTデータCCS