Citrix ADC

HTML および JSON ペイロードに対する SQL 文法ベースの保護

Citrix Web App Firewallは、 HTTPおよびJSONペイロードでのSQLインジェクション攻撃を検出するためにパターン一致アプローチを使用します。このアプローチでは、事前定義された一連のキーワードと(または)特殊文字のセットを使用して攻撃を検出し、違反としてフラグを立てます。このアプローチは効果的ですが、多くの誤検出が発生し、1 つ以上の緩和ルールが追加される可能性があります。特に、HTTP または JSON リクエストで「Select」や「From」などの一般的に使用される単語が使用されている場合。 HTMLおよびJSONペイロードの SQL 文法保護チェックを実装することで、誤検知を減らすことができます。

既存のパターンマッチアプローチでは、HTTP リクエストに事前定義されたキーワードまたは特殊文字が存在する場合、SQL インジェクション攻撃が識別されます。この場合、ステートメントは有効な SQL 文である必要はありません。しかし、文法ベースのアプローチでは、SQL インジェクション攻撃は、キーワードまたは特殊文字が SQL 文に存在するか、SQL 文の一部である場合にのみ検出され、誤検出シナリオが減少します。

SQL 文法ベースの保護使用シナリオ

HTTP リクエストに「チケットを選択してユニオンステーションで会おう」というステートメントを考えてみましょう。ステートメントは有効な SQL ステートメントではありませんが、既存のパターンマッチアプローチは、SQL インジェクション攻撃としてリクエストを検出します。これは、ステートメントが「Select」、「and」、「Union」などのキーワードを使用するためです。ただし、SQL 文法アプローチの場合、キーワードが有効な SQL 文に存在しないか、有効な SQL 文の一部ではないため、ステートメントは違反攻撃として検出されません。

文法ベースのアプローチは、JSONペイロードの SQL インジェクション攻撃を検出するように設定することもできます。緩和ルールを追加するには、既存の緩和ルールを再利用できます。「ValueType」「キーワード」のルールでは、細粒緩和ルールは、SQL 文法にも適用されます。 JSON SQL 文法では、既存の URL ベースのメソッドを再利用できます。

CLI を使用して SQL 文法ベースの保護を構成する

SQL 文法ベースの検出を実装するには、Web App Firewall プロファイルで「sqLinjectionGrammer」パラメーターを構成する必要があります。デフォルトでは、パラメータは無効になっています。学習以外の既存の SQL インジェクションアクションはすべてサポートされています。アップグレード後に作成された新しいプロファイルは、SQL インジェクション文法をサポートしており、引き続きデフォルトのタイプを「特殊文字またはキーワード」とし、明示的に有効にする必要があります。

コマンドプロンプトで入力します。

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON/OFF
<!--NeedCopy-->

例:

add appfw profile profile1 –SQLInjectionAction Block –SQLInjectionGrammar ON

CLI を使用して SQL パターンマッチ保護と文法ベースの保護を構成します

文法ベースとパターンマッチの両方のアプローチを有効にした場合、アプライアンスは最初に文法ベースの検出を実行し、アクションタイプをブロックに設定した SQL インジェクション検出がある場合、リクエストはブロックされます(パターンマッチを使用して検出を確認せずに)。

コマンドプロンプトで入力します。

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

例:

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType SQLSplChar

CLI を使用して SQL インジェクションチェックを文法ベースの保護のみで構成する

コマンドプロンプトで入力します。

add appfw profile <profile-name> –SQLInjectionAction <action-name> -SQLInjectionGrammar ON –SQLInjectionType None
<!--NeedCopy-->

例:

add appfw profile p1 –SQLInjectionAction block – SQLInjectionGrammar ON –SQLInjectionType None

CLI を使用して SQL 文法ベースの保護のための緩和ルールをバインドする

アプリケーションでペイロード内の特定の「ELEMENT」または「ATTRIBUTE」 のSQLインジェクションチェックをバイパスする必要がある場合は、緩和ルールを設定する必要があります。

注:

ValueType「キーワード」を含む緩和ルールは、アプライアンスがSQL文法を使用して検出を実行する場合にのみ評価されます。

射出検査緩和SQL ルールコマンドには、次の構文があります。コマンドプロンプトで入力します。

bind appfw profile <name> -SQLInjection <String> [isRegex(REGEX| NOTREGE)] <formActionURL> [-location <location>] [-valueType (Keywor|SpecialString|Wildchar) [<valueExpression>][-isValueRegex (REGEX | NOTREGEX) ]]
<!--NeedCopy-->

例:

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http://10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

CLI を使用して JSON ペイロードの SQL 文法ベースの保護を構成する

