JSON コマンドインジェクション保護
JSON コマンドインジェクションチェックは、受信した JSON トラフィックを調べて、システムセキュリティを侵害したり、システムを変更したりする不正なコマンドがないか調べます。トラフィックを調べる際に、悪意のあるコマンドが検出されると、アプライアンスは要求をブロックするか、設定されたアクションを実行します。
コマンドインジェクション攻撃では、攻撃者はNetScalerオペレーティングシステムまたはバックエンドサーバーで不正なコマンドを実行しようとします。これを実現するために、攻撃者は脆弱なアプリケーションを使用してオペレーティングシステムコマンドを注入します。アプライアンスがセキュリティチェックを行わずに要求を転送するだけの場合、バックエンドアプリケーションはインジェクション攻撃に対して脆弱です。したがって、NetScalerアプライアンスが安全でないデータをブロックしてWebアプリケーションを保護できるように、セキュリティチェックを構成することが非常に重要です。
コマンドインジェクション保護のしくみ
- 受信した JSON リクエストに対して、WAF はトラフィックにキーワードや特殊文字がないか調べます。JSON リクエストに、拒否されたキーワードまたは特殊文字のいずれにも一致するパターンがない場合、リクエストは許可されます。それ以外の場合、要求は設定されたアクションに基づいてブロック、ドロップ、またはリダイレクトされます。
- リストからキーワードまたは特殊文字を除外する場合は、特定の条件下でセキュリティチェックをバイパスする緩和ルールを作成できます。
- ロギングを有効にすると、ログメッセージを生成できます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとしたことを示している可能性があります。
- また、統計機能を有効にして、違反やログに関する統計データを収集することもできます。stats カウンタの予期しない急増は、アプリケーションが攻撃を受けていることを示している可能性があります。正当な要求がブロックされた場合は、新しい緩和ルールを構成する必要があるか、既存の緩和ルールを変更する必要があるかを再確認するために、構成を再確認する必要があります。
コマンドインジェクションチェックで拒否されたキーワードと特殊文字
JSON コマンドインジェクション攻撃を検出してブロックするために、アプライアンスではデフォルトのシグニチャファイルに一連のパターン(キーワードと特殊文字)が定義されています。コマンドインジェクションの検出中にブロックされるキーワードの一覧を次に示します。
<commandinjection>
<keyword type="LITERAL" builtin="ON">7z</keyword>
<keyword type="LITERAL" builtin="ON">7za</keyword>
<keyword type="LITERAL" builtin="ON">7zr</keyword>
…
</commandinjection>
<!--NeedCopy-->
シグネチャファイルに定義されている特殊文字は次のとおりです。
| ; & $ > < ' \ ! >> #
注:
キーワードとパターンのリストは /netscaler/default_signatures.xml ファイルにあります。
CLI を使用した JSON コマンドインジェクションチェックの設定
set appfw profileコマンドを使用するか、appfw profileコマンドを追加して JSON コマンドインジェクション設定を構成できます。 ブロック、ログ、統計の各アクションを有効にできます。また、ペイロードで検出するキーワードや文字列などのコマンドインジェクションタイプも設定する必要があります。
コマンドプロンプトで入力します:
set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]
注:
デフォルトでは、コマンドインジェクションアクションは Block、 Log、 Statsに設定されています。また、デフォルトのコマンドインジェクションタイプは
CmdSplCharANDKeyWordとして設定されています。アップグレード後、既存の Web アプリファイアウォールプロファイルのアクションは [ なし] に設定されます。
例:
set appfw profile profile1 -JSONCMDInjectionAction block -JSONCMDInjectionType CmdSplChar
ここで、使用できる JSON コマンドインジェクションアクションは次のとおりです。
None-コマンドインジェクション保護を無効にします。 Log:セキュリティー検査のコマンドインジェクション違反をログに記録します。 Block-コマンドインジェクションセキュリティー検査に違反するトラフィックをブロックします。 Stats-コマンドインジェクションのセキュリティ違反に関する統計を生成します。
ここで、使用可能な JSON コマンドインジェクションタイプは次のとおりです。
Cmd SplChar -特殊文字をチェックする
CmdKeyWord -コマンドインジェクションをチェックするキーワード
CmdSplCharANDKeyWord -これはデフォルトのアクションです。アクションは特殊文字とコマンドインジェクションをチェックします。キーワードとブロックは、両方が存在する場合に限ります。
CmdSplCharORKeyWord -特殊文字とコマンドインジェクションキーワードとブロックのいずれかが見つかった場合にチェックします。
JSON コマンドインジェクション保護チェックのための緩和ルールの設定
アプリケーションでペイロード内の特定の ELEMENT または ATTRIBUTE に対する JSON コマンドインジェクションインスペクションをバイパスする必要がある場合は、緩和ルールを設定できます。
JSON コマンドのインジェクションインスペクション緩和規則の構文は次のとおりです。
bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
ヘッダーの正規表現の緩和ルールの例
bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/hello.html
一方、以下では 1.1.1.1 でホストされているすべての URL からのリクエストが緩和されます。
bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/*”
リラクゼーションを削除するには、’unbind’ を使います。
unbind appfw profile abc_json -jsoncmDURL “ http://1.1.1.1/*”
GUI を使用して JSON コマンドインジェクションチェックを設定する
JSON コマンドインジェクションチェックを設定するには、次の手順を実行します。
- [ セキュリティ]> Citrix Web App Firewall とプロファイル]に移動します。
- [ プロファイル] ページでプロファイルを選択し 、[ 編集] をクリックします。
- [Citrix Web App Firewall プロファイル ]ページで、 [詳細設定] セクションに移動し、[ セキュリティチェック]をクリックします。
- [ セキュリティチェック ] セクションで、[ JSON コマンドインジェクション ] を選択し、[ アクション]の設定をクリックします。
-
[ JSON コマンドインジェクションの設定] ページで、次のパラメータを設定します。
- アクション。JSON コマンドインジェクションのセキュリティチェックに対して実行するアクションを 1 つ以上選択します。
- リクエストに含まれるものをチェックしてください。コマンドインジェクションパターンを選択して、受信リクエストにパターンがあるかどうかを確認します。
- [OK] をクリックします。
コマンドインジェクショントラフィックおよび違反統計情報の表示
Citrix Web App Firewall 統計ページには 、セキュリティトラフィックとセキュリティ違反の詳細が表形式またはグラフ形式で表示されます。
コマンドインターフェイスを使用してセキュリティ統計情報を表示するには。
コマンドプロンプトで入力します:
stat appfw profile profile1
| Appfw プロファイルのトラフィック統計 | レート (/s) | 合計 |
|---|---|---|
| リクエスト | 0 | 0 |
| 要求バイト数 | 0 | 0 |
| レスポンス | 0 | 0 |
| 送信バイト数 | 0 | 0 |
| 中止する | 0 | 0 |
| リダイレクト | 0 | 0 |
| 長期平均応答時間 (ミリ秒) | – | 0 |
| 最近の平均応答時間 (ミリ秒) | – | 0 |
| HTML/XML/JSON 違反の統計情報 | レート (/s) | 合計 |
|---|---|---|
| 開始URL | 0 | 0 |
| URL を拒否する | 0 | 0 |
| リファラーヘッダー | 0 | 0 |
| バッファオーバーフロー | 0 | 0 |
| Cookie の整合性 | 0 | 0 |
| Cookie ハイジャック | 0 | 0 |
| CSRF フォームタグ | 0 | 0 |
| HTML クロスサイトスクリプティング | 0 | 0 |
| HTML SQL インジェクション | 0 | 0 |
| フィールド形式 | 0 | 0 |
| フィールドの一貫性 | 0 | 0 |
| クレジットカード | 0 | 0 |
| セーフオブジェクト | 0 | 0 |
| シグネチャ違反 | 0 | 0 |
| コンテンツの種類 | 0 | 0 |
| JSON サービス拒否 | 0 | 0 |
| JSON SQLインジェクション | 0 | 0 |
| JSON クロスサイトスクリプティング | 0 | 0 |
| ファイルアップロードの種類 | 0 | 0 |
| コンテンツタイプ XML ペイロードを推測 | 0 | 0 |
| HTML CMD インジェクション | 0 | 0 |
| XML 形式 | 0 | 0 |
| XML サービス拒否 (XDoS) | 0 | 0 |
| XML メッセージ検証 | 0 | 0 |
| Web サービスの相互運用性 | 0 | 0 |
| XML SQL インジェクション | 0 | 0 |
| XML クロスサイトスクリプティング | 0 | 0 |
| XML 添付ファイル | 0 | 0 |
| SOAP フォールト違反 | 0 | 0 |
| XML ジェネリック違反 | 0 | 0 |
| 違反総数 | 0 | 0 |
| HTML/XML/JSON ログ統計 | レート (/s) | 合計 |
|---|---|---|
| URL ログの開始 | 0 | 0 |
| URL ログの拒否 | 0 | 0 |
| リファラーヘッダーログ | 0 | 0 |
| バッファオーバーフローログ | 0 | 0 |
| Cookie 整合性ログ | 0 | 0 |
| Cookie ハイジャックのログ | 0 | 0 |
| タグログからの CSRF | 0 | 0 |
| HTML クロスサイトスクリプティングログ | 0 | 0 |
| HTML クロスサイトスクリプティング変換ログ | 0 | 0 |
| HTML SQL インジェクションログ | 0 | 0 |
| HTML SQL 変換ログ | 0 | 0 |
| フィールド形式ログ | 0 | 0 |
| フィールド整合性ログ | 0 | 0 |
| クレジットカード | 0 | 0 |
| クレジットカード変換ログ | 0 | 0 |
| セーフオブジェクトログ | 0 | 0 |
| シグネチャログ | 0 | 0 |
| コンテンツタイプログ | 0 | 0 |
| JSON サービス拒否ログ | 0 | 0 |
| JSON SQLインジェクションログ | 0 | 0 |
| JSON クロスサイトスクリプティングログ | 0 | 0 |
| ファイルアップロードタイプログ | 0 | 0 |
| コンテンツタイプ XML ペイロードを推測 L | 0 | 0 |
| JSONCMD インジェクション | 0 | 0 |
| HTML コマンドインジェクションログ | 0 | 0 |
| XML 形式ログ | 0 | 0 |
| XML サービス拒否 (XDoS) ログ | 0 | 0 |
| XML メッセージ検証ログ | 0 | 0 |
| WSI ログ | 0 | 0 |
| XML SQL インジェクションログ | 0 | 0 |
| XML クロスサイトスクリプティングログ | 0 | 0 |
| XML 添付ファイルログ | 0 | 0 |
| SOAP フォールトログ | 0 | 0 |
| XML 汎用ログ | 0 | 0 |
| ログメッセージの総数 | 0 | 0 |
サーバエラーレスポンス統計レート (/s) | 合計 | |—|–|–| HTTP クライアントエラー (4xx Resp) | 0 | 0| HTTP サーバエラー (5xx Resp) | 0 |
| HTML/XML/JSON ログ統計 | レート (/s) | 合計 |
|---|---|---|
| JSON コマンド注入ログ | 0 | 0 |
| XML 形式のログ | 0 | 0 |
NetScaler GUIを使用したJSONコマンドインジェクションの統計情報の表示
コマンドインジェクションの統計情報を表示するには、次の手順を実行します:
- [ セキュリティ] > [Citrix Web App Firewall] > [プロファイル] に移動します。
- 詳細ペインで Web App Firewall プロファイルを選択し、[ 統計] をクリックします。
- Citrix Web App Firewall統計ページには 、JSONコマンドインジェクショントラフィックと違反の詳細が表示されます。
- 表形式ビューを選択するか 、 グラフィカルビューに切り替えて 、データを表形式またはグラフィカル形式で表示できます。
JSON コマンドのインジェクション

JSON コマンド注入違反統計
