正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

SQLインジェクション

説明

SQLおよびNoSQLインジェクション攻撃の脆弱性をチェックします。SQLインジェクション攻撃は、クライアントからアプリケーションへの入力データを通じたSQLクエリの挿入または「インジェクション」で構成されます。成功したSQLインジェクションのエクスプロイトは、データベースから機密データを読み取ったり、データベースデータを変更したり(挿入/更新/削除)、データベースで管理操作を実行したり(DBMSのシャットダウンなど)、DBMSファイルシステム上に存在する特定のファイルの内容を回復したり、場合によってはオペレーティングシステムにコマンドを発行したりできます。SQLインジェクション攻撃は、SQLコマンドがあらかじめ定義されたSQLコマンドの実行を目的としてデータプレーンの入力にインジェクションされる一種のインジェクション攻撃です。このチェックは、リクエスト内のパラメータ(パス、クエリ文字列、ヘッダー、JSON、XMLなど)を変更して、SQLまたはNoSQLクエリに構文エラーを作成しようとします。その後、ログと応答が分析され、エラーが発生したかどうかが検出されます。エラーが検出された場合、脆弱性が存在する可能性が高いです。

修復

ソフトウェアは、アップストリームコンポーネントからの外部影響を受ける入力を使用してSQLコマンドのすべてまたは一部を構築しますが、ダウンストリームコンポーネントに送信されたときに意図したSQLコマンドを変更する可能性のある特殊な要素を中和しないか、誤って中和します。

ユーザー制御可能な入力でSQL構文が十分に削除または引用されない場合、生成されたSQLクエリは、それらの入力が通常のユーザーデータではなくSQLとして解釈される原因となる可能性があります。これは、クエリロジックを変更してセキュリティチェックをバイパスするため、またはバックエンドデータベースを変更する追加のステートメントを挿入するために使用でき、システムコマンドの実行が含まれる場合もあります。

SQLインジェクションは、データベース駆動型Webサイトで一般的な問題となっています。この欠陥は容易に検出され、容易に悪用されるため、最小限のユーザーベースを持つサイトまたはソフトウェアパッケージであっても、この種の攻撃を試みられる可能性があります。この欠陥は、SQLが制御プレーンとデータプレーンの間で実質的な区別をしないという事実に依存しています。