2016-08-16 17 views
1

いくつかのWebサービスを実行します。ModSecurity OWASPコアルールセット - ユニコード偽陽性

OWASPコアルールセットを使用して、Apache Webサーバー用ModSecurityを使用します。

キリル文字やギリシャ文字のため、ギリシア語やロシア語のリクエストに問題があります。 OWASP CRSのルールで

のようなパターンがある "(^ [\"」´’‘;]+|[\"' ' '';] + $)」

ModSecurityはログインUTF-8があります。。ユニコード文字すべてのASCII文字がなければならないように文字として示されているべきである

例コード単位:

[対応データ:\ X85 2 ¥xce¥xbb¥xce¥xb9¥xce¥xbf¥xcf¥x85¥xcf¥x80¥xce ARGS内に見つかりました:q:163 45 \ xcf \ x83 \ xce \ xbf \ xcf \ x85 \ xce \ xbf \ xcf \ x85 \ xcf \ x80 \ xce \ xbf \ xce \ xce \ xb \ xce \ xb \ xce \ xce \ xce \ xce \ xce \ xce \ XBBの\ XCEの\のxb7]

[パターンマッチ "(I:(?:?[\"」\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98]\\\\s*?(x?or|div|like|between|and)\\\\s*?[\\"' \ XC2 \ XB4 \ XE2 \ X80 \ X99 \ XE2 \ X80 \ x98]?\\ D)| (?:\\ x \ x(?:23 | 27 | 3d)) ] *?(?:[\\ ... "]

ここでは、それがリクエストによってトリガされたことがわかりましたギリシャ語: σουνιουηλιουπολη(アテネの通り) それは私たちの問題ではありません。私たちはそれを理解することができます。我々は偽陽性を取得する理由

問題は、X80は、文字」(E2 80 99) とX80はまた、ギリシャ文字の一部であるの一部であるということです、thatsの。

トリガされた実際のルール:

SecRule REQUEST_COOKIES | REQUEST_COOKIES:!/ __ UTM/| REQUEST_COOKIES:!/ _ pk_ref/| REQUEST_COOKIES_NAMES | ARGS_NAMES | ARGS | XML:/ * 「(? i :(?:[\ "'´’‘]\s*?(x?or|div|like|between|and)\s*?[\"'' ']?\ d)|(?:\ x(?:23 | 27 | 3d))|(?:^。?[[\"' ´’‘]$)|(?:(?:^[\"' ' (?:[^ \ w \ 012])を入力します。[\\] ?(?:[\ d \ "'´’‘]+|[^\"'' ''] + [\" ´’‘]))+\s*?(?:n?and|x?x?or|div|like|between|and|not|\|\||\&\&)\s*?[\w\"' "] [+ &] [?] \ w + \ s?[| - ] \ s *?[´’‘]\s*?\w)|(?:@\w+\s+(and|x?or|div|like|between|and)\s*?[\"' '' \ d] +)|(?:@ [\ w - ] + \ s(と| x?or | div | like | and)\ s *?[^ \ w \ s ])|(?:[^ \ w \ s:] \ s *?\ d \ W + [^ \ w \ s] \ s *?(\ "'`' ''])|(?:\ Winformation_schema ""フェーズ2:キャプチャt:なしt:urlDecodeUni、/WEB_ATTACK/SQL_INJECTION '、logdata:'一致しました データ:%{MATCHED_VAR_NAME}内の%{TX.0}: %{MATCHED_VAR} '、重大度:' 2 '、setvar:' tx.msg =%{rule。 setvar:tx.sql_injection_score = + 1、setvar:tx.anomaly_score = +%{tx.critical_anomaly_score}、setvar: 'tx。%{tx.msg} -OWASP_CRS/WEB_ATTACK/SQLI - %{matched_var_name} =%{tx。\ XC2の\のXB4 | | 0} ´’‘] to (\"|'| ' "の回避策については

我々は [\のようないくつかのパターンを調整する"' \ XE2 \ X80 \ X99 | \ XE2 \ X80 \ x98)は、それが実際の一致しました文字を構築するUTF-8コードユニットの組み合わせ。コアルールセットのすべての55個のSQLインジェクションルールでこれを実行できますが、これは時間がかかります。 ApacheまたはModSecurityはのデコードとだけ設定ミスがある場合

我々は疑問に思います。非アスキー文字とアスキー文字は、ウェブブラウザによって%とUTF-8でURLエンコードされています。

+0

OWASP CRSメーリングリスト(https://lists.owasp.org/mailman/listinfo/owasp-modsecurity-core-rule-set)は、この種のもののためにかなり良いです。彼らがあなたを理解するのを助けるなら、ここに答えを投稿してください。 –

答えて

2

デコードの問題ではないと私は予想していたようですが、保護しているアプリケーションがすべてのURL入力をUTF-8として扱っていることがわかっていると、あなたの(厄介なほど冗長な) (それはそれは再び通過させるために開始すると、たとえば、Windows-1252を使用し、何かのための「正しい」ではありません。)

また、あなたがいないと仮定して、完全にスマート引用符フィルタリングを削除することができSQLインジェクションの問題とUnicodeの処理の問題があることが特に判明しているアプリケーションを保護しようとしています。 Windowsの誤った‘best fit’マッピングのようにASCII以外の文字をASCIIにマップするプラットフォーム関数を使用してアプリケーションをASCIIにフラット化すると、それらは一重引用符に変換される可能性があるため、先行するWAFフィルタを回避できます。それらを削除します。 (ルールには、U + 02B9、U + 02BC、U + 02C8、U + 2032、U + FF07のように、引用符で囲まれた他の文字も含まれていないようですので、おそらくすでに。ケース)

はTBHこれは、mod_securityのCRSルールのコースのパーです。特にパス部分に任意の文字列を使用するサイトでは、ロットの偽陽性のがあります。このようなツールを展開することの大部分は、最悪の被害を避けるためのツールの設定です。

IMO:原則的にWAFには根本的な欠陥があります(攻撃を構成する可能性のある入力と有効な要求を定義することは不可能です)。デフォルトのCRSには、ほとんどの場合よりも欠陥があります。これらは、ソースから即座に修正できないソフトウェアに対する既知の攻撃を阻止するための戦術的手段としては有用ですが、一般的な入力フィルタとして、通常は修正するよりも多くの問題を引き起こします。

関連する問題