ADC

HTML コマンドインジェクション保護チェック

HTML コマンドインジェクションチェックは、着信トラフィックにシステムセキュリティを壊したり、システムを変更したりする不正なコマンドがあるかどうかを調べます。検出されたトラフィックに悪意のあるコマンドが含まれている場合、アプライアンスは要求をブロックするか、設定されたアクションを実行します。

NetScaler Web App Firewallプロファイルが強化され、コマンドインジェクション攻撃に対する新しいセキュリティチェックが追加されました。コマンドインジェクションセキュリティチェックでトラフィックが検査され、悪意のあるコマンドが検出されると、アプライアンスは要求をブロックするか、設定されたアクションを実行します。

コマンドインジェクション攻撃では、攻撃者はNetScalerオペレーティングシステム上で不正なコマンドを実行することを目的としています。これを実現するために、攻撃者は脆弱なアプリケーションを使用してオペレーティングシステムコマンドを注入します。NetScalerアプライアンスは、アプリケーションが安全でないデータ(フォーム、Cookie、またはヘッダー)をシステムシェルに渡すと、インジェクション攻撃に対して脆弱になります。

コマンドインジェクション保護のしくみ

  1. 受信リクエストの場合、WAF はトラフィックにキーワードまたは特殊文字がないか調べます。受信リクエストに、拒否されたキーワードや特殊文字のいずれにも一致するパターンがない場合、リクエストは許可されます。それ以外の場合、要求は設定されたアクションに基づいてブロック、ドロップ、またはリダイレクトされます。

  2. キーワードや特殊文字をリストから除外したい場合は、緩和ルールを適用して特定の条件下でセキュリティチェックをバイパスできます。
  3. ロギングを有効にすると、ログメッセージを生成できます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとしたことを示している可能性があります。
  4. また、統計機能を有効にして、違反やログに関する統計データを収集することもできます。stats カウンタの予期しない急増は、アプリケーションが攻撃を受けていることを示している可能性があります。正当な要求がブロックされた場合は、新しい緩和ルールを構成する必要があるか、既存の緩和ルールを変更する必要があるかを再確認するために、構成を再確認する必要があります。

コマンドインジェクションチェックで拒否されたキーワードと特殊文字

コマンドインジェクション攻撃を検出してブロックするために、アプライアンスにはデフォルトのシグネチャファイルに一連のパターン(キーワードと特殊文字)が定義されています。コマンドインジェクションの検出中にブロックされるキーワードの一覧を次に示します。

    <commandinjection>
      <keyword type="LITERAL" builtin="ON">7z</keyword>
      <keyword type="LITERAL" builtin="ON">7za</keyword>
      <keyword type="LITERAL" builtin="ON">7zr</keyword>
…
</commandinjection>
<!--NeedCopy-->

シグネチャファイルに定義されている特殊文字は次のとおりです。 | ; & $ > < ' \ ! >> #

CLI によるコマンドインジェクションチェックの設定

コマンドラインインターフェイスでは、set the profile コマンドまたは add the profile コマンドのいずれかを使用してコマンドインジェクション設定を構成できます。ブロック、ログ、統計の各アクションを有効にできます。また、ペイロードで検出したいキーワードと文字列を設定する必要があります。

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

set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]

注:

デフォルトでは、コマンドインジェクションアクションは「なし」に設定されています。また、デフォルトのコマンドインジェクションタイプはCmdSplCharANDKeyWordとして設定されています。

例:

set appfw profile profile1 -cmdInjectionAction block -CMDInjectionType CmdSplChar

ここで、使用可能なコマンドインジェクションアクションは次のとおりです。

  • None-コマンドインジェクション保護を無効にします。
  • Log:セキュリティー検査のコマンドインジェクション違反をログに記録します。
  • Block-コマンドインジェクションセキュリティー検査に違反するトラフィックをブロックします。
  • Stats-コマンドインジェクションのセキュリティ違反に関する統計を生成します。

ここで、使用可能なコマンドインジェクションタイプは次のとおりです。

  • SplCharコマンドです。特殊文字をチェックします
  • コマンドキーワード。コマンドインジェクションキーワードをチェック
  • CmdSplCharANDKeyWord. 特殊文字とコマンドインジェクションをチェックします。キーワードとブロックは、両方が存在する場合に限ります。
  • CmdSplCharORKeyWord. 特殊文字とコマンドインジェクションのキーワードとブロックのいずれかが見つかった場合はチェックします。

コマンドインジェクション保護チェックの緩和ルールの設定

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

コマンドインジェクションインスペクション緩和ルールの構文は次のとおりです。

bind appfw profile <profile name> –cmdInjection <string> <URL> -isregex <REGEX/NOTREGEX>

ヘッダーの正規表現の緩和ルールの例

bind appfw profile sample -CMDInjection hdr "http://10.10.10.10/" -location heaDER -valueType Keyword '[a-z]+grep' -isvalueRegex REGEX

その結果、インジェクションはコマンドインジェクションチェックを免除し、「grep」のバリアントを含むヘッダーhdrを許可します。

クッキー内の正規表現としてvalueTypeを持つリラクゼーションルールの例

