SQLインジェクション
SQLインジェクションは、データ駆動型アプリケーションを攻撃する方法で、攻撃者は入力フィールドにSQL文の一部を含めます。新規に生成された不正なSQLコマンドがWebサイトからデータベースに渡され、実行されます。このコマンドによって、攻撃者はデータベース内の情報の読み取り、追加、削除、または変更ができます。Application Security は、一般的なSQLインジェクション技術をブロックすることでSQLインジェクションから保護します。
SQL Injectionポリシーを設定する
- グループを選択します。
- 左側のペインのメニューで、をクリックします。
- SQL injection が有効になっていることを確認します。
- 状態を Reportに設定します。これにより、要求をブロックせずにイベントがトリガされます。これにより、アプリケーションを実行して、SQL Injectionイベントをトリガする予期される動作を確認できます。
- ページの右側で、をクリックします。
-
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を検出します。
-
[ Save Changes ]を選択してウィンドウを閉じます。
初期設定では、HTTP Paramsアルゴリズムのみが有効になっています。その他のアルゴリズムは必要に応じて有効にできます。このアルゴリズムでは、SQL文に異常がないか分析されます。SQL文の分析時には、特定のデータベースの方言が使用されます。方言データベースが不明の場合は、初期設定の方言が使用されます。初期設定の方言はpostgresです。方言が不明なために初期設定の方言が使用されている場合、不正な機能や構文エラーなどの特定のアルゴリズムで誤検出が生成されることがあります。現在サポートされている方言は、db2、mssql、mysql、oracle、postgres、sybaseです。
-
アプリケーションに移動して、処理するように設計されたさまざまなシナリオで使用します。
- Application Security ダッシュボードの Events画面 で SQL Injection イベントを確認します。トリガされた場合は、「SQL Injectionイベントの管理」の手順に従います。
- ポリシーの設定に問題がなく、予期した動作によってイベントがトリガされなくなった場合は、 Your Group > Policies > SQL injectionに移動します。
- 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を選択します。