HTML ペイロードのコマンドインジェクション文法ベースの保護
NetScalerWeb App Firewallは、HTMLペイロードのコマンドインジェクション攻撃を検出するためにパターンマッチアプローチを使用します。このアプローチでは、事前定義されたキーワードと(または)特殊文字のセットを使用して攻撃を検出し、違反としてフラグを立てます。このアプローチは効果的ですが、多くの誤検出が発生し、1 つ以上の緩和ルールが追加される可能性があります。特に、HTTPリクエストで「Exit」などの一般的に使用される単語が使用されている場合。HTML ペイロードにコマンドインジェクションの文法ベースの保護チェックを実装することで、誤検出を減らすことができます。
パターンマッチアプローチでは、事前定義されたキーワードと(または)特殊文字が HTTP 要求に存在する場合、コマンドインジェクション攻撃が識別されます。この場合、ステートメントは有効なコマンドインジェクションステートメントである必要はありません。しかし、文法ベースのアプローチでは、コマンドインジェクション攻撃は、コマンドインジェクションステートメントにキーワードまたは特殊文字が存在する場合にのみ検出されます。したがって、誤検出のシナリオは減少します。
コマンドインジェクション文法ベースの保護の使用シナリオ
「出口に向かって急いで!」という声明を考えてみましょう。HTTP リクエストに存在します。このステートメントは有効なコマンドインジェクションステートメントではありませんが、pattern-match アプローチでは、キーワード「exit」によるコマンドインジェクション攻撃として要求が検出されます。しかし、コマンドインジェクションの文法ベースのアプローチでは、キーワードが有効なコマンドインジェクションステートメントに存在しないため、ステートメントは違反攻撃として検出されません。
CLI を使用してコマンドインジェクションの文法ベースの保護パラメータを構成する
コマンドインジェクションの文法ベースの検出を実装するには、Web App Firewall プロファイルで「cmdInjectionGrammar」パラメーターを構成する必要があります。デフォルトでは、パラメータは無効になっています。学習を除き、既存のコマンドインジェクションアクションはすべてサポートされています。アップグレード後に作成された新しいプロファイルは、コマンドインジェクショングラマーをサポートします。新しいプロファイルのデフォルトのタイプは「特殊文字またはキーワード」のままであり、コマンドインジェクショングラマーは明示的に有効にする必要があります。
コマンドプロンプトで入力します。
add appfw profile –CMDInjectionAction -CMDInjectionGrammar ON/OFF
例:
add appfw profile profile1 –CMDInjectionAction Block –CMDInjectionGrammar ON
CLI を使用してコマンドインジェクションのパターン一致保護と文法ベースの保護を構成する
文法ベースとパターンマッチの両方のアプローチを有効にしている場合、アプライアンスは最初に文法ベースの検出を実行します。アクションタイプが「block」に設定されたコマンドインジェクションが検出された場合、リクエストはブロックされます(pattern-match を使用して検出を検証しません)。
コマンドプロンプトで入力します。
add appfw profile –CMDInjectionAction -CMDInjectionGrammar ON –CMDInjectionType
例:
add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType CMDSplChar
CLI を使用してコマンドインジェクションチェックを文法ベースの保護のみで構成する
コマンドプロンプトで入力します。
add appfw profile –CMDInjectionAction -CMDInjectionGrammar ON –CMDInjectionType None
例:
add appfw profile p1 –CMDInjectionAction block – CMDInjectionGrammar ON –CMDInjectionType None
CLI を使用したコマンドインジェクションの文法ベースの保護のバインド緩和ルール
アプリケーションで,HTMLペイロード内の特定の“元素”または“属性”のコマンドインジェクションチェックをバイパスする必要がある場合は、緩和ルールを設定する必要があります。
注:
valueType が「keyword」である緩和ルールは、アプライアンスがコマンドインジェクション文法を使用して検出を実行する場合にのみ評価されます。
コマンドインジェクションインスペクション緩和ルールには、次の構文があります。コマンドプロンプトで入力します。
bind appfw profile -CMDInjection [isRegex(REGEX| NOTREGE)] [-location ] [-valueType (Keywor|SpecialString|Wildchar) [][-isValueRegex (REGEX | NOTREGEX) ]]
例:
bind appfw profile p1 -cmdinjection abc http://10.10.10.10/ bind appfw profile p1 –cmdinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX bind appfw profile p1 –cmdinjection 'name' http://10.10.10.10/ -valueType Keyword 'exi[a-z]+' -isvalueRegex regEX
GUI を使用してコマンドインジェクションの文法ベースの保護を構成する
次の手順を実行して、文法ベースの HTML コマンドインジェクション検出を設定します。
セキュリティ > NetScaler Web App Firewall プロファイル > プロファイルの順に移動します。
プロファイルを選択し、[編集] をクリックします。
[詳細設定]セクションに移動し、[セキュリティチェック] をクリックします。
[HTML コマンドインジェクション] チェックボックスをオンにして、[アクション設定] をクリックします。
[CMD 文法を使用してチェック] チェックボックスをオンにします。
「要求を含むチェック」から「なし」を選択します。
「OK」をクリックします。