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 文法ベースの HTML 保護を設定します
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 を使用して HTML の 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 を使用して HTML を文法ベースで保護する 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を使用してHTMLを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
GUI を使用して SQL 文法ベースの HTML 保護を設定します
GUI 手順を実行して、文法ベースの HTML SQL インジェクション検出を設定します。
- ナビゲーションペインで、[ セキュリティ] > [プロファイル] に移動します。
- 「 プロファイル 」ページで、「 追加」をクリックします。
- NetScaler Web App Firewall プロファイルページで 、[ 詳細設定 ] の [ セキュリティチェック] をクリックします。
- [ セキュリティチェック ] セクションで、[ HTML SQL インジェクションの設定 ] に移動します。
- チェックボックスの近くにある実行可能アイコンをクリックします。
- [ アクションの設定 ] をクリックして、[ HMTL SQL インジェクション設定] ページにアクセスします。
- [ SQL 文法を使用してチェックする ] チェックボックスをオンにします。
- [OK] をクリックします。
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 を使用して JSON ペイロードの 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 を使用して JSON ペイロードの SQL 文法ベースの保護を設定します
GUI 手順を実行して、文法ベースの JSON SQL インジェクション検出を設定します。
- ナビゲーションペインで、[ セキュリティ] > [プロファイル] に移動します。
- 「 プロファイル 」ページで、「 追加」をクリックします。
- Citrix Web App Firewallプロファイルページで 、「 詳細設定 」の「 セキュリティチェック」をクリックします。
- [ セキュリティチェック ] セクションで、[ JSON SQL インジェクション設定 ] に移動します。
- チェックボックスの近くにある実行可能アイコンをクリックします。
- [アクション設定]をクリックして、[JSON SQL インジェクション設定] ページにアクセスします。
- [ SQL 文法を使用してチェックする ] チェックボックスをオンにします。
- [OK] をクリックします。
この記事の概要
- SQL 文法ベースの保護使用シナリオ
- CLI を使用して SQL 文法ベースの HTML 保護を設定します
- CLI を使用して HTML の SQL パターンマッチ保護と文法ベースの保護を設定します
- CLI を使用して HTML を文法ベースで保護する SQL インジェクションチェックのみを設定する
- CLIを使用してHTMLをSQL文法ベースで保護するための緩和ルールをバインドする
- GUI を使用して SQL 文法ベースの HTML 保護を設定します
- CLI を使用して JSON ペイロードの SQL 文法ベースの保護を設定します
- CLI を使用して JSON ペイロードの SQL パターンマッチ保護と文法ベースの保護を設定します
- CLI を使用して JSON ペイロードの SQL インジェクションチェックのみの文法ベースの保護を設定します
- CLIを使用してJSON ペイロードをSQL文法ベースで保護するためのURLベースの緩和ルールをバインドする
- GUI を使用して JSON ペイロードの SQL 文法ベースの保護を設定します