bind appfw profile sample -CMDInjection ck_login "http://10.10.10.10/" -location cookie -valueType Keyword 'pkg[a-z]+' -isvalueRegex REGEX

NetScaler GUIを使用したコマンドインジェクションチェックの設定

コマンドインジェクションチェックを設定するには、次の手順を実行します。

  1. [ セキュリティ] > [NetScaler Web App Firewall とプロファイル] に移動します。
  2. [ プロファイル] ページでプロファイルを選択し 、[ 編集] をクリックします。
  3. NetScaler Web App Firewallプロファイルページで 、「 詳細設定 」セクションに移動し、「 セキュリティチェック」をクリックします。
  4. セキュリティチェック 」セクションで、「 HTML コマンドインジェクション 」を選択し、「 アクション設定 」をクリックします。
  5. HTML コマンドインジェクション設定ページで 、次のパラメータを設定します。

    1. アクション。コマンドインジェクションセキュリティチェックのために実行するアクションを 1 つ以上選択します。
    2. リクエストに含まれるものをチェックしてください。コマンドインジェクションパターンを選択して、受信リクエストにパターンがあるかどうかを確認します。
  6. [OK] をクリックします。

GUI を使用してコマンドインジェクションパターンを表示またはカスタマイズする

GUI を使用して、 HTML コマンドインジェクションパターンを表示またはカスタマイズできます。

デフォルトのコマンド注入パターンは、デフォルトシグニチャファイルで指定されます。シグニチャオブジェクトをプロファイルにバインドしない場合、デフォルトシグニチャオブジェクトで指定されたデフォルトの HTML コマンド注入パターンが、コマンドインジェクションセキュリティチェック処理のためにプロファイルによって使用されます。デフォルトのシグニチャオブジェクトで指定されている規則とパターンは読み取り専用です。編集や修正はできません。これらのパターンを変更または変更する場合は、デフォルトの SSignatures オブジェクトのコピーを作成して、ユーザー定義署名オブジェクトを作成します。新しいユーザ定義シグニチャオブジェクトのコマンドインジェクションパターンを変更し、これらのカスタマイズされたパターンを使用するトラフィックを処理しているプロファイルでこのシグニチャオブジェクトを使用します。

詳細については、「 署名」を参照してください。

GUI を使用してデフォルトのコマンドインジェクションパターンを表示するには、次の手順を実行します。

  1. [ アプリケーションファイアウォール] > [署名] に移動し、[ *デフォルトシグニチャ] を選択し、[ 編集] をクリックします。

  2. [ CMD/SQL/XSS パターンの管理] をクリックします。 CMD/SQL/XSS パス (読み取り専用) テーブルには、CMD/SQL/XSSインジェクションに関連するパターンが表示されます。

デフォルトのコマンドインジェクションパターンの表示

  1. 行を選択し、[ 要素の管理 ] をクリックして、Web App Firewall コマンドインジェクションチェックで使用される対応するコマンド注入パターン (キーワード、特殊文字列、変換ルール、またはワイルドカード文字) を表示します。

GUI を使用してコマンドインジェクションパターンをカスタマイズするには

ユーザー定義の署名オブジェクトを編集して、 CMD キーワード、特殊文字列、およびワイルドカード文字をカスタマイズできます。新しいエントリを追加したり、既存のエントリを削除したりできます。コマンドインジェクション特殊文字列の変換ルールを変更できます。

  1. [アプリケーションファイアウォール] > [署名] に移動し、ターゲットの [ユーザ定義署名] を選択し、[ 追加] をクリックします。[ CMD/SQL/XSS パターンの管理] をクリックします。
  2. [ CMD/SQL/XSS パスの管理 ] ページで、ターゲットの CMD インジェクション行を選択します。
  3. [ 要素を管理]、[ コマンドインジェクション要素を追加]、または [ 削除 ] をクリックします。

    警告:

    デフォルトのコマンドインジェクション要素を削除または変更する前に、注意が必要です。または、CMD パスを削除して行全体を削除する必要があります。シグニチャルールとコマンドインジェクションセキュリティチェックは、これらの要素に基づいてコマンドインジェクション攻撃を検出し、アプリケーションを保護します。SQL パターンをカスタマイズすると、編集中に必要なパターンが削除されると、アプリケーションがコマンドインジェクション攻撃に対して脆弱になる可能性があります。

コマンドインジェクショントラフィックおよび違反統計情報の表示

NetScaler Web App Firewall Statistics ] ページには、セキュリティトラフィックとセキュリティ違反の詳細が表形式またはグラフ形式で表示されます。

コマンドインターフェイスを使用してセキュリティ統計情報を表示するには。

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

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
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 |

NetScaler GUIを使用したHTMLコマンドインジェクション統計の表示

コマンドインジェクションの統計情報を表示するには、次の手順を実行します:

  1. [ **セキュリティ] > [NetScaler Web App Firewall] **[プロファイル] に移動します。
  2. 詳細ペインで Web App Firewall プロファイルを選択し、[ 統計] をクリックします。
  3. NetScaler Web App Firewall 統計ページには 、HTMLコマンドインジェクショントラフィックと違反の詳細が表示されます。
  4. 表形式ビューを選択するかグラフィカルビューに切り替えて 、データを表形式またはグラフィカル形式で表示できます。