SQL インジェクション

high Web App Scanning プラグイン ID 98115

概要

SQL インジェクション

説明

今日の Web アプリケーションの動的コンテンツの要件により、Web アプリケーション (または他のプログラム) によって呼び出されて処理されるデータを保存するために、データベースバックエンドに依存していることが少なくありませんます。Web アプリケーションは、構造化照会言語 (SQL) クエリを使用して、データベースからデータを取得します。

多くの開発者の要求に応えるために、データベースサーバー (MSSQL、MySQL、Oracle など) には、データベースの拡張コントロールとホストオペレーティングシステム自体との相互作用を可能にする追加のビルトイン機能があります。

SQL インジェクションは、事前のサニタイズなしで、クライアントのリクエストから発信された値が SQL クエリ内で使用される場合に発生します。これにより、サイバー攻撃者が任意の SQL コードを実行してデータを盗んだり、データベースサーバーの追加機能を使用してさらに多くのサーバーコンポーネントを制御したりする可能性があります。

SQL インジェクションの悪用に成功すると、組織にとって打撃となる場合があるため、これは最も一般的に悪用される Web アプリケーションの脆弱性の 1 つです。

スキャナーがデータベース関連のエラーでサーバーをリクエストに応答させることができたため、このインジェクションが検出されました。

ソリューション

完全なアプリケーション機能を維持しながら SQL インジェクション攻撃を防ぐ唯一の実証済みの方法は、パラメーター化されたクエリ (プリペアドステートメントとも呼ばれます) を使用することです。データベースにクエリを行うこの方法を利用する場合、クライアントから提供された値は、SQL クエリの一部としてではなく、文字列値として処理されます。
さらに、パラメーター化されたクエリを利用するとき、データベースエンジンは自動的にチェックを行い、使用されている文字列が列の文字列と一致することを確認します。たとえば、データベース列が整数を含むように構成されている場合、データベースエンジンはユーザー指定の入力が整数であることをチェックします。

参考資料

http://en.wikipedia.org/wiki/SQL_injection

http://projects.webappsec.org/w/page/13246963/SQL%20Injection

http://unixwiz.net/techtips/sql-injection.html

http://www.securiteam.com/securityreviews/5DP0N1P76E.html

http://www.w3schools.com/sql/sql_injection.asp

https://www.owasp.org/index.php/SQL_Injection

プラグインの詳細

深刻度: High

ID: 98115

タイプ: remote

ファミリー: Injection

公開日: 2017/3/31

更新日: 2024/2/2

スキャン テンプレート: api, full, pci, scan

リスク情報

VPR

リスクファクター: Medium

スコア: 6.2

CVSS v2

リスクファクター: High

基本値: 9

ベクトル: CVSS2#AV:N/AC:L/Au:N/C:C/I:P/A:P

CVSS スコアのソース: Tenable

CVSS v3

リスクファクター: High

基本値: 8.6

ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L

CVSS スコアのソース: Tenable

参照情報

CWE: 89

OWASP: 2010-A1, 2013-A1, 2017-A1, 2021-A3

WASC: SQL Injection

CAPEC: 108, 109, 110, 470, 66, 7

DISA STIG: APSC-DV-002540

HIPAA: 164.306(a)(1), 164.306(a)(2)

ISO: 27001-A.14.2.5

NIST: sp800_53-SI-10

OWASP API: 2019-API8

OWASP ASVS: 4.0.2-5.3.4

PCI-DSS: 3.2-6.5.1