JSON ペイロードの SQL 文法ベースの検出を実装するには、Web App Firewall プロファイルで「jsonSQLinjectionGrammer」パラメータを設定する必要があります。デフォルトでは、パラメータは無効になっています。学習以外の既存の SQL インジェクションアクションはすべてサポートされています。アップグレード後に作成された新しいプロファイルは、SQL インジェクション文法をサポートしており、引き続きデフォルトのタイプを「特殊文字またはキーワード」として使用するため、明示的に有効にする必要があります。

コマンドプロンプトで入力します。

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON/OFF
<!--NeedCopy-->

例:

add appfw profile profile1 –type JSON –JSONSQLInjectionAction Block –JSONSQLInjectionGrammar ON

CLI を使用して SQL パターン一致保護と文法ベースの保護を構成します

文法ベースチェックとパターンマッチチェックの両方を有効にした場合、アプライアンスは最初に文法ベースの検出を実行し、アクションタイプをブロックに設定した SQL インジェクション検出がある場合、リクエストはブロックされます(パターンマッチを使用して検出を確認せずに)。

注:

ValueType「キーワード」を持つ緩和ルールは、アプライアンスが SQL 文法を使用して検出を実行する場合にのみ評価されます。

コマンドプロンプトで入力します。

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType <Any action other than ‘None’: SQLSplCharANDKeyword/ SQLSplCharORKeyword/ SQLSplChar/ SQLKeyword>
<!--NeedCopy-->

例:

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType SQLSplChar

CLI を使用して JSON ペイロードの SQL 文法ベースの保護を構成する

コマンドプロンプトで入力します。

add appfw profile <profile-name> -type JSON –JSONSQLInjectionAction <action-name> -JSONSQLInjectionGrammar ON –JSONSQLInjectionType None`\
<!--NeedCopy-->

例:

add appfw profile p1 –type JSON –JSONSQLInjectionAction block – JSONSQLInjectionGrammar ON –JSONSQLInjectionType None

CLI を使用して JSON SQL 文法ベースの保護のための URL ベースの緩和ルールをバインドします

アプリケーションでペイロード内の特定の「ELEMENT」または「ATTRIBUTE」 のJSONコマンドインジェクションインスペクションをバイパスする必要がある場合は、緩和ルールを設定できます。 射出検査緩和JSONルールコマンドには、次の構文があります。コマンドプロンプトで入力します。

bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
<!--NeedCopy-->

例:

bind appfw profile p1 -sqlinjection abc http://10.10.10.10/ bind appfw profile p1 –sqlinjection 'abc[0-9]+' http:// 10.10.10.10/ -isregex regEX bind appfw profile p1 –sqlinjection 'name' http://10.10.10.10/ -valueType Keyword 'selec[a-z]+' -isvalueRegex regEX

GUI を使用して SQL 文法ベースの保護を構成する

GUI 手順を実行して、文法ベースの HTML SQL インジェクション検出を設定します。

  1. ナビゲーションペインで、[ セキュリティ] > [プロファイル] に移動します。
  2. [ プロファイル ] ページで、[ 追加] をクリックします。
  3. Citrix Web App Firewallプロファイルページで 、[ 詳細設定 ]の[ セキュリティチェック]をクリックします。
  4. [ セキュリティチェック ] セクションで、[ HTML SQL インジェクションの設定 ] に移動します。
  5. チェックボックスの近くにある実行可能アイコンをクリックします。
  6. [ アクションの設定 ] をクリックして、[ HMTL SQL インジェクション設定] ページにアクセスします。

    SQL 文法ベースの保護 HTML ペイロードの GUI 設定

  7. [ SQL 文法を使用してチェックする ] チェックボックスをオンにします。
  8. [OK] をクリックします。

GUI を使用して JSON ペイロードの SQL 文法ベースの保護を構成する

GUI 手順を実行して、文法ベースの JSON SQL インジェクション検出を設定します。

  1. ナビゲーションペインで、[ セキュリティ] > [プロファイル] に移動します。
  2. [ プロファイル ] ページで、[ 追加] をクリックします。
  3. Citrix Web App Firewallプロファイルページで 、[ 詳細設定 ]の[ セキュリティチェック]をクリックします。
  4. [セキュリティーチェック] セクションで、[JSON SQL インジェクション設定] に移動します。
  5. チェックボックスの近くにある実行可能アイコンをクリックします。
  6. [アクション設定]をクリックして、[JSON SQL インジェクション設定] ページにアクセスします。
  7. [ SQL 文法を使用してチェックする ] チェックボックスをオンにします。
  8. [OK] をクリックします。

    SQL 文法ベースの保護 JSON ペイロードの GUI 設定