目次

SQLインジェクション

SQLインジェクションは、データ駆動型アプリケーションを攻撃する方法で、攻撃者は入力フィールドにSQL文の一部を含めます。新規に生成された不正なSQLコマンドがWebサイトからデータベースに渡され、実行されます。このコマンドによって、攻撃者はデータベース内の情報の読み取り、追加、削除、または変更ができます。Application Security は、一般的なSQLインジェクション技術をブロックすることでSQLインジェクションから保護します。

SQL Injectionポリシーを設定する

  1. グループを選択します。
  2. 左側のペインのメニューで、グループポリシーアイコンをクリックします。
  3. SQL injection が有効になっていることを確認します。
  4. 状態を Reportに設定します。これにより、要求をブロックせずにイベントがトリガされます。これにより、アプリケーションを実行して、SQL Injectionイベントをトリガする予期される動作を確認できます。
  5. ページの右側で、ポリシーの設定アイコンをクリックします。
  6. SQLインジェクションから保護するには、次の設定をオンにする必要があります。

    • Always False: _AND 1=0_など、常にfalseであるSQLのwhere句の条件を検出します。
    • Always True: _OR 1=1_など、常にtrueであるSQL where句の条件を検出します。
    • Bad Function:SQLインジェクション攻撃の一部として頻繁に悪用されるSQL関数( sleep() 、_load_file()_など)を検出します。
    • HTTP Params:SQL文にそのままコピーされ、文字列または数値に安全に含まれていないHTTP GETまたはPOSTパラメータを検出します。
    • Stacking Queries:1回のRDBMS呼び出しで複数のSQLクエリをスタックしようとする試みを検出します。
    • Syntax Error:SQL構文エラーを検出します。
    • Trailing Comment:SQL文の最後にコメントが挿入されたことを検出します。
    • Unions Set:SQLインジェクション攻撃で頻繁に悪用されるSQL SELECT文UNIONを検出します。

      SQL Injection ポリシー

  7. [ Save Changes ]を選択してウィンドウを閉じます。

    初期設定では、HTTP Paramsアルゴリズムのみが有効になっています。その他のアルゴリズムは必要に応じて有効にできます。このアルゴリズムでは、SQL文に異常がないか分析されます。SQL文の分析時には、特定のデータベースの方言が使用されます。方言データベースが不明の場合は、初期設定の方言が使用されます。初期設定の方言はpostgresです。方言が不明なために初期設定の方言が使用されている場合、不正な機能や構文エラーなどの特定のアルゴリズムで誤検出が生成されることがあります。現在サポートされている方言は、db2、mssql、mysql、oracle、postgres、sybaseです。

  8. アプリケーションに移動して、処理するように設計されたさまざまなシナリオで使用します。

  9. Application Security ダッシュボードの Events画面 で SQL Injection イベントを確認します。トリガされた場合は、「SQL Injectionイベントの管理」の手順に従います。
  10. ポリシーの設定に問題がなく、予期した動作によってイベントがトリガされなくなった場合は、 Your Group > Policies > SQL injectionに移動します。
  11. SQL Injectionの右側で、状態を Mitigateに設定します。ルールが実行されると、試行がブロックされ、 SQL Injection イベントがダッシュボードに表示されます。

SQL Injectionイベント

SQL Injectionイベントは、ダッシュボードの Events または Filter by Group > Your Groupに表示されます。

すべてのイベントには、そのイベントに関する一般的な情報を示す Request Details パネルがあります。詳細については、「 イベントの管理」を参照してください。

SQL Injection Details に、次の情報が表示されます。

  • Trigger: SQL Injection イベントをトリガしたルール。
  • Dialect:使用しているSQL言語
  • Supported:そのSQL方言がサポートされているかどうか。サポートされていない方言では、SQL構文および文の検証の品質が低下する場合があります。
  • SQL Statement:イベントをトリガしたSQL文。

    スクリーンショット

Triggered Policy Details は、トリガーされたポリシールールとそのルールのプロパティに関する詳細情報です。

スクリーンショット

SQL Injectionイベントの管理

Application Security がSQL Injectionイベントをレポートしている場合:

  • [イベントの詳細]パネルの右上隅で、[ View Stack ]を選択して、コード内で攻撃が利用された場所を確認します。 SQL Injection 攻撃が今後利用されないようにコードを変更してください。
  • アプリケーションの予期される動作によってイベントがトリガされ、コードを変更せずにその動作を許可する場合は、[ Click to Manage Policy ]を選択します。[ Alert ]セクションで、どのポリシールールがトリガされたかを確認できます。アプリケーションでこの動作を許可する場合は、ルールを OFFにします。

たとえば、アプリケーションがSQLクエリを作成した方法でStacking Queriesイベントがトリガーされた場合は、ペイロードの詳細に基づいてアプリケーションのコードを変更するか、 Click to Manage Policy に移動し、 Disable Stacking_Queriesを選択します。

スクリーンショット